Как настроить драйвер АТОЛ для поддержки ФФД 1.05 в 1С 8.1 и 1С 7.7?

Программист 1С v7.7 1С:Управление торговлей Управленческий учет IT и автоматизация бизнеса
← На главную

При попытке внедрить поддержку формата фискальных документов (ФФД) 1.05 в старых конфигурациях 1С (например, Управление торговлей 10.3 на платформе 1С 8.1 или решение на 1С 7.7) разработчики сталкиваются с аппаратными и программными ограничениями. Попытка перенести обновленный модуль работы с торговым оборудованием из свежих релизов 1С 8.3 приводит к ошибкам работы с кассой.

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

Причина проблемы и технические ограничения

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

  1. Различие технологий подключения: Платформы 1С 8.1 и 1С 7.7 поддерживают работу с внешними компонентами только по технологии COM / ActiveX. Нативная технология Native API (функция AttachAddIn / ПодключитьВнешнююКомпоненту) появилась только в платформах 1С 8.2 и 8.3. В современных драйверах АТОЛ (ДТО 9 и ДТО 10) основной упор сделан именно на Native API.
  2. Несовместимость ревизий интерфейса: При использовании стандартной внешнекомпонентной библиотеки от 1С (например, FprnM1C82_54FZ.dll в составе ДТО 8.16) метод ПолучитьПараметрыККТ возвращает РевизияИнтерфейса = 2001 и не заполняет свойства FFDVersionFN и FFDVersionKKT.
  3. Зависимость кода конфигурации: Модуль работы с кассовым оборудованием, заимствованный из актуальных релизов УТ 10.3, жестко рассчитывает на ревизию интерфейса 2002 и наличие сведений о версиях ФФД. Не найдя нужных реквизитов, 1С прерывает выполнение операции печати чека.

Способ 1. Прямая работа с COM-объектом драйвера АТОЛ (без компоненты 1С)

Наиболее надежный вариант, позволяющий избежать ограничений библиотек-прокладок от 1С, — прямое взаимодействие с COM-объектом, предоставляемым разработчиком оборудования. В этом случае мы отказываемся от использования стандартного механизма «1С:Торговое оборудование» и обращаемся к методам АТОЛ напрямую.

Посмотрим на алгоритм реализации прямого вызова:

  1. Устанавливаем дистрибутив ДТО (например, ДТО 10). В его состав входит 32-разрядная DLL-библиотека COM-объекта (addin_fptr10_x86.dll).
  2. Регистрируем библиотеку в операционной системе через утилиту regsvr32.exe.
  3. В коде 1С инициализируем объект драйвера напрямую:
    
    // Для платформы 1С 8.1:
    ДрайверККТ = Новый COMОбъект("AddIn.Fptr10");
    
    // Для платформы 1С 7.7:
    // ДрайверККТ = СоздатьОбъект("AddIn.Fptr10");
    
  4. Формируем и передаем чек в ККТ с помощью родных команд API драйвера АТОЛ (открытие чека, регистрация позиций с указанием предметов и способов расчета, закрытие чека).

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


ДрайверККТ.setParam(ДрайверККТ.LIBPTR_PARAM_RECEIPT_TYPE, ДрайверККТ.LIBPTR_RT_CLOSED);
ДрайверККТ.openReceipt();

// Добавление позиции с требованиями ФФД 1.05
ДрайверККТ.setParam(ДрайверККТ.LIBPTR_PARAM_POSITION_NAME, "Товар 1");
ДрайверККТ.setParam(ДрайверККТ.LIBPTR_PARAM_PRICE, 100.00);
ДрайверККТ.setParam(ДрайверККТ.LIBPTR_PARAM_QUANTITY, 1);
ДрайверККТ.setParam(ДрайверККТ.LIBPTR_PARAM_TAX_TYPE, ДрайверККТ.LIBPTR_TAX_NO);
ДрайверККТ.registration();

// Закрытие чека
ДрайверККТ.closeReceipt();

Способ 2. Использование COM-обертки (atolwrapper)

Если нет возможности полностью переписывать логику формирования чека на низкоуровневые команды драйвера, можно применить промежуточную COM-обертку (например, специализированную DLL-библиотеку atolwrapper).

Суть этого метода заключается в том, что 1С 8.1 или 7.7 обращается к обертке как к стандартному COM-объекту. Обертка перехватывает эти вызовы и транслирует их во внутренний интерфейс Native API актуального драйвера АТОЛ 9.х или 10.х. Это позволяет сохранить структуру типового кода УТ 10.3 при минимальных точечных изменениях.

Способ 3. Взаимодействие через Web-сервер ККТ (REST API / HTTP)

Выясним еще один альтернативный вариант работы, который исключает проблемы с DLL-библиотеками и разрядностью платформ. В современные версии ДТО 10 входит служба локального веб-сервера кассового оборудования.

  1. Запускаем и настраиваем локальный Web-сервер АТОЛ на рабочем месте кассира.
  2. Из 1С 8.1 отправляем сформированный JSON-пакет чека с помощью объекта HTTPСоединение и HTTPЗапрос на адрес http://localhost:16732.
  3. ККТ принимает JSON-задание и печатает чек с соблюдением всех реквизитов ФФД 1.05 / 1.2.

Способ 4. Корректировка кода конфигурации под ДТО 8.16

Если инфраструктура строго ограничена использованием ДТО 8.16, вы можете адаптировать перенесенный из УТ 10.3 код вручную:

  1. В модуле работы с торговым оборудованием найдите место проверки ревизии интерфейса.
  2. Закомментируйте жесткое условие проверки РевизияИнтерфейса = 2002.
  3. Принудительно подставьте значения параметров FFDVersionFN и FFDVersionKKT в структуре ответа (эмуляция параметров 1.05).

Важно: При использовании этого способа учитывайте ограничения драйвера ДТО 8.16. При работе с некоторыми специфическими операциями (предоплаты, агентские услуги, передача отдельных признаков способа расчета) устаревший драйвер может некорректно передавать теги в ФН, что приводит к ошибкам регистрации чека.

← На главную