Как устранить сбои при формировании чека и ошибку вида оплаты на ККТ АТОЛ 30Ф в 1С

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

При работе с торговым оборудованием, в частности с кассовыми аппаратами АТОЛ 30Ф и FPrint-22ПТК, технические специалисты и программисты 1С иногда сталкиваются с двумя критическими проблемами после обновления прошивки ККТ:

  1. Падение платформы 1С с аварийным завершением работы при вызове метода СформироватьЧек (при этом чек физически распечатывается на ККТ, а открытие и закрытие смены происходят без ошибок).
  2. Некорректная подстановка вида оплаты (например, вместо безналичного расчета распечатывается «иная форма оплаты» или «наличные») при отправке XML-пакета чека коррекции.

Рассмотрим подробнее причины возникновения данных сбоев и пошаговые алгоритмы их устранения.

1. Аварийное завершение работы 1С при вызове метода СформироватьЧек

Сбой происходит на этапе исполнения метода СформироватьЧек внешней компоненты драйвера ККТ:


ОбъектДрайвера.СформироватьЧек(ПараметрыПодключения.ИДУстройства, 
                               Электронно, 
                               ДанныеЧека, 
                               НомерЧека, 
                               НомерСмены, 
                               ФискальныйПризнак, 
                               АдресСайтаПроверки);

Проанализируем ситуацию: кассовое устройство принимает команду, печатает фискальный документ и закрывает чек. Однако в момент передачи результатов выполнения (фискального признака документа, номера смены или ссылки на сайт ОФД) обратно в переменную платформы 1С происходит сбой внешней компоненты. Часто это связано с несоответствием версии установленного драйвера (например, устаревшие версии 8.14.x) и актуальной версии прошивки ККТ.

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

  1. Обновление и чистая переустановка драйвера ККТ. Полностью удалим устаревший драйвер (включая регистрацию COM-компонент в Windows). Установим актуальную версию драйвера АТОЛ (рекомендуется перейти с устаревшей линейки 8.х на современную ветку DTO 10.x или обновить драйвер 8.х до релиза не ниже 8.15.3).
  2. Обновление макета внешней компоненты в 1С. В старых конфигурациях (например, «Управление торговлей 10.3») требуется обновить макет интеграционной компоненты драйвера, заменив устаревший файл fptr1c83.dll / fptr1c.dll на свежую версию из состава БПО (Библиотеки подключаемого оборудования).
  3. Проверка логов драйвера ККТ. Если сбой сохраняется, найдем причину в журнале работы драйвера. Для этого перейдем в меню Пуск — АТОЛ — Управление драйверами, откроем закладку «Логи» и проанализируем файл журнала. В логе отображается точная последовательность команд, передаваемых в ККТ, и код ошибки внешней компоненты при возврате параметров.

2. Исправление вида оплаты в чеках коррекции

Посмотрим на пример структуры 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-структуры чека коррекции соблюдайте следующее соотнесение тегов:

  1. При коррекции наличного расчета: передаем PaymentType="1" в параметрах и сумму в узле наличных платежей:
    
    <Parameters PaymentType="1" TaxVariant="2" CashierName="Продавец" Sum="13950" .../>
    <Payments Cash="13950" ElectronicPayment="0"/>
    
  2. При коррекции безналичного расчета: передаем PaymentType="2" в параметрах и сумму в узле безналичных платежей:
    
    <Parameters PaymentType="2" TaxVariant="2" CashierName="Продавец" Sum="13950" .../>
    <Payments Cash="0" ElectronicPayment="13950"/>
    

3. Влияние версии ФФД (1.0, 1.0+ и 1.05)

Рассмотрим важный нюанс обработки ревизии интерфейса ККТ. При обновлении прошивки кассы без замены фискального накопителя (ФН) касса может физически поддерживать теги формата ФФД 1.05 или 1.0+, однако фискальный накопитель продолжает возвращать номер версии 1.0 (тег 1209).

В коде 1С проверка версии интерфейса обычно выглядит следующим образом:


НовыйФормат = ПараметрыПодключения.РевизияИнтерфейса > 2001; // Версия стандарта 2.2 (ОФД 1.0.5 / 1.1)

Если кассовый аппарат работает по переходному формату ФФД 1.0+, убедитесь, что в параметрах подключения ККТ в 1С выбран верный формат фискальных данных, либо обновлен алгоритм формирования структурированного пакета данных чека в модуле интеграции с торговым оборудованием.

← На главную