Как программно пробить чек на ККТ АТОЛ без печати бумажного чека?

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

В современных условиях ведения бизнеса часто возникает необходимость автоматизировать продажи таким образом, чтобы клиент получал чек исключительно в электронном виде на email или номер телефона. Это особенно актуально для интернет-магазинов, курьерских служб или случаев, когда покупателю не требуется бумажная копия. Разберем, как реализовать этот процесс в 1С при работе с кассами АТОЛ.

Основные требования 54-ФЗ и технические особенности

Прежде чем приступать к программной реализации, важно помнить о главном требовании законодательства: если вы не печатаете бумажный чек, вы обязаны направить электронную версию покупателю через ОФД. Для этого в ККТ передается специальный реквизит — тег 1008 (контактные данные: email или номер телефона). Если этот тег не заполнен или передан некорректно, большинство касс проигнорируют вашу команду об отключении печати и все равно выведут чек на ленту, чтобы зафиксировать операцию.

Реализация для драйверов АТОЛ (версия 8.x)

В старых версиях драйверов (ДТО 8) управление печатью осуществляется через свойство CheckMode. Рассмотрим по шагам, как правильно настроить формирование чека.

Для отключения печати необходимо установить режим 0. Однако существует строгая последовательность команд, нарушение которой приведет к сбою или печати бумажного носителя.

Посмотрим на пример кода, который обеспечивает корректную регистрацию чека без печати:


// CheckMode - Режим формирования чека:
// 0 - только в электронном виде без печати на чековой ленте
// 1 - печатать на чековой ленте
ОбъектECR.NewDocument();
ОбъектECR.CheckType = 1;
ОбъектECR.CheckMode = 0; 
ОбъектECR.OpenCheck();

// 1008 Всегда передаем ПЕРВЫМ после OpenCheck()
ОбъектECR.AttrNumber = 1008;
ОбъектECR.AttrValue  = \"email_или_телефон_клиента\";
ОбъектECR.WriteAttribute();

Обратите внимание: использование метода NewDocument() является рекомендуемым, так как он выполняет сервисную очистку состояния кассы (отменяет текущие незавершенные документы, проверяет статус и устанавливает нужный режим), что предотвращает зависание оборудования.

Нюансы работы с современными драйверами (ДТО 10+)

В актуальных версиях драйверов АТОЛ (ДТО 10 и выше) подход стал более стандартизированным. Для того чтобы чек не печатался, используется параметр LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, которому необходимо присвоить значение true.

Если вы переходите на новые драйверы, рекомендуется пересмотреть логику интеграции. Современные методы позволяют более гибко управлять состоянием ККТ и обеспечивают лучшую стабильность при интенсивном потоке продаж.

Анализ текущего кода и типичные ошибки

Многие разработчики используют стандартные механизмы работы через FR_COM или AddIn.Atol.Fptr. Давайте проанализируем, почему чек иногда «не слушается» команд:

  1. Неверная последовательность: Попытка записи атрибутов до вызова метода OpenCheck().
  2. Отсутствие данных покупателя: Если переменная ЕмейлКлиентаДляОФД пустая, касса считает, что не может выполнить требование 54-ФЗ, и принудительно включает печать.
  3. Состояние кассы: Если в кассе «висит» открытый чек от предыдущей операции, новые настройки могут не примениться. Всегда проверяйте состояние через CancelCheck() или используйте NewDocument().

Ниже приведен фрагмент реализации, который часто используется в типовых конфигурациях для регистрации продаж:


// Регистрация товаров и атрибутов
Объект.Mode = 1; 
Объект.Password = Пароль; 
Объект.SetMode();

// Обязательно указываем электронный адрес для ОФД
Если ЕмейлКлиентаДляОФД <> \"\" Тогда
    Объект.AttrNumber = 1008;
    Объект.AttrValue = СокрЛп(ЕмейлКлиентаДляОФД);
    Объект.WriteAttribute();
КонецЕсли;

// Регистрация позиций товара...
// Завершение чека...

Практические советы для стабильной работы

Для того чтобы ваша система работала бесперебойно при отсутствии бумажной ленты:

Следуя этим рекомендациям и соблюдая порядок вызова функций, вы сможете реализовать полностью безбумажный процесс оформления продаж, соответствующий всем законодательным нормам.

← На главную