Как настроить одновременную печать чека на ККТ и принтер чеков в 1С:Розница 2.2

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

В процессе автоматизации розничной торговли часто возникает задача дублирования информации о продаже на несколько печатающих устройств. Например, когда необходимо выдать покупателю фискальный чек, а для внутреннего учета, кухни или склада распечатать копию чека (пречек или товарный чек) на обычном термопринтере. В программе 1С:Розница 2.2 стандартный механизм РМК (Рабочего места кассира) обычно ориентирован на работу с одним устройством печати фискальных документов. В этой статье мы подробно разберем, как реализовать одновременную или последовательную печать на Viki Print 57F и нефискальный принтер чеков.

Анализ задачи: можно ли печатать «одновременно»?

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

Рассмотрим основные способы решения этой задачи:

  1. Использование штатного механизма печати товарных чеков.
  2. Программная доработка через расширение конфигурации.
  3. Использование механизмов шаблонов чеков.

Способ 1: Использование штатного функционала «Принтер документов»

Проанализируем возможности системы без внесения изменений в программный код. В 1С:Розница предусмотрен механизм печати товарных чеков. Если настроить обычный принтер чеков как «Принтер чеков» в справочнике подключаемого оборудования, можно добиться желаемого результата.

Разберем по шагам настройку оборудования:

  1. Перейдем в раздел Администрирование — Подключаемое оборудование.
  2. Подключим Viki Print 57F в категорию ККТ с передачей данных.
  3. В этой же форме добавим новое устройство в категорию Принтеры чеков. Для этого выберем драйвер 1С:Принтер чеков (NativeApi) или настроим его как Windows-принтер через Generic/Text Only драйвер.
  4. В настройках Магазина или Рабочего места установим флаг Печать товарного чека.

При такой настройке, после закрытия чека на фискальном регистраторе, система предложит или автоматически (в зависимости от настроек) отправит документ на печать на второе устройство. Это наиболее безопасный способ, не требующий работы программиста.

Способ 2: Программная доработка через расширение (Рекомендуемый)

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

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

Рассмотрим примерную схему кода:

Нам необходимо перехватить процедуру в модуле МенеджерОборудованияВызовСервера или непосредственно в форме РМК. Чаще всего интересующая нас функция — ПечатьЧека.


&После("ПечатьЧека")
Процедура Расш_ПечатьЧекаПосле(Отказ, ПараметрыЧека, Оповещение)
    // Проверяем, что фискальный чек пробит успешно
    Если Не Отказ Тогда
        // Находим наше нефискальное устройство
        ПринтерЧеков = НайтиПринтерПоНаименованию("МойПринтерЧеков");
        
        // Формируем данные для печати на принтер чеков
        // Можно использовать типовой механизм шаблонов
        ДанныеПечати = СформироватьТекстЧекаПоШаблону(ПараметрыЧека);
        
        // Отправляем на печать
        МенеджерОборудованияКлиент.ВыполнитьКомандуПечати(ПринтерЧеков, ДанныеПечати);
    КонецЕсли;
КонецПроцедуры

В данном примере мы используем аннотацию &После, которая позволяет выполнить наш код сразу после завершения основной логики системы.

Способ 3: Настройка шаблонов чеков

Выясним, как использовать справочник ШаблоныЧековККМ для нашей задачи. В 1С:Розница печать на нефискальные принтеры часто опирается на текстовые шаблоны.

Разберем алгоритм создания дубликата:

Технические нюансы подключения оборудования

Проанализируем важные детали, без которых стабильная работа двух устройств невозможна:

  1. Конфликт портов: Если Viki Print 57F подключен через USB-эмуляцию COM-порта (например, COM3), а принтер чеков также использует виртуальный COM-порт, обязательно разнесите их на разные номера в диспетчере устройств Windows.
  2. Драйверы: Для Viki Print используйте актуальный драйвер «Дримкас». Для принтера чеков лучше всего подходит системный драйвер Windows, если принтер определяется как принтер в системе.
  3. Очередь печати: При использовании программного метода (Способ 2) убедитесь, что вы не блокируете основной поток выполнения РМК. Если принтер чеков «зависнет», это не должно мешать кассиру обслуживать следующего клиента.

Выясним причину возможных сбоев

Если печать на принтер чеков не происходит, проанализируем следующие моменты:

Заключение

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

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

← На главную