Как подключить онлайн-кассу по 54-ФЗ в 1С:Управление торговлей 11.1 и настроить БПО

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

При переходе на онлайн-кассы по требованиям 54-ФЗ многие пользователи и разработчики сталкиваются с ситуацией, когда рабочая конфигурация 1С:Управление торговлей 11.1 сильно кастомизирована, а переход на более свежие релизы (УТ 11.3, 11.4 или 11.5) требует значительных временных и финансовых затрат. Возникает вопрос: возможно ли запустить онлайн-кассу на старых версиях Библиотеки подключаемого оборудования (БПО) или внедрить обновленную БПО на платформе 1С:Предприятие 8.3.

Разберем детально технические ограничения связки УТ 11.1 и БПО, а также рассмотрим практические способы решения задачи подключения кассового аппарата.

Почему онлайн-касса не работает в УТ 11.1 из коробки

Проанализируем архитектурные различия между старыми фискальными регистраторами и современными ККТ с передачей данных:

  1. Разделение типов оборудования: В конфигурации УТ 11.1 подсистема торгового оборудования оперирует типами ФискальныйРегистратор, ККМОфлайн и АвтономнаяККМ. Механизм ККТСПередачейДанных в перечислении ТипыПодключаемогоОборудования появился только в УТ 11.3 и соответствующих версиях БПО. При подключении кассы как обычного фискального регистратора тест связи может проходить успешно, однако попытка пробить чек завершится ошибкой.
  2. Смена стандарта работы драйверов: В устаревших версиях БПО печать фискальных чеков выполнялась последовательными вызовами построчных команд (например, НапечататьЧек, передача строк и закрытие чека). Современные драйверы ККТ требуют передачу единого пакета данных в формате XML через функцию СформироватьЧек (метод ProcessCheck).
  3. Требования ФФД (форматов фискальных документов): При попытке пробить чек через старые методы драйвер ККТ выдает ошибки валидации, поскольку в потоке данных отсутствуют обязательные фискальные теги: признак способа расчета (тег 1214), признак предмета расчета (тег 1212), ставка НДС (тег 1199) и другие реквизиты.

Вариант 1. Бэкпорт подсистемы БПО из актуальных релизов

Рассмотрим вариант полноценного обновления подсистемы ПодключаемоеОборудование. Для этого перенесем из конфигурации УТ 11.3 или Розница 2.2 обновленную подсистему БПО.

  1. Выполним перенос общих модулей: МенеджерОборудованияКлиент, МенеджерОборудованияСервер, МенеджерОборудованияВызовСервераПереопределяемый, а также справочников подключаемого оборудования и драйверов.
  2. Добавим значение ККТСПередачейДанных в перечисление ТипыПодключаемогоОборудования.
  3. Доработаем модули документов (ЧекККМ, ПриходныйКассовыйОрдер, ЭквайринговаяОперация), чтобы они формировали XML-пакет чека с заполнением всех реквизитов ФФД перед отправкой в метод СформироватьЧек.

Обратим внимание на режим совместимости конфигурации: если в УТ 11.1 установлен режим совместимости ниже 8.3.6, необходимо адаптировать асинхронные вызовы (например, конструкции ОповещениеОЗавершении и НачатьПодключениеОборудования) под синхронные аналоги, либо повысить режим совместимости до версии используемой платформы (например, 8.3.9).

Вариант 2. Прямая работа с драйвером ККТ через COM-объект

Если конфигурация сильно переписана и внедрение новой БПО нецелесообразно, разберем способ прямого обращения к COM-объекту драйвера производителя кассы (например, ДТО от АТОЛ или драйвер Штрих-М).

Посмотрим на пример логики прямого взаимодействия с драйвером кассы при печати чека из документа:


Драйвер = Новый COMОбъект("AddIn.Fptr10");
Драйвер.Open();

// Инициализация фискального документа
Драйвер.setParam(1021, "Кассир Иванов И.И."); // Тег кассира
Драйвер.openDocument();

// Регистрация товарной позиции
Драйвер.setParam(1030, "Товар 1");            // Наименование
Драйвер.setParam(1079, 100.00);              // Цена
Драйвер.setParam(1023, 1);                  // Количество
Драйвер.setParam(1214, 4);                  // Признак способа расчета (Полный расчет)
Драйвер.setParam(1212, 1);                  // Признак предмета расчета (Товар)
Драйвер.setParam(1199, 1);                  // Ставка НДС (20%)
Драйвер.registrationPosition();

// Закрытие чека с оплатой наличными
Драйвер.setParam(1031, 100.00);              // Сумма наличными
Драйвер.closeDocument();

Такой подход позволяет полностью контролировать передачу всех обязательных тегов ФФД без вмешательства в типовые механизмы БПО.

Вариант 3. Использование внешней обработки обслуживания или HTTP-сервиса

Проанализируем еще два альтернативных способа интеграции:

  1. Внешняя обработка обслуживания: Подключаем кассу как фискальный регистратор через специальную внешнюю обработку, которая перехватывает команды печати чека и самостоятельно формирует правильные пакеты данных по протоколу онлайн-кассы.
  2. Локальный HTTP-шлюз: На кассовом рабочем месте запускается локальный веб-сервис (промежуточный сервер печати). Из 1С отправляется POST-запрос с JSON-структурой чека. Локальный сервис принимает запрос и через актуальный драйвер ККТ печатает чек, возвращая в 1С фискальные данные (номер чека, ФД, ФПД). Это исключает зависимость базы 1С от драйверов оборудования.
← На главную