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

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

                Иначе

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

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

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

                КонецЕсли;

 

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

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


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

См. также

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

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

6000 руб.

27.02.2017    811901    5185    9770    

2939

ККМ Кассовые операции Розничная торговля Системный администратор Программист Платформа 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 или интернет. Поддержка маркировки и разрешительного режима. Поддержка пробития чеков с новыми ставками НДС 5% и НДС 7%.

7900 руб.

25.05.2015    341565    2025    3120    

1063

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

Расширение для типовых конфигураций для Управляемых форм позволяет выполнять печать кассовых чеков на одну ККМ 54-ФЗ с нескольких рабочих мест. НИКАКИХ НАСТРОЕК В РАЗРАБОТКЕ - ПОДКЛЮЧИЛ И ПЕЧАТАЙ. Если у вас несколько отделов и одна ККМ - печатайте на одной ККМ! Если у вас две ККМ и одна поломалась - печатайте на одной ККМ, пока ремонтируете другую!

9500 руб.

27.08.2018    125384    666    603    

897

ККМ Кассовые операции Розничная торговля Системный администратор Программист Пользователь Платформа 1С v8.3 1C:Бухгалтерия Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Россия Платные (руб)

«Сервер ККМ» позволяет приложениям работать с фискальными регистраторами по локальной сети или интернет, организовать печать на одном ККМ с нескольких рабочих мест с поддержкой очереди печати. Поддерживаются ВСЕ ревизии требований фирмы 1С к разработке драйверов ККТ от 2.2 до 4.4. В поставке есть драйверы для операционных систем Linux, Android, MacOs и Windows. Поддержка драйверов Атол, Штрих и 1С-совместимых драйверов для ККТ ревизии 4.4. Поддержка 54-ФЗ и разрешительного режима, ФФД 1.05,1.1,1.2. Подключается к 1С Торговля и склад 7.7, 1С:УТ 10/11, 1С:УНФ 1.6/3, 1С:Розница 1/2/3, 1С:БП 2/3, 1С КА 1/2., 1С:ERP, УПП. Ускоряет печать из терминального сеанса Windows. Работает с разрешительным режимом даже из старых конфигураций. Предоставляет REST API для печати через веб-сервис. Поддерживаются новые ставки НДС 5% и 7%.

5000 руб.

02.09.2016    139535    180    194    

196

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

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

7900 руб.

22.03.2019    86682    559    479    

194

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

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

5880 руб.

12.04.2023    10741    59    3    

48

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

Можно ли в 1С:Розница подключить несколько касс на одно рабочее место? Теперь это возможно! Решение позволяет подключать неограниченное количество касс к одному рабочему месту и выбирать, на какой кассе пробивать чек в зависимости от необходимости. Публикация состоит из двух файлов: одно из них — расширение конфигурации для ПРОФ-версии, второе — внешняя обработка РМК для базовой версии.

4560 руб.

07.08.2018    77875    509    357    

367

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

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

6000 руб.

31.07.2017    174118    600    609    

209
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Tatiana_IV 08.03.13 19:50 Сейчас в теме
Очень полезная статья!!! спасибо тебе!
2. CnupT 70 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 79 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 55 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 556 25.02.17 09:46 Сейчас в теме
Марат Ибрагимов СПАСИБО ОГРОМНОЕ.
Оставьте свое сообщение