Т.е. стандартную разбивку на наличную и безналичную оплату расширить до нал,оплата по платежным картам(безнал),банковским кредитам.В то же время исключить кредит из секции «оплата по безналу».
Почему возникла такая потребность?Все просто,в бэк-офисе так проще сверять Отчет о розничных продажах с Z-отчетом.
Итак.Начну с того,что в качестве ККМ используется принтер чеков ЕНВД под управлением стандратного атоловского драйвера версии 6.17.1
В настройках этого драйвера можно указать произвольное количество типов оплаты(врамках разумного) см.рис. «Настройка ККМ»
Однако выяснилось,что раньше для взаимодействия с ккм использовался стандартный интерфейс(«AddIn.FPrnM45»),потом переделали на стандарт 1с с использованием «AddIn.ATOL_KKM_1C».Так вот,новый стандарт 1с сильно усечен и через новый объект вызовы Fprnm1C.dll с указанием типа оплаты использовать нельзя.В текущих обработках обслуживания ТО для закрытия чека используется функция вида:
Функция ЗакрытьЧек(Объект, СуммаНал, СуммаБезнал) Экспорт
Результат = мНетОшибки;
Если Не Объект.Драйвер.ЗакрытьЧек(Объект.ИДУстройства, СуммаНал, СуммаБезнал) Тогда
Результат = мОшибкаНеизвестно;
Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);
ОтменитьЧек(Объект);
КонецЕсли;
Возврат Результат;
КонецФункции // ЗакрытьЧек()
В ней передается на ККМ всего лишь 2 суммы по налу и безналу.
Решение проблемы:
— Документ.ЧекККМ.Модуль объекта
Изменена Функция ПечатьЧекаККМ(Идентификатор, НомерЧека, НомерСмены,
ОписаниеЧека, СуммаНал, СуммаБезнал, ПризнакВозврата)
//Марат
//Результат = ПолучитьСерверТО().ЗакрытьЧек(Идентификатор, СуммаНал, СуммаБезнал);
Результат = ПолучитьСерверТО().ЗакрытьЧек(Идентификатор, СуммаНал, СуммаБезнал,ПолучитьСуммуОплатыБанковскимКредитом());
— Обработка.ТОСервер.Модуль объекта
Изменена Функция ЗакрытьЧек(Идентификатор, СуммаНал, СуммаБезнал,СуммаКредит=0) Экспорт //Марат добавлен параметр СуммаКредит=0
//марат
//Результат = Обработка.ЗакрытьЧек(Объект, СуммаНал, СуммаБезнал,СуммаБезнал,СуммаКредит);
Результат = Обработка.ЗакрытьЧек(Объект, СуммаНал, Макс(0,СуммаБезнал-СуммаКредит),СуммаКредит);
—Обновлена обработка обслуживания ТО ATOLFiscalPrinters_v2.epf
Заменена Функция ЗакрытьЧек(Объект, СуммаНал, СуммаБезнал,СуммаКредит=0) Экспорт
//марат+
Попытка
ПрогИД = «AddIn.FPrnM45»;
//ПодключитьВнешнююКомпоненту(ПрогИД);
Драйвер = Новый (ПрогИД);
Исключение
Попытка
ПодключитьВнешнююКомпоненту(ПрогИД);
Драйвер = Новый (ПрогИД);
Исключение
Результат = мОшибкаЗагрузкиДрайвера;
ОписаниеОшибки = «Невозможно подключить внешнюю компоненту AddIn.FPrnM45.
| Попытайтесь зарегистрировать драйвер ККМ FprnM1C.dll в системе
| командой regsvr32.»;
Сообщить(ОписаниеОшибки);
Возврат Результат;
КонецПопытки;
КонецПопытки;
Результат = мНетОшибки;
Ответ = 0;
Если СуммаНал > 0 Тогда
Драйвер.Summ = СуммаНал;
Драйвер.TypeClose = 0;
Драйвер.Payment();
Ответ = Драйвер.Результат;
КонецЕсли;
Если Ответ = 0 Тогда
Если СуммаБезнал > 0 Тогда
Драйвер.Summ = СуммаБезнал;
Драйвер.TypeClose = 1;
Драйвер.Payment();
Ответ = Драйвер.Результат;
КонецЕсли;
КонецЕсли;
Если Ответ = 0 Тогда
Если СуммаКредит > 0 Тогда
Драйвер.Summ = СуммаКредит;
Драйвер.TypeClose = 2;
Драйвер.Payment();
Ответ = Драйвер.Результат;
КонецЕсли;
КонецЕсли;
Если Ответ = 0 Тогда
Драйвер.CloseCheck(); // Закрыть чек
КонецЕсли;
Если Ответ = 0 Тогда
//Объект.Удалить(«ЭтоВозврат»);
Иначе
Результат = мОшибкаНеизвестно;
Объект.ОписаниеОшибки = Драйвер.ОписаниеРезультата;
ОтменитьЧек(Объект);
КонецЕсли;
Возврат Результат;
КонецФункции // ЗакрытьЧек()
Буду очень рад если кому то данная статья поможет.
Очень полезная статья!!! спасибо тебе!
Делал систему бонусов для Розницы 1.0, возникла аналогичная проблема: в чеке надо было печатать
не только наличные и безнал, но и оплату бонусами. Стандартная обработка этого не умела, и Ваша
статья мне очень сильно помогла. Спасибо!
Спасибо большое. Статья существенно сократила время на решение проблемы.
Автору однозначно плюс за статью!
Небольшие усовершенствования:
Если используется конфигурация «Розница 8. Магазин одежды и обуви, редакция 1.» или другая отраслевая розница, то процедура закрытия чека там вызывается из фронта, поэтому необходимо еще внести изменения в ОбщийМодуль.ФронтКассира в строку:
Результат = ПолучитьСерверТО().ЗакрытьЧек(Идентификатор, СуммаНаличные, СуммаБезнал);
добавить еще параметр по аналогии с описанием в статье.
Также нужно обратить внимание на строку:
СуммаБезнал = МИН(СуммаДокумента, ТаблицаПоОплатам.Итог(«Сумма»)-СуммаНаличные);
В моем случае таким образом разделяли по секциям Безнал от оплаты подарочными сертификатами, поскольку в стандартном механизме такая оплата проходит по секции безналичной оплаты.
а как реализовать данный механизм в рознице 2.1 с fprint 22k
Есть типы оплат нал,безнал,сертификатом.
Мои бухи захотели, чтобы денежные документы возврата проводились в магазинах, да еще плюс отражались в Z-отчете. Да, это противоречит НК. У нас даже почти до драки дошло. Но вот лень им, и все тут!!!
Поэтому пришлось еще учесть, что необходимо сделать доработки в документах РКО, ПКО (на всякий уж случай), Оплата платежной картой.
Автору за статью спасибо, навел на правильный курс — не пришлось долго сидеть с отладчиком и пошагово проходить операцию за операцией. Третьим видом оплаты, кстати, используем подарочные сертификаты
В случае РОЗНИЦЫ 2.0 и Фискального регистратора АТОЛ . Проблема решается установкой обновления до версии 2.1.2.8 (Может и раньше появилось , но на это версии точно работает). В настройке Торг Оборудования , появиться пункт АТОЛ (Универсальный) кот через него работает нормально , Бензнал идет 2ым видом оплаты, Подарочные сертификаты — Четверным . Все Работает нормально
(9) ToJIuK, Красавец!!! Настоящий программист , предложил решение без единой строчки кода. 😉
(10) ivprovotorov, А смысл изобретать колесо ?! Если давно есть и успешно работает велосипед.
Здравствуйте ! Блин интересная статья, но у немного по другому — никак не могу настроить ФР Aura с драйвером от Atol. Оплаты сертификатом садятся на без нал, в общем и так и так крутил — не смог настроить… версия 1.0.8.1 Розница для Казахстана. Не знаете куда копать ? Заранее спасибо ! Статей много, но везде все не то, что нужно .
(9) ToJIuK, но вот есть один минус который в универсальном драйвере не нашел как поменять. Нету настройки Таймаута у принтера.
Для Штрих-М все на много проще
0 вид оплаты — Наличные
1 вид оплаты — ПЛАТ. КАРТА
2 вид оплаты — Подарочный серт
Плюс надо немного фискалку донастроить.
Показать
(15) Morisato, Куда эту таблицу оплат подставлять не совсем понятно?
Марат Ибрагимов СПАСИБО ОГРОМНОЕ.