Как отключить печать бумажного чека на ККТ АТОЛ 30Ф в 1С:Управление торговлей 10.3

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

При оформлении продаж через контрольно-кассовую технику с передачей данных (онлайн-кассы) часто возникает необходимость формировать чек исключительно в электронном виде с отправкой в ОФД и покупателю (по SMS или на e-mail), без физической печати чековой ленты. Разберем по шагам, как настроить беспечатный режим для кассы АТОЛ 30Ф при работе в конфигурации 1С:Управление торговлей 10.3 на платформе 1С:Предприятие.

Передача флага беспечатного чека через параметры фискализации 1С

В типовых механизмах взаимодействия с подключаемым оборудованием БПО (Библиотека подключаемого оборудования) и универсальных драйверах формирование XML-пакета чека или вызов метода драйвера опирается на структуру параметров фискализации. За признак формирования только электронной версии документа отвечает параметр Электронно типа Булево.

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

Посмотрим на пример структуры параметров операции фискализации чека:


Функция ПараметрыОперацииФискализацииЧека() Экспорт

    ПараметрыЧека = Новый Структура;
    
    // Указываем признак формирования чека в электронном виде без печати
    ПараметрыЧека.Вставить("Электронно", Истина);
    
    // Заполнение остальных обязательных реквизитов чека
    ПараметрыЧека.Вставить("АдресПокупателя", ""); // Номер телефона или Email
    ПараметрыЧека.Вставить("ТаблицаТоваров", Новый ТаблицаЗначений);
    ПараметрыЧека.Вставить("ТаблицаОплат",   Новый ТаблицаЗначений);

    Возврат ПараметрыЧека;

КонецФункции

Обязательное условие: передача контактных данных покупателя (Тег 1008)

Важно учитывать требования формата фискальных документов (ФФД). Кассовый аппарат не имеет права не печатать чек, если покупатель не предоставил свои контактные данные для доставки чека в электронной форме. За эти данные отвечает реквизит 1008 (Адрес покупателя / CustomerEmail / CustomerPhone).

Проанализируем логику работы ККТ и драйвера:

  1. Если параметр Электронно передан со значением Истина, но тег 1008 не заполнен (адрес электронной почты или номер телефона пуст), ККТ проигнорирует запрет печати и принудительно распечатает бумажный чек.
  2. Для успешного отключения бумажного носителя необходимо гарантировать, что перед вызовом команды фискализации в структуру чека передан корректный телефон покупателя или его e-mail.

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


// Пример заполнения реквизитов чека перед отправкой на ККТ
ПараметрыЧека.Вставить("Электронно", Истина);
ПараметрыЧека.Вставить("АдресПокупателя", АдресЭлектроннойПочтыИлиТелефон);

РезультатВыполнения = ПодключаемоеОборудованиеУниверсальныйДрайверКлиент.ВыполнитьКоманду(
    "ФискализацияЧека",
    мВходныеПараметры,
    мВыходныеПараметры,
    Объект.Драйвер,
    мПараметрыУстройства,
    мПараметрыПодключения
);

Особенности драйвера АТОЛ (ДТО 10) и прямого вызова API

Если взаимодействие с ККТ выполняется напрямую через внешнюю компоненту драйвера АТОЛ (ДТО 10), а не через унифицированный интерфейс БПО, запрет печати настраивается вызовом соответствующего метода драйвера перед регистрацией или закрытием чека.

В ДТО 10 для запрета печати используется свойство LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY. Разберем алгоритм прямого обращения к драйверу:

  1. Открываем чек нужного типа (приход, возврат прихода).
  2. Записываем значение тега 1008 с контактными данными покупателя.
  3. Устанавливаем свойство драйвера LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY в значение True (или 1).
  4. Регистрируем позиции чека, оплаты и закрываем фискальный документ.

Посмотрим на пример кода при прямом взаимодействии с драйвером АТОЛ 10.x:


// Установка тега 1008 (Адрес получателя)
Драйвер.setParam(1008, "client@example.com");
Драйвер.utilFormTlv();
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_TAG_VALUE, Драйвер.LIBFPTR_PARAM_TAG_VALUE);

// Включение признака отправки чека электронно (без печати)
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, Истина);

// Закрытие чека
Драйвер.closeReceipt();

Аппаратные и программные ограничения касс АТОЛ

Если после передачи всех параметров чек продолжает печататься, выясним возможные аппаратные причины:

  1. Версия драйвера: Устаревшие драйверы АТОЛ версий 8.x и 9.x некорректно обрабатывают или полностью игнорируют команды беспечатного режима из 1С. Рекомендуется обновить интеграционную компоненту на ДТО 10.x.
  2. Платформа и прошивка ККТ: На старых прошивках платформы 2.5 беспечатный режим может не поддерживаться на уровне микропрограммы. Корректная обработка флага гарантируется на кассах АТОЛ 30Ф под управлением Платформы 5.0.
  3. Сервисные лицензии: В ряде релизов внутреннего ПО касс АТОЛ на платформе 5.0 для работы расширенных беспечатных сценариев требуется действующая сервисная подписка на обновления ПО ККТ.
  4. Отчеты смены: Передача параметра Электронно = Истина отключает печать только фискальных чеков расчетов. Печать отчетов об открытии и закрытии смены (Z-отчетов) регулируется отдельно через параметры драйвера или настройки шаблонов в утилите «Тест драйвера ККТ».
← На главную