При интеграции кассовой техники Атол (в частности, модели 22 ПТК) с 1С через внешнюю компоненту FprnM1C8254FZ.dll разработчики часто сталкиваются с вопросами формирования фискального двухмерного штрихкода (QR-кода), структурой передаваемых данных по требованиям 54-ФЗ, а также с ситуацией, когда метод фискализации ProcessCheck физически печатает чек, но возвращает значение Ложь. Разберем эти задачи последовательно и выясним, как правильно настроить кассу и обработать ответы драйвера.
Формирование двухмерного QR-кода не требует ручной генерации графического изображения на стороне 1С или ожидания специальной ссылки от оператора фискальных данных (ОФД). Кассовый аппарат формирует изображение QR-кода на аппаратном уровне либо средствами драйвера ККТ на основе реквизитов фискализированного чека.
Рассмотрим порядок включения печати штрихкода в ДТО 8.14:
После включения этой опции касса будет автоматически добавлять фискальный QR-код в подвал каждого закрываемого чека.
Проанализируем структуру данных, зашитых в QR-коде. Распространенным заблуждением является мнение, что штрихкод содержит веб-ссылку на страницу чека в личном кабинете конкретного ОФД. В действительности, согласно требованиям формата фискальных данных (ФФД), QR-код содержит набор строго определенных текстовых реквизитов:
t).s).fn / fd).fp).n).Реквизит адреса сайта ФНС (AddressSiteInspections) по умолчанию возвращает значение nalog.ru. Это регламентировано законодательством: покупатель может проверить подлинность любого чека через единый сервис налоговой службы, независимо от того, через какого ОФД (Такском, Платформа ОФД, Первый ОФД и др.) передаются данные.
Посмотрим на типовой вызов метода фискализации через драйвер:
rs = driver.ProcessCheck(
Id_device,
cashier,
p1,
xml,
ncheck,
nsession,
fisc,
addr
);
Если кассовый аппарат распечатал чек, но переменная rs принимает значение Ложь (False), а реквизиты nsession (номер смены) и fisc (фискальный признак) остаются пустыми, выясним причины такого поведения:
Ложь.Ложь.Для детальной диагностики ошибки сразу после вызова метода необходимо запросить расширенное описание:
Если Не rs Тогда
ОписаниеОшибки = "";
driver.GetLastError(ОписаниеОшибки);
// Запись ОписаниеОшибки в журнал регистрации или вывод пользователю
КонецЕсли;
Если на сетевом шлюзе по указанному порту ОФД (например, 7778 для Такском) отсутствует трафик, проанализируем канал передачи данных ККТ:
EthOverUsb (EoU). Если служба остановлена или в конфигурационном файле settings.xml службы не прописан номер ведомого COM-порта ККТ, данные в ОФД уходить не будут, даже если тестовые чеки успешно пробиваются локально.Также важно различать номера документов: значение общего счетчика (например, 58) представляет собой сквозной порядковый номер фискального документа (ФД) за все время работы ФН, тогда как номер чека в смене (например, 2) сбрасывается при каждом суточном закрытии смены (Z-отчете).