Расширение типового функционала работы с ККМ в 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

6000 руб.

27.02.2017    766427    4694    9501    

2792

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    317989    1851    3012    

998

Печать кассовых чеков на одну ККМ с нескольких рабочих мест для 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    116928    993    565    

835

Обработка 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    10731    27    4    

24

Обмен между 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    79032    406    476    

167

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

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

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

5880 руб.

22.08.2022    10126    15    15    

19

Управление ККМ Атол и Штрих нового поколения (он-лайн ККТ под 54-ФЗ) с помощью текстового ini.файла для 1с77, 1с8Х любых конфигураций

Кассовые операции ККМ Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Программа для управления ККМ Атол и Штрих нового поколения (он-лайн ККТ под 54-ФЗ) с помощью текстового файла (ini файла) с изменениями  включена 1 лицензия  Для любых программ, которые умеют работать с текстовыми файлами. Внутри комплекта есть готовые к использованию обработки

4800 руб.

31.07.2017    165363    564    604    

197

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

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

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

5880 руб.

12.04.2023    8036    30    2    

24
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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-отчете. Да, это противоречит НК. У нас даже почти до драки дошло. Но вот лень им, и все тут!!!
Поэтому пришлось еще учесть, что необходимо сделать доработки в документах РКО, ПКО (на всякий уж случай), Оплата платежной картой.
Автору за статью спасибо, навел на правильный курс - не пришлось долго сидеть с отладчиком и пошагово проходить операцию за операцией. Третьим видом оплаты, кстати, используем подарочные сертификаты
RustIG; +1
9. ToJIuK 08.12.14 13:55 Сейчас в теме
В случае РОЗНИЦЫ 2.0 и Фискального регистратора АТОЛ . Проблема решается установкой обновления до версии 2.1.2.8 (Может и раньше появилось , но на это версии точно работает). В настройке Торг Оборудования , появиться пункт АТОЛ (Универсальный) кот через него работает нормально , Бензнал идет 2ым видом оплаты, Подарочные сертификаты - Четверным . Все Работает нормально
Yura77; ivprovotorov; +2
10. ivprovotorov 42 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 533 25.02.17 09:46 Сейчас в теме
Марат Ибрагимов СПАСИБО ОГРОМНОЕ.
+
Оставьте свое сообщение