Как настроить печать QR-кода на ККТ Атол 22 ПТК и устранить ошибки фискализации в 1С

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

При интеграции кассовой техники Атол (в частности, модели 22 ПТК) с 1С через внешнюю компоненту FprnM1C8254FZ.dll разработчики часто сталкиваются с вопросами формирования фискального двухмерного штрихкода (QR-кода), структурой передаваемых данных по требованиям 54-ФЗ, а также с ситуацией, когда метод фискализации ProcessCheck физически печатает чек, но возвращает значение Ложь. Разберем эти задачи последовательно и выясним, как правильно настроить кассу и обработать ответы драйвера.

Включение печати QR-кода в драйвере торгового оборудования

Формирование двухмерного QR-кода не требует ручной генерации графического изображения на стороне 1С или ожидания специальной ссылки от оператора фискальных данных (ОФД). Кассовый аппарат формирует изображение QR-кода на аппаратном уровне либо средствами драйвера ККТ на основе реквизитов фискализированного чека.

Рассмотрим порядок включения печати штрихкода в ДТО 8.14:

  1. Откроем утилиту настройки драйвера («Тест драйвера ККМ / ККТ»).
  2. Перейдем в «Свойства ККТ» и нажмем кнопку «Параметры оборудования».
  3. В дереве настроек перейдем в раздел основных параметров печати чека.
  4. Прокрутим список параметров вниз с помощью полосы прокрутки (скроллбара), так как нужные флаги часто находятся ниже границы окна.
  5. Установим флаг «Печатать QR-код» (или выберем аппаратный режим генерации QR-кода).
  6. Сохраним настройки и применим изменения к оборудованию.

После включения этой опции касса будет автоматически добавлять фискальный QR-код в подвал каждого закрываемого чека.

Что содержит фискальный QR-код по 54-ФЗ

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

  1. Дата и время совершения расчета (тег t).
  2. Сумма расчета с копейками (тег s).
  3. Номер фискального документа (тег fn / fd).
  4. Фискальный признак документа (тег fp).
  5. Признак расчета (приход, возврат прихода, расход, возврат расхода — тег n).

Реквизит адреса сайта ФНС (AddressSiteInspections) по умолчанию возвращает значение nalog.ru. Это регламентировано законодательством: покупатель может проверить подлинность любого чека через единый сервис налоговой службы, независимо от того, через какого ОФД (Такском, Платформа ОФД, Первый ОФД и др.) передаются данные.

Разбор работы метода ProcessCheck и причины возврата Ложь

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


rs = driver.ProcessCheck(
    Id_device,
    cashier, 
    p1,
    xml, 
    ncheck, 
    nsession, 
    fisc, 
    addr
);

Если кассовый аппарат распечатал чек, но переменная rs принимает значение Ложь (False), а реквизиты nsession (номер смены) и fisc (фискальный признак) остаются пустыми, выясним причины такого поведения:

  1. Таймаут считывания фискального ответа: Касса успевает физически закрыть документ на чековой ленте, но ответ от фискального накопителя (ФН) не успевает прочитаться драйвером за отведенное время ожидания по интерфейсу COM/USB. В таком случае драйвер считает операцию незавершенной и возвращает Ложь.
  2. Несоответствие XML-пакета требованиям ФФД: Если в переданной XML-строке отсутствуют необязательные для печати, но обязательные для ФН реквизиты (например, некорректная ставка НДС или тип оплаты), кассовое ядро может напечатать текстовый образ чека с ошибкой фискализации.
  3. Работа с тестовым накопителем (МГМ): Тестовый накопитель (массогабаритный макет) полностью воспроизводит алгоритмы боевого ФН и обязан формировать фискальный признак. Сам факт использования МГМ не является причиной возврата Ложь.

Для детальной диагностики ошибки сразу после вызова метода необходимо запросить расширенное описание:


Если Не rs Тогда
    ОписаниеОшибки = "";
    driver.GetLastError(ОписаниеОшибки);
    // Запись ОписаниеОшибки в журнал регистрации или вывод пользователю
КонецЕсли;

Передача чеков в ОФД и служба EthernetOverUSB (EoU)

Если на сетевом шлюзе по указанному порту ОФД (например, 7778 для Такском) отсутствует трафик, проанализируем канал передачи данных ККТ:

  1. При подключении кассы Атол по USB в операционной системе создаются два виртуальных COM-порта. Первый используется для команд 1С, а второй — исключительно для передачи фискальных данных в ОФД.
  2. Связь со вторым портом обеспечивает фоновая служба EthOverUsb (EoU). Если служба остановлена или в конфигурационном файле settings.xml службы не прописан номер ведомого COM-порта ККТ, данные в ОФД уходить не будут, даже если тестовые чеки успешно пробиваются локально.
  3. Для проверки корректности передачи документов выполним распечатку сервисного отчета «Диагностика соединения с ОФД» через меню сервисного режима кассы.

Также важно различать номера документов: значение общего счетчика (например, 58) представляет собой сквозной порядковый номер фискального документа (ФД) за все время работы ФН, тогда как номер чека в смене (например, 2) сбрасывается при каждом суточном закрытии смены (Z-отчете).

← На главную