В современной практике автоматизации бизнеса часто возникает ситуация, когда кассовый аппарат (ККТ) используется исключительно для фискализации безналичных платежей от физических лиц. В таких случаях устройство может располагаться в серверной или в офисе без прямого контакта с покупателями. Печать бумажной ленты в этой ситуации становится бессмысленной тратой расходных материалов. Разберем подробно, как решить проблему автоматической печати бумажного чека в конфигурации 1С:Управление холдингом (УХ) при работе с оборудованием АТОЛ.
Типичная ситуация, описанная пользователями: в настройках драйвера отключены отчеты об открытии и закрытии смены, в документе 1С указано, что чек должен быть электронным, но при нажатии кнопки «Пробить чек» принтер всё равно выдает бумажную копию. Это происходит потому, что для полной отмены печати должен совпасть ряд условий: корректная передача флага в коде программы, наличие контактных данных покупателя и специфические настройки в энергонезависимой памяти самого кассового аппарата.
Проанализируем механизм взаимодействия 1С с драйвером подключаемого оборудования. В конфигурациях, построенных на библиотеке стандартных подсистем (БСП), к которым относится и 1С:УХ, за печать чека отвечает специализированный метод. Чтобы принудительно отключить печать, нам необходимо вмешаться в код обработки, которая формирует запрос к кассе.
Найдем в коде метод СформироватьЧек. Рассмотрим его параметры подробнее. Основной интерес для нас представляет параметр Электронно (в англоязычном варианте Electronically). Это значение типа Boolean, которое сообщает драйверу, нужно ли физически выводить данные на термопринтер.
Рассмотрим пример того, как должен выглядеть вызов метода с передачей признака электронного чека:
// Фрагмент кода для принудительного формирования только электронного чека
Результат = МенеджерОборудованияКлиент.СформироватьЧек(
ИДУстройства, // Идентификатор кассового аппарата
Истина, // Параметр Электронно (Electronically) — ставим в Истина
ДанныеЧека, // Подготовленная XML-структура с составом чека
ВыходныеПараметры // Результат выполнения операции
);
Если в вашей версии 1С:УХ отсутствует функциональная опция «Отправлять электронный чек», как в ERP или КА, этот флаг необходимо «взводить» программно непосредственно перед вызовом печати. Проанализируем ситуацию: если передать Истина, драйвер АТОЛ получит команду на формирование фискального признака без активации протяжки ленты.
Даже если программа 1С передает верные команды, внутренние настройки ККТ могут принудительно дублировать чек на бумагу. Рассмотрим, как изменить параметры в самом устройстве через «Тест драйвера ККТ»:
Важно: Для корректной работы этих функций прошивка вашего АТОЛ должна быть актуальной (рекомендуется версия не ниже 5.7.х). На старых версиях платформы 2.5 полное отключение печати штатными средствами часто было невозможно.
Выясним важную юридическую и техническую причину, по которой чек может продолжать печататься. Согласно ФФД (формату фискальных данных), электронный чек может заменить бумажный только в том случае, если в нем указан абонентский номер или адрес электронной почты покупателя (тег 1008).
Если в 1С при формировании ДанныеЧека поле контактной информации остается пустым, ККТ АТОЛ автоматически распечатает бумажный чек, так как по закону покупатель обязан получить подтверждение расчета хотя бы в одном из видов. Разберем по шагам проверку заполнения данных:
atol_dtd.log): если там отсутствует тег 1008, печать на бумаге неизбежна.Если программные методы в 1С и настройки драйвера не помогают, проанализируем альтернативные варианты:
Подводя итог, можно сказать, что решение задачи в 1С:Управление холдингом требует комплексного подхода: принудительной установки Electronically = Истина в коде, обязательной передачи контактов покупателя в тег 1008 и активации режима экономии ленты в параметрах ККТ через драйвер версии 10.х.