Расширение типового функционала работы с ККМ в 1с Розница 1.0 (добавление произвольного количества типов оплаты)

28.02.13

Интеграция - ККМ

У одного клиента,занимающегося розничной торговлей, появилась необходимость разделять продажи по типам оплаты в Z-отчете с бОльшим разнообразием,чем позволяет типовой функционал работы с ТО.
Т.е. стандартную разбивку на наличную и безналичную оплату расширить до нал,оплата по платежным картам(безнал),банковским кредитам.В то же время исключить  кредит из секции «оплата по безналу».
Почему возникла такая потребность?Все просто,в бэк-офисе так проще сверять Отчет о розничных продажах с 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 Тогда

                               //Объект.Удалить("ЭтоВозврат");

                Иначе

                               Результат = мОшибкаНеизвестно;

                               Объект.ОписаниеОшибки = Драйвер.ОписаниеРезультата;

                               ОтменитьЧек(Объект);

                КонецЕсли;

 

                Возврат Результат;

КонецФункции // ЗакрытьЧек()


Буду очень рад если кому то данная статья поможет.

См. также

ККТ-ОНЛАЙН 54-ФЗ: Обработка для работы онлайн касс АТОЛ, ШТРИХ, VIKI PRINT и т.д. МАРКИРОВКА + ЭКВАЙРИНГ + БЕСПЛАТНЫЙ ДЕМО

ККМ Кассовые операции Розничная торговля Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия 1.6 1С:Бухгалтерия автономного учреждения 1С:CRM ПРОФ, КОРП Россия Платные (руб)

Универсальная обработка для обслуживания любых фискальных регистраторов (ККТ), в том числе Веб сервер АТОЛ. Работает в соответствии с 54-ФЗ. (ФФД 1.0, ФФД 1.05, ФФД 1.1). Подключайте любую онлайн кассу к практически любой конфигурации. Нет необходимости обновлять 1С. Можно бесплатно скачать и протестировать. Может работать одновременно с несколькими онлайн-кассами, либо одной с разных рабочих мест. (через RDP, TCP\IP или веб-сервер) Позволяет разделить один чек сразу на несколько ККТ или на несколько систем налогообложения. Можно настроить собственный шаблонов чека. Можно использовать эквайринг там, где он не поддерживается. Работает на LINUX и Windows ЭМУЛЯТОР + ЭКВАЙРИНГ + МАРКИРОВКА + ПОДДЕРЖКА ФФД 1.2

4800 руб.

27.02.2017    763079    4668    9495    

2781

Печать кассовых чеков на одну ККМ с нескольких рабочих мест для 1С:УТ11.х, КА2.х, Розница 2.х, УНФ, ERP 2.х, БП 3, БГУ2

ККМ Кассовые операции Розничная торговля Обмен с ГосИС Бухгалтерский учет Оперативный учет Управляемые формы 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Расширение конфигурации для УТ 11.4, 11.5, КА 2.4, 2.5, Розница 3.0, 2.3 и 2.2, УНФ 1.6, УНФ 3x, ERP 2.4, 2.5, БП 3, БГУ2 (Управляемые формы) позволяет выполнять печать кассовых чеков на одну ККМ 54-ФЗ с нескольких рабочих мест. НИКАКИХ НАСТРОЕК В РАЗРАБОТКЕ - ПОДКЛЮЧИЛ И ПЕЧАТАЙ. Если у вас несколько отделов и одна ККМ - печатайте на одной ККМ! Если у вас две ККМ и одна поломалась - печатайте на одной ККМ, пока ремонтируете другую!

4000 руб.

27.08.2018    115984    981    564    

827

54-ФЗ. Очередь печати для ККМ. Обработки для подключения онлайн-касс к 1С 8 (поддержка Маркировки) + Эмулятор + ФФД 1.2

ККМ Кассовые операции Розничная торговля Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия автономного учреждения Россия Платные (руб)

Обработка осуществляет обслуживание ККТ АТОЛ, Штрих и Меркурий для конфигураций "УТ 10.3", "КА 1.1", "УПП 1.3", "Розница 1.0", "БП 2.0" и других отраслевых решений, построенных на основе указанных выше конфигурациях. Поддерживает возможность параллельно пробития чеков на одной ККМ несколькими пользователями. Поддерживает Веб-сервер Атол. Соответствует требованиям 54-ФЗ. Поддерживает ФФД 1.0, 1.05, 1.1 и 1.2. Разделяет чеки по нескольким СНО. Поддерживает механизмы подключения ККТ по TCP/IP, для работы через RDP или интернет. Поддержка маркировки.

