Вопрос интеграции торгового оборудования (ТО), особенно в свете требований 54-ФЗ и маркировки «Честный ЗНАК», является критическим для владельцев самописных или сильно кастомизированных конфигураций на платформе 1С 8.3, использующих обычные формы. Разберем основные стратегии решения этой задачи, проанализируем сложности интеграции и выясним причины типичных ошибок, таких как невозможность открытия кассовой смены.
Распространенное заблуждение гласит, что БПО предназначена исключительно для управляемых форм. На самом деле, начиная с версии платформы 8.3, мы можем успешно использовать управляемые формы внутри обычного приложения. Это наиболее правильный путь с точки зрения долгосрочной поддержки, так как фирма «1С» регулярно обновляет БПО под меняющееся законодательство.
Для внедрения БПО выполним следующие шаги:
ПодключаемоеОборудование) и обработки.МенеджерОборудованияКлиент.Если ваша самописка идейно близка к «Управление торговлей 10.3», логично рассмотреть вариант переноса кода именно оттуда. Однако стоит учитывать, что в современных релизах УТ 10.3 блок ТО представляет собой огромный массив кода, тесно завязанный на глобальные переменные и параметры сеанса.
Рассмотрим пример типичной инициализации, которую необходимо реализовать в модуле обычного приложения, чтобы механизмы УТ 10.3 заработали:
Процедура ПриНачалеРаботыСистемы()
// Инициализация глобальных переменных для работы с ТО
глЗначениеПеременной("глРаботаСТорговымОборудованием");
МенеджерОборудования.ОбновитьРабочееМесто();
КонецПроцедуры
Проанализируем ситуацию, когда «не получается открыть смену». Чаще всего это происходит из-за отсутствия инициализации параметров торгового оборудования в текущем сеансе. Если объект МенеджерОборудования не находит настроенное рабочее место, команды печати чека или открытия смены будут игнорироваться без внятных ошибок.
Если вам нужно «быстро прикрутить» только печать чеков на онлайн-кассе, использование тяжелых библиотек может быть избыточным. Самый эффективный способ для программиста в данном случае — работа с драйвером напрямую через COM или Native API. Современные драйверы (например, АТОЛ 10) поддерживают работу через JSON-задания.
Посмотрим на пример кода, который формирует простое задание на открытие смены через объект драйвера:
Драйвер = Новый COMОбъект("AddIn.Fptr10");
Драйвер.Объект.setParam(Драйвер.Объект.LIBFPTR_PARAM_REPORT_TYPE, Драйвер.Объект.LIBFPTR_RT_CLOSE_SHIFT);
// Настройка связи с ККТ
Драйвер.Объект.open();
Если Драйвер.Объект.isOpened() Тогда
// Формируем JSON для чека или команды
Результат = Драйвер.Объект.processJson(ТекстЗаданияJSON);
Драйвер.Объект.close();
КонецЕсли;
Этот метод хорош тем, что вы полностью контролируете передаваемые теги (кассир, ИНН, признаки агента), что критически важно для соблюдения 54-ФЗ.
Разберем основные технические причины, по которым при попытке внедрения кода из типовых конфигураций возникают проблемы с открытием смены:
Существуют готовые решения (внешние компоненты), которые позволяют абстрагироваться от сложности внутреннего устройства 1С и обмениваться данными с кассой через простые XML-пакеты. Это позволяет внедрить работу с ТО буквально за один день. Вы просто подготавливаете структуру товаров в виде таблицы значений, передаете её во внешнюю обработку, а она берет на себя все низкоуровневые вызовы драйвера.
Важный совет: При внедрении любого решения обязательно проверяйте передачу кода маркировки (тег 1162). Если ваша конфигурация не умеет обрабатывать типы данных КодМаркировки, вы не сможете торговать обувью, одеждой, табаком и другими подконтрольными товарами легально.
В завершение отметим, что для конфигураций на платформе 8.3 наиболее перспективным является именно путь внедрения БПО в режиме использования управляемых форм в обычном приложении. Это потребует больше времени на начальном этапе (в среднем от 3 до 10 рабочих дней), но избавит от проблем при очередном изменении форматов фискальных данных (ФФД).