В процессе работы с торговыми решениями на базе 1С, такими как Управление торговлей 11, часто возникает необходимость распечатать дубликат чека непосредственно из фискального регистратора. Типовой функционал программы не всегда содержит явную кнопку для выполнения этой операции, хотя современные драйверы ККТ (особенно Атол и Штрих-М) поддерживают такую команду на аппаратном уровне. В этой статье мы подробно разберем, как реализовать печать копии чека программно, какие настройки оборудования для этого требуются и на что обратить внимание, чтобы не нарушить фискальный учет. Для быстрой реализации этой возможности можно использовать доработку для печати копии чека в 1С:УТ 11.5.
Прежде всего, проанализируем ситуацию: нам нужно получить бумажную копию уже пробитого чека. Важно понимать разницу между печатью копии средствами кассы и повторным формированием чека в 1С. Если мы просто заново запустим процедуру пробития чека из документа, программа создаст новый фискальный признак, присвоит новый номер документа и отправит данные в ОФД повторно. Это приведет к задвоению выручки в налоговой отчетности. Наша же цель — вызвать команду драйвера, которая заставит ККТ распечатать данные из своей внутренней памяти (Журнала чеков) без фискализации новой операции.
Основная причина, по которой метод печати копии может не срабатывать (особенно для последнего чека), заключается в настройках самой кассы. Если в ККТ отключена функция ведения электронного журнала или сохранения чеков в буфере, касса «забывает» содержимое документа сразу после его закрытия.
Рассмотрим, как проверить настройки для популярных моделей:
НапечататьКопиюЧека может игнорировать последний пробитый документ.В современных конфигурациях 1С, использующих Библиотеку подключаемого оборудования (БПО), взаимодействие с кассой идет через объект драйвера. Для выполнения печати нам понадобятся два ключевых параметра: идентификатор устройства и номер чека (ФД), который мы хотим продублировать.
Разберем пример кода, который можно разместить в расширении или во внешней обработке для вызова функции:
// Пример вызова метода печати копии
Результат = ОбъектДрайвера.НапечататьКопиюЧека(ИДУстройства, НомерЧека);
Если Не Результат Тогда
ОписаниеОшибки = "";
ОбъектДрайвера.ПолучитьОшибку(ОписаниеОшибки);
Сообщить("Ошибка печати копии: " + ОписаниеОшибки);
КонецЕсли;
Рассмотрим подробнее параметры этого метода:
ИДУстройства — это уникальный идентификатор подключенного оборудования в системе 1С. Его можно получить через МенеджерОборудования.НомерЧека — это номер фискального документа (ФД). Если передать значение "0", большинство драйверов попытаются распечатать последний закрытый документ в текущей смене.Для того чтобы код успешно выполнился, нам нужно правильно инициализировать объект драйвера. Выясним, как это сделать в контексте УТ 11. Мы не можем просто создать объект, нам нужно подключиться к уже используемому устройству.
// Получаем список подключенного оборудования (ККТ)
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияККТ", ЭтотОбъект);
МенеджерОборудованияКлиент.ПодключитьОборудованиеПоИдентификатору(Оповещение, ИдентификаторУстройства);
// В процедуре обратного вызова работаем с объектом
Процедура ПослеПодключенияККТ(РезультатВыполнения, Параметры) Экспорт
Если РезультатВыполнения.Результат Тогда
ОбъектДрайвера = РезультатВыполнения.ОбъектДрайвера;
ПараметрыПодключения = РезультатВыполнения.ПараметрыПодключения;
// Вызываем печать копии последнего чека
// НомерЧека = 0 для печати последнего
ОбъектДрайвера.НапечататьКопиюЧека(ПараметрыПодключения.ИДУстройства, 0);
КонецЕсли;
КонецПроцедуры
Проанализируем несколько критических моментов, с которыми сталкиваются разработчики:
НапечататьКопиюЧека обычно работает только с документами текущей открытой смены. Если смена была закрыта (Z-отчет), данные в оперативной памяти ККТ обнуляются, и распечатать копию вчерашнего чека стандартной командой драйвера не получится.Если программная печать из ККТ по каким-то причинам недоступна (например, чек был пробит в прошлую смену), рассмотрим альтернативные пути решения задачи:
1. Печать из Личного кабинета ОФД. Все чеки хранятся у оператора фискальных данных. Вы можете зайти в личный кабинет, найти нужный документ по дате или номеру и отправить его на печать на обычный принтер. Это юридически значимый документ.
2. Отправка электронного чека. Согласно 54-ФЗ, электронный чек приравнивается к бумажному. В 1С Управление торговлей 11 можно инициировать повторную отправку чека на e-mail или телефон покупателя, если эти данные были введены при продаже. Это делается через типовые механизмы работы с очередью чеков ОФД.
3. Печатная форма «Товарный чек». В конфигурации реализована возможность печати товарного чека. Хотя он не является фискальным документом, он содержит полный перечень товаров и сумму, что часто достаточно для покупателя.
Мы выяснили, что для успешной печати копии чека в 1С:УТ 11 необходимо сочетание двух факторов: правильной настройки Параметров ККТ (включение сохранения чеков в памяти) и корректного вызова метода НапечататьКопиюЧека через объект драйвера БПО. Данный метод является безопасным, так как не создает новых записей в фискальном накопителе и не дублирует данные в налоговую службу.