5400 руб.

25.05.2015    316541    1844    3008    

994

Обработка 1С для печати чеков на кассе ККТ АТОЛ.ОНЛАЙН

ККМ Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Печать чеков по документам 1С РеализацияТоваров (РасходнаяНакладная), КорректировкаРеализации, СчетНаОплату, ЗаказКлиента, ЧекККМ, ПоступлениеНаРС. Соответствует требованиям 54-ФЗ. Одна облачная касса может использоваться всеми подразделениями организации, без привязки к рабочим местам. Электронные чеки отправляются на email клиента и всегда доступны в 1С, по требованию можно распечатать. Легкая настройка: после регистрации кассы на сайте АТОЛ.ОНЛАЙН, в обработке необходимо указать логин, пароль и идентификатор группы ККТ (берутся в личном кабинете АТОЛ.ОНЛАЙН). Одну кассу можно использовать с 1С при расчетах с физ. и юр. лицами и для интернет-магазина. HTTPS протокол интеграции API v4 / ФФД 1.05 или API v5 / ФФД 1.2.

21600 руб.

23.08.2022    10551    27    4    

22

Обмен между 1С:Розница и Frontol 6 по организациям (Розница - Фронтол)

ККМ Розничная торговля Платформа 1С v8.3 Оперативный учет 1С:Розница 2 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Обмен между 1С:Розница и Frontol 6 при торговле от нескольких организаций, а также ряд других полезных функций. Данный модуль незаменим для тех, кто ведёт учет по нескольким организациям в 1С:Розница, а на РМК (рабочее место кассира) установлен Frontol, или планируется его установка. Подходит для 1С:Розница 2.3./ 3.0, 1С:УНФ 3.0

1500 руб.

22.03.2019    78202    389    475    

161

UTM Proxy для УТМ ЕГАИС (или как не пропустить дубль алкогольной марки и недостачу на кассе + Контроль МРЦ)

Розничная торговля ККМ Обмен с ГосИС Розничная и сетевая торговля (FMCG) Россия Акцизы Платные (руб)

Что такое УТМ прокси? УТМ прокси - это универсальное программное обеспечение для борьбы с дублями марок алкогольной продукции при розничной продажи. Данное программное обеспечение - это своего рода "прокладка" между кассовым ПО и УТМ ЕГАИС. UTM Proxy работает с любыми кассами, вот некоторые из них: miniPOS, рабочие места кассиров в конфигурациях 1С (в том числе и базовые версии), Фронтол и другие...

2400 руб.

16.11.2016    49293    472    60    

24

Пробитие чека ККМ с разных складов через РМК в УТ 11

Кассовые операции ККМ Платформа 1С v8.3 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Россия Управленческий учет Платные (руб)

Расширение для 1С:Управление торговлей 11.5, которое позволяет пробивать чеки ККМ и списывать товар с разных складов. Склад списание товара можно указывать в табличной части рабочего места кассира (РМК).

5880 руб.

12.04.2023    7889    26    2    

23

Разбитие чека ККМ по группам товаров и пробитие их на разных кассах, подключенных к одному рабочему месту. Расширение для УТ 11.5, УТ 11.4, КА 2.5

Кассовые операции ККМ Платформа 1С v8.3 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Расширение для 1С:Управление торговлей 11.5 и 11.4, которое позволяет из рабочего места кассира разбивать чек ККМ на несколько чеков и пробивать их на разных кассах подключенных к одному РМК. Можно пробивать разные группы товаров по разным организациям на разных кассовых аппаратах.

5880 руб.

22.08.2022    10051    13    15    

