При необходимости работы с современными онлайн-кассами (ККТ по требованиям 54-ФЗ) на базе конфигурации «1С:Управление торговлей», редакция 11.0, разработчики сталкиваются с серьезным техническим ограничением: типовые механизмы программы создавались под старый порядок применения кассовой техники с блоками ЭКЛЗ. В этой редакции отсутствуют инструменты формирования чеков в форматах фискальных данных (ФФД 1.05, 1.2), механизмы передачи обязательных тегов (признаки предмета и способа расчета, данные маркировки, контактные данные покупателя), а сама подсистема подключаемого оборудования устарела.
Разберем основные варианты решения этой задачи, выясним их плюсы, минусы и особенности практической реализации.
Самый надежный и поддерживаемый вендором путь — это обновление конфигурации до современных редакций (УТ 11.4 или 11.5).
Проанализируем преимущества и сложности данного подхода:
Если полное обновление конфигурации невозможно или экономически нецелесообразно, наиболее прямолинейным решением является разработка внешней обработки или отдельного модуля для взаимодействия с драйвером ККТ в обход стандартной подсистемы торгового оборудования.
Разберем по шагам логику реализации прямого подключения:
Посмотрим на пример базовой структуры вызова COM-объекта драйвера из модуля 1С:
// Создаем объект драйвера ККТ
Попытка
ДрайверККТ = Новый COMОбъект("AddIn.FprnM10");
Исключение
ВызватьИсключение "Не удалось инициализировать драйвер ККТ. Проверьте регистрацию COM-компонента.";
КонецПопытки;
// Настройка подключения к устройству
ДрайверККТ.setParam(ДрайверККТ.LIBFPTR_SETTING_PORT, ДрайверККТ.LIBFPTR_PORT_USB);
ДрайверККТ.open();
Если Не ДрайверККТ.isOpened() Тогда
ВызватьИсключение "Ошибка подключения к кассе: " + ДрайверККТ.errorDescription();
КонецЕсли;
Важный момент: При формировании позиций чека для работы по ФФД 1.05/1.2 необходимо вручную передавать все обязательные реквизиты, считывая их напрямую из реквизитов документов (например, из документа «Чек ККМ» или «Приходный кассовый ордер»).
Современным и гибким подходом является вынос логики взаимодействия с кассой в отдельный локальный веб-сервис (программный фискальный шлюз).
Рассмотрим подробнее принцип работы этой схемы:
HTTPСоединение или COM-объекта WinHttp.WinHttpRequest.5.1.Посмотрим на пример отправки сформированного пакета через встроенный объект HTTPСоединение:
HTTPСоединение = Новый HTTPСоединение("127.0.0.1", 50010);
HTTPЗапрос = Новый HTTPЗапрос("/api/v1/printCheck");
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, "UTF-8", ИспользованиеByteOrderMark.НеИспользовать);
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Если HTTPОтвет.КодСостояния <> 200 Тогда
ВызватьИсключение "Ошибка печати чека через HTTP-сервер: " + HTTPОтвет.ПолучитьТелоКакСтроку();
КонецЕсли;
Этот способ изолирует конфигурацию от проблем разрядности платформы, не требует изменения типовых механизмов и позволяет печатать чеки даже при работе пользователей через Web-клиент или в терминальном окружении.
Еще один вариант — перенос актуальной подсистемы «Библиотека подключаемого оборудования» (БПО) из типовых конфигураций последних версий непосредственно в УТ 11.0.
Проанализируем особенности этого решения:
Справочник.ПодключаемоеОборудование) и регистры сведений, отвечающие за работу с торговым оборудованием.Выясним, какой способ выбрать исходя из условий эксплуатации системы: