Возможна ли печать чека коррекции без бумаги на ККТ АТОЛ-50Ф и как ее настроить в 1С

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

При автоматизации розничной торговли и расчетов с покупателями часто возникает необходимость массового формирования чеков коррекции. Если таких чеков нужно пробить десятки или сотни (например, при исправлении массового сбоя или корректировке платежей на расчетный счет), печать на чековой ленте приводит к колоссальному расходу бумаги и износу термоголовки кассового аппарата. Рассмотрим подробно, как решить проблему печати чеков коррекции на бумаге для популярной модели ККТ АТОЛ-50Ф средствами платформы 1С:Предприятие 8 и драйверов АТОЛ.

Выясним причину: почему обычные чеки не печатаются, а чеки коррекции выходят на бумагу?

В типовых конфигурациях 1С (например, в 1С:Бухгалтерия 3.0 КОРП) для обычных чеков (приход, возврат прихода) опция электронного чека работает исправно. Пользователю достаточно установить признак "Не печатать бумажный чек" и указать адрес электронной почты или номер телефона покупателя (Тег 1008). После этого чек уходит в ОФД и покупателю, а бумажная лента ККТ остается нетронутой.

Однако при попытке пробить аналогичным образом чек коррекции касса все равно упорно распечатывает бумажный документ. Проанализируем ситуацию с технической стороны. Взаимодействие между 1С и кассовым аппаратом строится через два уровня программного обеспечения:

  1. Библиотека подключаемого оборудования (1С:БПО) — определяет структуру передаваемых XML-данных и вызываемые методы интеграционной компоненты.
  2. Драйвер ККТ от производителя (АТОЛ ДТО 10) — транслирует команды 1С в низкоуровневый протокол ККТ.

Проблема кроется в различиях интерфейсов методов фискализации обычных чеков и чеков коррекции в архитектуре БПО и драйверов.

Анализ программных ограничений БПО 1С

В старых версиях БПО (в ревизиях интерфейса требований к драйверам ниже 4004, к которым относится, например, версия 2.1.1.x) разработчики 1С заложили принципиально разные сигнатуры для вызова функций обычного чека и чека коррекции.

Рассмотрим пример кода из старой версии БПО при формировании обычного чека:


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

Обратим внимание на второй параметр: ПараметрыФискализации.Электронно. Именно он передает драйверу ККТ команду не выводить документ на печать.

Теперь посмотрим на вызов формирования чека коррекции в тех же версиях БПО:


Если ПараметрыФискализации.РевизияИнтерфейса >= 3000 Тогда // Версия стандарта 3.0 (ОФД 1.1)
    Результат = ОбъектДрайвера.СформироватьЧекКоррекции(
        ПараметрыПодключения.ИДУстройства, 
        ПараметрыФискализации.ДанныеЧекаXML, 
        ПараметрыФискализации.РезультатОперацииXML
    );
Иначе
    Результат = ОбъектДрайвера.СформироватьЧекКоррекции(
        ПараметрыПодключения.ИДУстройства, 
        ПараметрыФискализации.ДанныеЧекаXML, 
        ПараметрыФискализации.НомерЧекаККТ, 
        ...
    );
КонецЕсли;

Как мы видим, в списке параметров метода СформироватьЧекКоррекции физически отсутствует параметр передачи булева свойства "Электронно". Из-за этого драйвер ККТ по умолчанию считает, что документ необходимо распечатать в бумажном виде.

Решение в современных версиях БПО 1С (Ревизия интерфейса 4.0+)

Если мы обновим конфигурацию 1С и используемые драйверы ККТ до актуальных релизов (где ревизия требований к драйверам ККТ имеет версию 4004 или выше), мы увидим, что фирма 1С исправила это ограничение. В новой спецификации требований метод СформироватьЧекКоррекции получил поддержку признака электронного формирования:


// В новых версиях БПО (ревизия 4.0 и выше) сигнатура метода выглядит следующим образом:
Результат = ОбъектДрайвера.СформироватьЧекКоррекции(
    ПараметрыПодключения.ИДУстройства, 
    ПараметрыФискализации.Электронно, // Передается значение Истина/Ложь
    ПараметрыФискализации.ДанныеЧекаXML, 
    ПараметрыФискализации.РезультатОперацииXML
);

Решение на уровне 1С: Чтобы программно отключить бумажную печать чека коррекции, необходимо обновить 1С:Бухгалтерию и драйвер АТОЛ до версий, поддерживающих стандарт БПО не ниже 3.1. При написании собственной внешней обработки для пакетной печати обязательно проверяйте значение ПараметрыФискализации.РевизияИнтерфейса и передавайте вторым параметром Истина в метод СформироватьЧекКоррекции.

Настройка на стороне ККТ АТОЛ и драйвера ДТО 10

Даже если программа 1С корректно передает флаг электронного чека, ККТ АТОЛ-50Ф может продолжать печатать бумагу. Это связано с внутренними настройками кассового аппарата и требованиями драйвера.

Разберем по шагам, какие настройки необходимо выполнить в драйвере АТОЛ 10:

  1. Программная передача признака: При прямой работе с API драйвера АТОЛ (в обход БПО или при доработке интеграционной компоненты) для отключения печати необходимо установить специальное свойство LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY в значение true перед фискализацией документа.
    
    // Пример прямого обращения к драйверу АТОЛ ДТО 10
    Драйвер.setParam(Драйвер.LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, Истина);
    
  2. Заполнение тега 1008 (Контакты получателя): Согласно документации АТОЛ, перевод чека в электронный режим без печати ПФ (печатной формы) срабатывает только в том случае, если в чеке заполнен реквизит Тег 1008 (адрес электронной почты или телефон покупателя). Несмотря на то, что для чека коррекции по ФЗ-54 тег 1008 методологически не всегда является обязательным, прошивка ККТ АТОЛ зачастую не позволяет закрыть чек только электронно, если контакты получателя пусты. Передавайте в XML-пакет чека коррекции в секцию параметров фискального документа произвольный (но корректно отформатированный) email организации или покупателя.
  3. Лицензия "Отключение печатных форм": На современных прошивках АТОЛ (Платформа 5.0) для гарантированного отключения печати любых бумажных документов (включая нефискальные документы, отчеты без гашения и чеки коррекции) на уровне ККТ должна быть активирована лицензия "Отключение печатных форм". Если лицензия отсутствует, касса может игнорировать программные флаги LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY для некоторых типов документов. Данную лицензию можно приобрести у авторизованных сервисных партнеров АТОЛ.

Методология и изменения в законодательстве (ФЗ № 240)

Ранее на форумах велись активные споры о целесообразности автоматизации чеков коррекции, поскольку к каждому такому чеку требовалось прикладывать бумажное заявление или объяснительную записку для ФНС. В связи с этим массовая печать электронных чеков коррекции казалась бессмысленной.

Ситуация кардинально изменилась с принятием Федерального закона № 240-ФЗ. Теперь действуют следующие правила:

Это нововведение полностью снимает методологические ограничения на массовую генерацию чеков коррекции. Написав внешнюю обработку пакетной печати и настроив работу ККТ АТОЛ-50Ф в электронном режиме, вы сможете быстро скорректировать любые объемы некорректно пробитых операций без бумажной волокиты.

← На главную