17
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Tatiana_IV 08.03.13 19:50 Сейчас в теме
Очень полезная статья!!! спасибо тебе!
2. CnupT 69 17.07.13 09:21 Сейчас в теме
Делал систему бонусов для Розницы 1.0, возникла аналогичная проблема: в чеке надо было печатать
не только наличные и безнал, но и оплату бонусами. Стандартная обработка этого не умела, и Ваша
статья мне очень сильно помогла. Спасибо!
3. Yuris 18 13.12.13 17:12 Сейчас в теме
Спасибо большое. Статья существенно сократила время на решение проблемы.
4. oleg212 03.01.14 00:26 Сейчас в теме
Автору однозначно плюс за статью!
5. kolombo_eburg 78 13.01.14 10:17 Сейчас в теме
Небольшие усовершенствования:
Если используется конфигурация "Розница 8. Магазин одежды и обуви, редакция 1." или другая отраслевая розница, то процедура закрытия чека там вызывается из фронта, поэтому необходимо еще внести изменения в ОбщийМодуль.ФронтКассира в строку:
Результат = ПолучитьСерверТО().ЗакрытьЧек(Идентификатор, СуммаНаличные, СуммаБезнал);
добавить еще параметр по аналогии с описанием в статье.

Также нужно обратить внимание на строку:
СуммаБезнал = МИН(СуммаДокумента, ТаблицаПоОплатам.Итог("Сумма")-СуммаНаличные);


В моем случае таким образом разделяли по секциям Безнал от оплаты подарочными сертификатами, поскольку в стандартном механизме такая оплата проходит по секции безналичной оплаты.
6. ecstazi 26.02.14 15:59 Сейчас в теме
а как реализовать данный механизм в рознице 2.1 с fprint 22k
7. ecstazi 26.02.14 16:00 Сейчас в теме
Есть типы оплат нал,безнал,сертификатом.
8. orehova123 21.03.14 20:43 Сейчас в теме
Мои бухи захотели, чтобы денежные документы возврата проводились в магазинах, да еще плюс отражались в Z-отчете. Да, это противоречит НК. У нас даже почти до драки дошло. Но вот лень им, и все тут!!!
Поэтому пришлось еще учесть, что необходимо сделать доработки в документах РКО, ПКО (на всякий уж случай), Оплата платежной картой.
Автору за статью спасибо, навел на правильный курс - не пришлось долго сидеть с отладчиком и пошагово проходить операцию за операцией. Третьим видом оплаты, кстати, используем подарочные сертификаты
9. ToJIuK 08.12.14 13:55 Сейчас в теме
В случае РОЗНИЦЫ 2.0 и Фискального регистратора АТОЛ . Проблема решается установкой обновления до версии 2.1.2.8 (Может и раньше появилось , но на это версии точно работает). В настройке Торг Оборудования , появиться пункт АТОЛ (Универсальный) кот через него работает нормально , Бензнал идет 2ым видом оплаты, Подарочные сертификаты - Четверным . Все Работает нормально
Yura77; ivprovotorov; +2 Ответить
10. ivprovotorov 41 21.12.14 23:34 Сейчас в теме
(9) ToJIuK, Красавец!!! Настоящий программист , предложил решение без единой строчки кода. ;-)

11. ToJIuK 09.01.15 17:46 Сейчас в теме
(10) ivprovotorov, А смысл изобретать колесо ?! Если давно есть и успешно работает велосипед.
14. bio.ejiki 27.11.15 11:18 Сейчас в теме
(9) ToJIuK, но вот есть один минус который в универсальном драйвере не нашел как поменять. Нету настройки Таймаута у принтера.
12. Amirzhan 10.03.15 16:28 Сейчас в теме
Здравствуйте ! Блин интересная статья, но у немного по другому - никак не могу настроить ФР Aura с драйвером от Atol. Оплаты сертификатом садятся на без нал, в общем и так и так крутил - не смог настроить... версия 1.0.8.1 Розница для Казахстана. Не знаете куда копать ? Заранее спасибо ! Статей много, но везде все не то, что нужно .
13. Amirzhan 13.03.15 20:41 Сейчас в теме
Получилось. Все работает отлично. Но нужен дельный совет. В Рознице есть документ Оплата от покупателя платежной картой в момент проведения документа проблем нет, но в момент нажатия ЧЕК выходит ошибка в 1С что много фактических параметров, а на ФР чек пробивается и сразу аннулируется. В момент когда выходит ошибка, я прохожу в Конфигуратор и попадаю в документ Оплата от покупателя платежной картой модуль документа - дальше ошибка именно где то в этом коде Процедура ОсновныеДействияФормыЧек(Кнопка)

Перем ФР;

Если НомерЧекаККМ <> 0 Тогда
Предупреждение("Чек уже пробит на фискальном регистраторе!");
Возврат;
КонецЕсли;

