Как подключить онлайн-кассу к устаревшей конфигурации 1С:Управление торговлей 11.0?

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

При необходимости работы с современными онлайн-кассами (ККТ по требованиям 54-ФЗ) на базе конфигурации «1С:Управление торговлей», редакция 11.0, разработчики сталкиваются с серьезным техническим ограничением: типовые механизмы программы создавались под старый порядок применения кассовой техники с блоками ЭКЛЗ. В этой редакции отсутствуют инструменты формирования чеков в форматах фискальных данных (ФФД 1.05, 1.2), механизмы передачи обязательных тегов (признаки предмета и способа расчета, данные маркировки, контактные данные покупателя), а сама подсистема подключаемого оборудования устарела.

Разберем основные варианты решения этой задачи, выясним их плюсы, минусы и особенности практической реализации.

Вариант 1. Обновление конфигурации до актуального релиза

Самый надежный и поддерживаемый вендором путь — это обновление конфигурации до современных редакций (УТ 11.4 или 11.5).

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

  1. Преимущества: Полная штатная поддержка всех форматов ФФД, автоматическое обновление драйверов торгового оборудования через Библиотеку подключаемого оборудования (БПО), поддержка разрешительного режима и работы с маркированными товарами «из коробки».
  2. Сложности: Прямой переход с УТ 11.0 на актуальные релизы требует выполнения цепочки промежуточных обновлений (11.0 → 11.1 → 11.2 → 11.3 → 11.4 → 11.5). Если конфигурация содержит большое количество нетиповых доработок, перенос функционала потребует значительных трудозатрат.

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

Если полное обновление конфигурации невозможно или экономически нецелесообразно, наиболее прямолинейным решением является разработка внешней обработки или отдельного модуля для взаимодействия с драйвером ККТ в обход стандартной подсистемы торгового оборудования.

Разберем по шагам логику реализации прямого подключения:

  1. Устанавливаем официальный драйвер производителя ККТ на рабочее место (например, ДТО от Атол или драйвер Штрих-М). Важно учитывать разрядность: 32-разрядный клиент «1С:Предприятие» требует установки 32-разрядных компонентов драйвера.
  2. Создаем экземпляр драйвера в коде «1С:Предприятие» через COM-соединение.
  3. Вызываем методы драйвера для открытия чека, передачи параметров фискальных позиций (наименование, цена, количество, ставка НДС, предмет расчета) и оплаты, после чего фискализируем чек.

Посмотрим на пример базовой структуры вызова COM-объекта драйвера из модуля 1С:


// Создаем объект драйвера ККТ
Попытка
    ДрайверККТ = Новый COMОбъект("AddIn.FprnM10");
Исключение
    ВызватьИсключение "Не удалось инициализировать драйвер ККТ. Проверьте регистрацию COM-компонента.";
КонецПопытки;

// Настройка подключения к устройству
ДрайверККТ.setParam(ДрайверККТ.LIBFPTR_SETTING_PORT, ДрайверККТ.LIBFPTR_PORT_USB);
ДрайверККТ.open();

Если Не ДрайверККТ.isOpened() Тогда
    ВызватьИсключение "Ошибка подключения к кассе: " + ДрайверККТ.errorDescription();
КонецЕсли;

Важный момент: При формировании позиций чека для работы по ФФД 1.05/1.2 необходимо вручную передавать все обязательные реквизиты, считывая их напрямую из реквизитов документов (например, из документа «Чек ККМ» или «Приходный кассовый ордер»).

Вариант 3. Использование промежуточного фискального HTTP-сервера

Современным и гибким подходом является вынос логики взаимодействия с кассой в отдельный локальный веб-сервис (программный фискальный шлюз).

Рассмотрим подробнее принцип работы этой схемы:

  1. На компьютере, к которому подключена касса, запускается фоновая служба (веб-сервер ККМ), принимающая команды по протоколу HTTP.
  2. В 1С формируется структура чека в виде строки JSON с полным перечнем тегов фискализации.
  3. Чек передается в сервис с помощью объекта платформы 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-клиент или в терминальном окружении.

Вариант 4. Внедрение актуальной подсистемы БПО

Еще один вариант — перенос актуальной подсистемы «Библиотека подключаемого оборудования» (БПО) из типовых конфигураций последних версий непосредственно в УТ 11.0.

Проанализируем особенности этого решения:

  1. Перенос включает общие модули, справочники (например, Справочник.ПодключаемоеОборудование) и регистры сведений, отвечающие за работу с торговым оборудованием.
  2. Ограничение платформы: Современные версии БПО требуют актуальной версии платформы (8.3.12 и выше) и снятия режима совместимости с 8.2, так как активно используют асинхронные методы работы и встроенные функции обработки JSON.

Рекомендации по выбору решения

Выясним, какой способ выбрать исходя из условий эксплуатации системы:

  1. Если конфигурация близка к типовой — оптимальным выбором будет полное обновление до УТ 11.4 / 11.5.
  2. Если конфигурация сильно переписана, а требуется простое и быстрое решение для нескольких касс — целесообразно использовать HTTP-сервер (шлюз) или прямое COM-подключение к драйверу через внешнюю обработку.
  3. Если в будущем планируется работа с маркировкой («Честный ЗНАК») и новыми форматами ФФД без обновления конфигурации — наиболее масштабируемым будет вариант с промежуточным фискальным сервером, так как обновления формата реализуются на уровне шлюза, не затрагивая код 1С.
← На главную