Многие пользователи и разработчики сталкиваются с задачей вывода на печать состава корзины товаров до того, как будет произведен расчет с покупателем. Это необходимо для согласования списка покупок или как «предварительный чек». В данной статье мы разберем, как реализовать такую возможность, не нарушая работу кассового оборудования и требования 54-ФЗ.
В современных конфигурациях 1С, использующих Библиотеку подключаемого оборудования (БПО), процесс печати чека жестко завязан на логику фискализации. Когда вы нажимаете кнопку «Пробить чек», система проходит полный цикл: открытие смены, открытие чека на устройстве, передача состава, фискализация и закрытие. Попытки просто «подменить» одну команду на другую в типовом модуле часто приводят к ошибкам, так как вызываемые функции ожидают от ККТ подтверждения фискальных операций.
Для решения задачи нам потребуется разделить понятия «Фискальный чек» и «Текстовый документ».
Наиболее корректным способом является использование встроенного в БПО метода для печати текстовых данных. Вам необходимо использовать объект МенеджерОборудованияКлиент и метод НачатьПечатьТекстовыхДокументов. Суть метода заключается в том, что вы отправляете на устройство массив строк, которые принтер печатает как обычный текст, не регистрируя их в ОФД.
Для реализации через расширение, рассмотрим ключевые действия:
МенеджерОборудованияКлиент и ПодключаемоеОборудованиеУниверсальныйДрайверКлиент.CheckFiscalization (фискализация), необходимо перехватить команду и подменить ее на PrintTextDocument.Пример логики подмены команды в расширении:
// В обработчике вызова команды
Контекст = Новый Структура;
Контекст.Вставить("ВыполняемаяКоманда", "PrintTextDocument");
// Важно: укажите тип оборудования как ПринтерЧеков, а не ККТ
ТипОборудования = "ПринтерЧеков";
// Далее вызываем процедуру печати текстового документа
МенеджерОборудованияКлиент.НачатьПечатьТекстовыхДокументов(Оповещение, УникальныйИдентификатор, Параметры, ИдентификаторУстройства);
Если задача заключается не только в печати, но и в сохранении состояния корзины, рекомендуем воспользоваться типовым функционалом Отложенные чеки. Этот подход является «чистым» с точки зрения конфигурации и не требует вмешательства в программный код фискализации.
Алгоритм действий следующий:
ЧекККМ в статусе «Отложенный» (не пробитый).При реализации собственного функционала печати необходимо учитывать следующее:
В заключение, для реализации кнопки «Пречек» на форме РМК, рекомендуем создать внешнюю команду или кнопку в расширении, которая будет считывать табличную часть текущего документа, формировать текстовый макет и отправлять его напрямую на устройство через МенеджерОборудованияВызовСервера. Это позволит вам достичь желаемого результата без риска остановки продаж из-за некорректной фискализации.