Если Не Проведен Тогда
Предупреждение("Перед пробитием чека на фискальном регистраторе документ необходимо провести!");
Возврат;
КонецЕсли;

Если Не РаботаСДиалогами.ПроверитьМодифицированностьВФорме(ЭтотОбъект, ЭтаФорма) Тогда
Возврат;
КонецЕсли;

Если Не РаботаСТорговымОборудованием.ПолучитьПроверитьПараметрыДляПробитияЧека(ФР) Тогда
Возврат;
КонецЕсли;

Позиция = Неопределено;
НомерСмены = Неопределено;
ТаблицаПлатежей = Новый ТаблицаЗначений();
ТаблицаПлатежей.Колонки.Добавить("Заголовок");
ТаблицаПлатежей.Колонки.Добавить("Сумма");
ТаблицаПлатежей.Колонки.Добавить("НДС");

Для Каждого Позиция Из РасшифровкаПлатежа Цикл
СтрокаТаблицы = ТаблицаПлатежей.Добавить();
СтрокаТаблицы.Заголовок = "Принято от " + СокрЛП(Контрагент)
+ "
|Основание: " + СокрЛП(ЭтотОбъект);
СтрокаТаблицы.Сумма = Позиция.СуммаПлатежа;
СтрокаТаблицы.НДС = УчетНДСИАкциза.ПолучитьСтавкуНДС(Позиция.СтавкаНДС);
КонецЦикла;

Если ВидОперации = Перечисления.ВидыОперацийОплатаОтПокупателяПлатежнойКартой.ОплатаПокупателя Тогда
Результат = ПолучитьСерверТО().ПечатьЧекаПКО(ФР,
НомерЧекаККМ,
НомерСмены,
ТаблицаПлатежей,
0,
СуммаДокумента);
Иначе
Результат = ПолучитьСерверТО().ПечатьЧекаРКО(ФР,
НомерЧекаККМ,
НомерСмены,
ТаблицаПлатежей,
0,
СуммаДокумента);

КонецЕсли;

Если Не ЗначениеЗаполнено(Результат) Тогда
Оплачено = Истина;
Иначе
ТекстОшибки = ПолучитьСерверТО().ПолучитьТекстОшибкиФРТО(Результат);
Предупреждение(ТекстОшибки);
КонецЕсли;

КонецПроцедуры

Буду рад если подскажите в чем проблема...
15. Morisato 14.01.16 13:03 Сейчас в теме
Для Штрих-М все на много проще
0 вид оплаты - Наличные
1 вид оплаты - ПЛАТ. КАРТА
2 вид оплаты - Подарочный серт

Плюс надо немного фискалку донастроить.

ТаблицаОплат = Новый Массив();
				
				// Наличные
				СтрокаОплаты = Новый СписокЗначений();
				СтрокаОплаты.Добавить(0);
				СтрокаОплаты.Добавить(СуммаНаличнойОплаты());
				СтрокаОплаты.Добавить("Наличная оплата");
				СтрокаОплаты.Добавить("");
				ТаблицаОплат.Добавить(СтрокаОплаты);
				
				// Безналичные
				СтрокаОплаты = Новый СписокЗначений();
				СтрокаОплаты.Добавить(1);
				//СтрокаОплаты.Добавить(СуммаБезналичнойОплаты() + СуммаОплатыПодарочнымиСертификатами());
				СтрокаОплаты.Добавить(СуммаБезналичнойОплаты()); 
				СтрокаОплаты.Добавить("Безналичная оплата");
				СтрокаОплаты.Добавить("");
				ТаблицаОплат.Добавить(СтрокаОплаты);
				
				//{// Подарочный сертификат
				СтрокаОплаты = Новый СписокЗначений();
				СтрокаОплаты.Добавить(2);
				СтрокаОплаты.Добавить(СуммаОплатыПодарочнымиСертификатами()); 
				СтрокаОплаты.Добавить("Подарочный сертификат");
				СтрокаОплаты.Добавить("");
				ТаблицаОплат.Добавить(СтрокаОплаты);
                //}
Показать
16. bajen 1 20.10.16 12:56 Сейчас в теме
(15) Morisato, Куда эту таблицу оплат подставлять не совсем понятно?
17. maksa2005 530 25.02.17 09:46 Сейчас в теме
Марат Ибрагимов СПАСИБО ОГРОМНОЕ.
Оставьте свое сообщение