Как подключить онлайн-кассу АТОЛ по 54-ФЗ к 1С:Розница 2.0 без полного обновления конфигурации?

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

При переходе на требования 54-ФЗ многие сталкиваются с ситуацией, когда доработанная конфигурация 1С:Розница 2.0 успешно работает с фискальными регистраторами «Штрих-М», но при попытке подключить оборудование «АТОЛ» стандартные механизмы отказываются работать. Полное обновление конфигурации до редакции 2.2 или 2.3 часто невозможно из-за масштабных доработок учетной системы. Разберем, почему возникает эта проблема и какие существуют способы интеграции ККТ АТОЛ в старую редакцию программы.

Почему «Штрих-М» подключается сразу, а «АТОЛ» требует доработок?

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

  1. Архитектура работы драйверов «Штрих-М»: Драйверы касс «Штрих-М» долгое время поддерживали полную обратную совместимость через классический COM-интерфейс. Они принимали команды построчной печати и закрытия чека так же, как это происходило в старых фискальных регистраторах до введения 54-ФЗ. Это позволяло старой версии библиотеки подключаемого оборудования (БПО 1.x) передавать команды кассе без существенной модернизации кода. Однако при этом часто возникает скрытая ошибка: данные позиций могут не передаваться в ОФД корректно (в электронном чеке не заполняются наименования товаров).
  2. Требования к пакетам данных «АТОЛ»: Драйверы торгового оборудования АТОЛ (начиная с ДТО 8/9 и актуальный ДККТ 10) при работе по 54-ФЗ в режиме ККТ с передачей данных требуют передачи фискального документа единым пакетом в формате XML или JSON. В конфигурации «Розница 2.0» механизмы сборки таких пакетов и современные интерфейсы вызова драйвера в подсистеме БПО попросту отсутствуют.

Вариант 1. Точечный перенос подсистемы БПО из актуальной конфигурации

Рассмотрим наиболее надежный способ интеграции, сохраняющий стандартную архитектуру 1С. Вместо переписывания всей базы выполняется выборочное обновление подсистемы Библиотека подключаемого оборудования.

Разберем процесс по шагам:

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

Вариант 2. Создание внешней обработки обслуживания кассы через прямой COM или Native API

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

В этом случае логика работы строится следующим образом:

  1. Внешняя обработка получает на вход структуру или ссылку на документ ЧекККМ.
  2. Обработка напрямую инициализирует COM-объект актуального драйвера АТОЛ (например, AddIn.Fptr10).
  3. Формируется и передается JSON-пакет чека с полным набором фискальных реквизитов, минуя старые модули конфигурации.

Посмотрим на пример базовой инициализации драйвера АТОЛ через Native API / COM в коде 1С:


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

ДрайверККТ.setSingleSetting(ДрайверККТ.LIBFPTR_SETTING_MODEL, Строка(ДрайверККТ.LIBFPTR_MODEL_ATOL_AUTO));
ДрайверККТ.setSingleSetting(ДрайверККТ.LIBFPTR_SETTING_PORT, Строка(ДрайверККТ.LIBFPTR_PORT_COM));
ДрайверККТ.setSingleSetting(ДрайверККТ.LIBFPTR_SETTING_COM_FILE, "COM3");
ДрайверККТ.setSingleSetting(ДрайверККТ.LIBFPTR_SETTING_BAUDRATE, Строка(ДрайверККТ.LIBFPTR_BAUDRATE_115200));

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

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

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

Еще один практичный вариант для кастомизированных баз — настройка локального HTTP-сервиса фискализации. В 1С пишется простой экспорт структуры чека в формате JSON, который по протоколу HTTP отправляется на локальный веб-сервер, управляющий фискальным регистратором.

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

  1. Конфигурация «1С:Розница 2.0» полностью изолирована от кассовых драйверов, разрядности библиотек и обновлений прошивок ККТ.
  2. Исключаются конфликты между разрядностью платформы «1С:Предприятие» и разрядностью COM-компонентов драйвера ККТ.

Обязательные технические требования по 54-ФЗ

При реализации любого из выбранных вариантов важно учитывать обязательные правила работы кассового оборудования нового образца:

  1. Соответствие разрядности: Разрядность исполняемого файла платформы 1С (32-бит или 64-бит) должна строго совпадать с разрядностью установленного драйвера АТОЛ, если используется прямое подключение через COM или Native-компоненту.
  2. Версия драйвера: Для поддержки современных форматов фискальных данных (ФФД 1.05, 1.2) и маркированных товаров необходимо использовать Драйвер ККТ 10.x. Устаревший ДТО 8 не обеспечивает соответствие текущим требованиям законодательства.
  3. Передача фискальных тегов: В отправляемом пакете данных обязательно должны присутствовать: система налогообложения (тег 1055), данные кассира с ИНН (теги 1021 и 1203), ставки НДС для каждой позиции и признаки предмета/способа расчета.
← На главную