При оформлении продаж через контрольно-кассовую технику с передачей данных (онлайн-кассы) часто возникает необходимость формировать чек исключительно в электронном виде с отправкой в ОФД и покупателю (по SMS или на e-mail), без физической печати чековой ленты. Разберем по шагам, как настроить беспечатный режим для кассы АТОЛ 30Ф при работе в конфигурации 1С:Управление торговлей 10.3 на платформе 1С:Предприятие.
В типовых механизмах взаимодействия с подключаемым оборудованием БПО (Библиотека подключаемого оборудования) и универсальных драйверах формирование XML-пакета чека или вызов метода драйвера опирается на структуру параметров фискализации. За признак формирования только электронной версии документа отвечает параметр Электронно типа Булево.
По умолчанию в процедурах формирования параметров фискализации чека этот флаг инициализируется значением Ложь. Чтобы отключить печать на кассовой ленте, найдем функцию формирования параметров чека в обработке обслуживания ККТ или общем модуле и установим данный флаг в значение Истина.
Посмотрим на пример структуры параметров операции фискализации чека:
Функция ПараметрыОперацииФискализацииЧека() Экспорт
ПараметрыЧека = Новый Структура;
// Указываем признак формирования чека в электронном виде без печати
ПараметрыЧека.Вставить("Электронно", Истина);
// Заполнение остальных обязательных реквизитов чека
ПараметрыЧека.Вставить("АдресПокупателя", ""); // Номер телефона или Email
ПараметрыЧека.Вставить("ТаблицаТоваров", Новый ТаблицаЗначений);
ПараметрыЧека.Вставить("ТаблицаОплат", Новый ТаблицаЗначений);
Возврат ПараметрыЧека;
КонецФункции
Важно учитывать требования формата фискальных документов (ФФД). Кассовый аппарат не имеет права не печатать чек, если покупатель не предоставил свои контактные данные для доставки чека в электронной форме. За эти данные отвечает реквизит 1008 (Адрес покупателя / CustomerEmail / CustomerPhone).
Проанализируем логику работы ККТ и драйвера:
Электронно передан со значением Истина, но тег 1008 не заполнен (адрес электронной почты или номер телефона пуст), ККТ проигнорирует запрет печати и принудительно распечатает бумажный чек.Рассмотрим пример заполнения параметров перед выполнением команды через универсальный драйвер:
// Пример заполнения реквизитов чека перед отправкой на ККТ
ПараметрыЧека.Вставить("Электронно", Истина);
ПараметрыЧека.Вставить("АдресПокупателя", АдресЭлектроннойПочтыИлиТелефон);
РезультатВыполнения = ПодключаемоеОборудованиеУниверсальныйДрайверКлиент.ВыполнитьКоманду(
"ФискализацияЧека",
мВходныеПараметры,
мВыходныеПараметры,
Объект.Драйвер,
мПараметрыУстройства,
мПараметрыПодключения
);
Если взаимодействие с ККТ выполняется напрямую через внешнюю компоненту драйвера АТОЛ (ДТО 10), а не через унифицированный интерфейс БПО, запрет печати настраивается вызовом соответствующего метода драйвера перед регистрацией или закрытием чека.
В ДТО 10 для запрета печати используется свойство LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY. Разберем алгоритм прямого обращения к драйверу:
LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY в значение True (или 1).Посмотрим на пример кода при прямом взаимодействии с драйвером АТОЛ 10.x:
// Установка тега 1008 (Адрес получателя)
Драйвер.setParam(1008, "client@example.com");
Драйвер.utilFormTlv();
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_TAG_VALUE, Драйвер.LIBFPTR_PARAM_TAG_VALUE);
// Включение признака отправки чека электронно (без печати)
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, Истина);
// Закрытие чека
Драйвер.closeReceipt();
Если после передачи всех параметров чек продолжает печататься, выясним возможные аппаратные причины:
Электронно = Истина отключает печать только фискальных чеков расчетов. Печать отчетов об открытии и закрытии смены (Z-отчетов) регулируется отдельно через параметры драйвера или настройки шаблонов в утилите «Тест драйвера ККТ».