При работе с торговым оборудованием, в частности с кассовыми аппаратами АТОЛ 30Ф и FPrint-22ПТК, технические специалисты и программисты 1С иногда сталкиваются с двумя критическими проблемами после обновления прошивки ККТ:
СформироватьЧек (при этом чек физически распечатывается на ККТ, а открытие и закрытие смены происходят без ошибок).Рассмотрим подробнее причины возникновения данных сбоев и пошаговые алгоритмы их устранения.
Сбой происходит на этапе исполнения метода СформироватьЧек внешней компоненты драйвера ККТ:
ОбъектДрайвера.СформироватьЧек(ПараметрыПодключения.ИДУстройства,
Электронно,
ДанныеЧека,
НомерЧека,
НомерСмены,
ФискальныйПризнак,
АдресСайтаПроверки);
Проанализируем ситуацию: кассовое устройство принимает команду, печатает фискальный документ и закрывает чек. Однако в момент передачи результатов выполнения (фискального признака документа, номера смены или ссылки на сайт ОФД) обратно в переменную платформы 1С происходит сбой внешней компоненты. Часто это связано с несоответствием версии установленного драйвера (например, устаревшие версии 8.14.x) и актуальной версии прошивки ККТ.
Разберем по шагам порядок действий для устранения падения программы:
fptr1c83.dll / fptr1c.dll на свежую версию из состава БПО (Библиотеки подключаемого оборудования).Посмотрим на пример структуры XML-запроса CheckCorrectionPackage, отправляемого в ККТ при формировании чека коррекции:
<?xml version="1.0" encoding="UTF-8"?>
<CheckCorrectionPackage>
<Parameters PaymentType="2" TaxVariant="2" CashierName="Продавец" Sum="13950" SumTAXNone="0" SumTAX0="0" SumTAX10="0" SumTAX18="0" SumTAX110="0" SumTAX118="0"/>
<Payments Cash="13950" ElectronicPayment="0"/>
</CheckCorrectionPackage>
Выясним причину подмены вида оплаты: драйвер ККТ АТОЛ серии 8.х обрабатывает атрибут PaymentType в узле Parameters как индекс таблицы видов оплаты самой кассы (где 1 — Наличные, 2 — Безналичные/Электронные и т.д.). В то же время узел Payments содержит суммы по типам платежей. Если значения PaymentType и узла Payments рассинхронизированы, касса отдает приоритет числовому индексу PaymentType и печатает вид оплаты, не соответствующий значению суммы.
Для корректного формирования XML-структуры чека коррекции соблюдайте следующее соотнесение тегов:
PaymentType="1" в параметрах и сумму в узле наличных платежей:
<Parameters PaymentType="1" TaxVariant="2" CashierName="Продавец" Sum="13950" .../>
<Payments Cash="13950" ElectronicPayment="0"/>
PaymentType="2" в параметрах и сумму в узле безналичных платежей:
<Parameters PaymentType="2" TaxVariant="2" CashierName="Продавец" Sum="13950" .../>
<Payments Cash="0" ElectronicPayment="13950"/>
Рассмотрим важный нюанс обработки ревизии интерфейса ККТ. При обновлении прошивки кассы без замены фискального накопителя (ФН) касса может физически поддерживать теги формата ФФД 1.05 или 1.0+, однако фискальный накопитель продолжает возвращать номер версии 1.0 (тег 1209).
В коде 1С проверка версии интерфейса обычно выглядит следующим образом:
НовыйФормат = ПараметрыПодключения.РевизияИнтерфейса > 2001; // Версия стандарта 2.2 (ОФД 1.0.5 / 1.1)
Если кассовый аппарат работает по переходному формату ФФД 1.0+, убедитесь, что в параметрах подключения ККТ в 1С выбран верный формат фискальных данных, либо обновлен алгоритм формирования структурированного пакета данных чека в модуле интеграции с торговым оборудованием.