Как внедрить работу с торговым оборудованием в самописную конфигурацию на обычных формах

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Вопрос интеграции торгового оборудования (ТО), особенно в свете требований 54-ФЗ и маркировки «Честный ЗНАК», является критическим для владельцев самописных или сильно кастомизированных конфигураций на платформе 1С 8.3, использующих обычные формы. Разберем основные стратегии решения этой задачи, проанализируем сложности интеграции и выясним причины типичных ошибок, таких как невозможность открытия кассовой смены.

Вариант 1: Использование Библиотеки подключаемого оборудования (БПО)

Распространенное заблуждение гласит, что БПО предназначена исключительно для управляемых форм. На самом деле, начиная с версии платформы 8.3, мы можем успешно использовать управляемые формы внутри обычного приложения. Это наиболее правильный путь с точки зрения долгосрочной поддержки, так как фирма «1С» регулярно обновляет БПО под меняющееся законодательство.

Для внедрения БПО выполним следующие шаги:

  1. Настройка платформы: Убедимся, что в свойствах конфигурации установлен флаг «Использовать управляемые формы в обычном приложении». Это позволит открывать окна настроек оборудования и формы тестов из БПО.
  2. Перенос объектов: Проанализируем состав БПО и перенесем необходимые общие модули, справочники (например, ПодключаемоеОборудование) и обработки.
  3. Программный интерфейс: Для вызова методов БПО из обычных форм используем программный интерфейс библиотеки. Например, для подключения кассы будем обращаться к модулю МенеджерОборудованияКлиент.

Вариант 2: Заимствование подсистемы из УТ 10.3

Если ваша самописка идейно близка к «Управление торговлей 10.3», логично рассмотреть вариант переноса кода именно оттуда. Однако стоит учитывать, что в современных релизах УТ 10.3 блок ТО представляет собой огромный массив кода, тесно завязанный на глобальные переменные и параметры сеанса.

Рассмотрим пример типичной инициализации, которую необходимо реализовать в модуле обычного приложения, чтобы механизмы УТ 10.3 заработали:


Процедура ПриНачалеРаботыСистемы()
    // Инициализация глобальных переменных для работы с ТО
    глЗначениеПеременной("глРаботаСТорговымОборудованием");
    МенеджерОборудования.ОбновитьРабочееМесто();
КонецПроцедуры

Проанализируем ситуацию, когда «не получается открыть смену». Чаще всего это происходит из-за отсутствия инициализации параметров торгового оборудования в текущем сеансе. Если объект МенеджерОборудования не находит настроенное рабочее место, команды печати чека или открытия смены будут игнорироваться без внятных ошибок.

Вариант 3: Прямое взаимодействие с драйвером (на примере АТОЛ 10)

Если вам нужно «быстро прикрутить» только печать чеков на онлайн-кассе, использование тяжелых библиотек может быть избыточным. Самый эффективный способ для программиста в данном случае — работа с драйвером напрямую через 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 рабочих дней), но избавит от проблем при очередном изменении форматов фискальных данных (ФФД).

← На главную