Как в драйвере АТОЛ 8 отключить печать бумажного чека при отправке электронной копии

Программист 1С v7.7 Торговля и дистрибуция
← На главную

При автоматизации розничной торговли часто возникает ситуация, когда в одной сети магазинов используется разное оборудование — так называемый «зоопарк» касс. Если в современных версиях драйверов (например, АТОЛ 10) задача отключения печати бумажного чека решается установкой одного параметра LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, то в старой, но все еще популярной 8-й версии драйвера (ДТО 8) этот процесс имеет свои нюансы. Разберем подробно, как заставить кассу под управлением АТОЛ 8 не печатать бумагу, если покупатель предоставил свои контактные данные для получения электронного чека.

Анализируем основные механизмы управления печатью в ДТО 8

Для начала проанализируем, почему простой передачи Email покупателя (тег 1008) недостаточно. На уровне фискального накопителя и прошивки кассы передача атрибута 1008 лишь сообщает системе, куда отправить чек, но по умолчанию касса обязана продублировать его на бумажной ленте, если не задана обратная команда. В 8-й версии драйвера АТОЛ ключевым инструментом для изменения этого поведения является свойство CheckMode.

Рассмотрим, какие значения может принимать это свойство:

  1. Значение 1 (по умолчанию) — касса работает в стандартном режиме: формируется фискальный признак, данные уходят в ОФД, и печатается бумажный чек.
  2. Значение 0 — режим формирования только электронного чека. В этом случае касса регистрирует расчет, но блокирует работу печатающего механизма для экономии чековой ленты.

Важный момент: Установка режима CheckMode = 0 требует обязательного наличия заполненного атрибута 1008 (телефон или адрес электронной почты). Если вы попытаетесь пробить электронный чек без указания контактов, ККТ либо выдаст ошибку, либо принудительно распечатает бумажный носитель, так как это требование законодательства (ФЗ-54).

Реализация программного кода для 1С (на примере 7.7 и 8.x)

Выясним, в какой последовательности необходимо вызывать методы драйвера, чтобы команда была принята устройством. Самая распространенная ошибка программистов — установка режима после того, как чек уже открыт. Посмотрим на правильный алгоритм действий.

Сначала подготовим объект драйвера и установим режим работы до начала каких-либо операций с чеком:


// Предположим, что Объект — это установленное соединение с драйвером АТОЛ 8
Если ЭлектронныйЧек = 1 Тогда
    Объект.CheckMode = 0; // Устанавливаем режим "Без печати"
Иначе
    Объект.CheckMode = 1; // Обычный режим с печатью
КонецЕсли;

Далее нам необходимо передать контактные данные покупателя. Это делается через механизм атрибутов (тегов) ФФД. Проанализируем пример функции для записи атрибута 1008:


Процедура ЗаписатьАтрибутОтправки(Объект, КонтактПокупателя)
    Если ПустаяСтрока(КонтактПокупателя) = 0 Тогда
        // Указываем номер тега согласно формату фискальных данных
        Объект.AttrNumber = 1008; 
        // Передаем значение (Email или телефон)
        Объект.AttrValue = СокрЛП(КонтактПокупателя);
        // Вызываем метод записи атрибута
        Объект.WriteAttribute();
    КонецЕсли;
КонецПроцедуры

Теперь соберем все воедино в логическую цепочку формирования чека. Рассмотрим правильную последовательность вызовов методов:

  1. Установка CheckMode = 0.
  2. Запись атрибута 1008 через WriteAttribute().
  3. Открытие чека методом OpenCheck().
  4. Регистрация позиций (продажа) методами Registration() или BeginItem() / EndItem().
  5. Закрытие чека методом CloseCheck().

Если мы изменим эту последовательность (например, установим CheckMode после OpenCheck), драйвер проигнорирует настройку, и лента будет расходоваться в обычном режиме.

Разбираем возможные ошибки и влияние прошивки

Рассмотрим ситуацию, с которой часто сталкиваются коллеги: при использовании CheckMode = 0 и попытке закрыть чек типом оплаты "Наличные" (TypeClose = 0), касса выдает ошибку. Выясним причину этого поведения.

В некоторых старых версиях прошивок ККТ и релизах драйвера 8.х существовало жесткое ограничение: электронный чек считался несовместимым с наличным расчетом, так как предполагалось, что при наличном расчете клиент находится непосредственно у кассы и обязан получить бумажный документ. Чтобы обойти это ограничение, рекомендуется:

  1. Обновить драйвер АТОЛ до максимально возможной версии в ветке 8 (например, 8.16.06).
  2. Убедиться, что прошивка ККТ поддерживает работу с ФФД 1.05 или 1.1, где логика электронных чеков более гибкая.
  3. В некоторых моделях вместо CheckMode в последних версиях 8-го драйвера появилось свойство ElectronicCheck. Попробуйте установить его в значение True, если стандартный метод не срабатывает.

Влияние настроек самого аппарата

Проанализируем ситуацию, когда код написан верно, но чек все равно частично печатается. Важно понимать, что CheckMode = 0 отключает печать именно фискальной части чека. Однако касса может продолжать печатать:

Для полной "тишины" необходимо зайти в "Тест драйвера ККМ", перейти в "Настройки параметров оборудования" и проверить настройки печати нефискальных документов. Также стоит обратить внимание на параметр "Автоматическая отрезка", который иногда провоцирует микродвижения вала даже при отсутствии текста.

Таким образом, мы рассмотрели комплексный подход к отключению печати. Главное — помнить про установку CheckMode до открытия чека, обязательную передачу тега 1008 и проверку совместимости прошивки кассы с выбранным режимом работы.

← На главную