Как распечатать товарный чек (пречек) в 1С:Розница без его фискализации?

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

Многие пользователи и разработчики сталкиваются с задачей вывода на печать состава корзины товаров до того, как будет произведен расчет с покупателем. Это необходимо для согласования списка покупок или как «предварительный чек». В данной статье мы разберем, как реализовать такую возможность, не нарушая работу кассового оборудования и требования 54-ФЗ.

Понимание архитектуры работы оборудования

В современных конфигурациях 1С, использующих Библиотеку подключаемого оборудования (БПО), процесс печати чека жестко завязан на логику фискализации. Когда вы нажимаете кнопку «Пробить чек», система проходит полный цикл: открытие смены, открытие чека на устройстве, передача состава, фискализация и закрытие. Попытки просто «подменить» одну команду на другую в типовом модуле часто приводят к ошибкам, так как вызываемые функции ожидают от ККТ подтверждения фискальных операций.

Для решения задачи нам потребуется разделить понятия «Фискальный чек» и «Текстовый документ».

Вариант 1: Использование механизма печати текстовых документов

Наиболее корректным способом является использование встроенного в БПО метода для печати текстовых данных. Вам необходимо использовать объект МенеджерОборудованияКлиент и метод НачатьПечатьТекстовыхДокументов. Суть метода заключается в том, что вы отправляете на устройство массив строк, которые принтер печатает как обычный текст, не регистрируя их в ОФД.

Для реализации через расширение, рассмотрим ключевые действия:

  1. Включите в расширение модуль МенеджерОборудованияКлиент и ПодключаемоеОборудованиеУниверсальныйДрайверКлиент.
  2. Вместо вызова стандартного процесса CheckFiscalization (фискализация), необходимо перехватить команду и подменить ее на PrintTextDocument.

Пример логики подмены команды в расширении:


// В обработчике вызова команды
Контекст = Новый Структура;
Контекст.Вставить("ВыполняемаяКоманда", "PrintTextDocument");
// Важно: укажите тип оборудования как ПринтерЧеков, а не ККТ
ТипОборудования = "ПринтерЧеков";
// Далее вызываем процедуру печати текстового документа
МенеджерОборудованияКлиент.НачатьПечатьТекстовыхДокументов(Оповещение, УникальныйИдентификатор, Параметры, ИдентификаторУстройства);

Вариант 2: Использование отложенных чеков как альтернатива

Если задача заключается не только в печати, но и в сохранении состояния корзины, рекомендуем воспользоваться типовым функционалом Отложенные чеки. Этот подход является «чистым» с точки зрения конфигурации и не требует вмешательства в программный код фискализации.

Алгоритм действий следующий:

  1. Пользователь добавляет товары в РМК.
  2. Нажимает кнопку «Отложить чек». Система сохраняет документ ЧекККМ в статусе «Отложенный» (не пробитый).
  3. Для печати пречека вы используете штатную процедуру печати табличной части этого отложенного документа.
  4. После того как покупатель ознакомился со списком, вы возвращаете чек из отложенных и продолжаете стандартный процесс пробития.

Важные рекомендации и предостережения

При реализации собственного функционала печати необходимо учитывать следующее:

В заключение, для реализации кнопки «Пречек» на форме РМК, рекомендуем создать внешнюю команду или кнопку в расширении, которая будет считывать табличную часть текущего документа, формировать текстовый макет и отправлять его напрямую на устройство через МенеджерОборудованияВызовСервера. Это позволит вам достичь желаемого результата без риска остановки продаж из-за некорректной фискализации.

← На главную