Как организовать выбор печати между ККТ АТОЛ и принтером чеков в 1С:Розница 2

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

В процессе автоматизации розничной торговли часто возникает задача разделения потоков печати. Например, когда часть товаров должна проходить через фискальный регистратор (онлайн-кассу), а часть — оформляться как внутренний документ или товарный чек без фиксации в налоговой. Рассмотрим подробнее, как реализовать возможность выбора устройства печати в конфигурации 1С:Розница 2.

Анализ штатных возможностей программы

Для начала разберем, что предлагает типовой функционал 1С:Розница. В режиме Рабочего места кассира (РМК) программа ориентирована на строгое соблюдение законодательства (ФЗ-54), поэтому при нажатии кнопки оплаты система автоматически инициирует процесс фискализации чека на подключенном оборудовании. Однако существуют обходные пути:

  1. Режим «Чеки» вне интерфейса РМК: Если зайти в список документов «Чеки», можно выбрать конкретный документ и распечатать «Товарный чек». При этом в настройках принтера можно указать обычный принтер чеков (Windows-принтер).
  2. Использование нефискальных документов на ККТ: Фискальные регистраторы АТОЛ поддерживают печать текстовых документов. Это означает, что одно и то же устройство может печатать и официальные чеки, и просто текстовую информацию. Однако в типовом РМК нет кнопки «Печать без фискализации».
  3. Распределение по складам и организациям: В 1С можно настроить автоматическое распределение товаров. Если привязать «серые» товары к одной организации (или складу), а «белые» к другой, система сама предложит пробить два разных чека на разные устройства. Но этот метод не позволяет кассиру делать выбор вручную для одной и той же позиции.

Вариант 1: Использование штатной функции «Товарный чек»

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

При оформлении продажи кассир может выйти из интерфейса РМК (если это разрешено правами доступа), найти текущий чек и нажать кнопку «Печать». В появившемся списке нужно выбрать «Товарный чек». Если принтер чеков настроен в системе Windows как принтер по умолчанию для этого типа документов, печать уйдет на него. Это решение рабочее, но крайне неудобное для потоковых продаж, так как требует лишних кликов и переключения интерфейсов.

Вариант 2: Программная доработка через расширение конфигурации

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

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

Рассмотрим пример логики, которую можно внедрить в процедуру печати:


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

При таком подходе, если выбран нефискальный режим, 1С не будет обращаться к драйверу ККТ для открытия фискального чека, а просто отправит сформированный макет на Windows-принтер.

Вариант 3: Использование драйвера АТОЛ 10 для нефискальной печати

Если вы хотите использовать только одно устройство (ККТ АТОЛ) для обоих видов задач, нужно задействовать методы драйвера для печати текста. Современные драйверы позволяют выводить информацию на чековую ленту без записи в фискальный накопитель (ФН).

Выясним причину, почему это сложно сделать в стандарте: типовой модуль МенеджерОборудованияВызовСервера всегда формирует XML-пакет для фискализации. Чтобы напечатать «просто текст», нужно программно сформировать объект драйвера и использовать метод printText.

Пример структуры кода для печати нефискального текста через драйвер АТОЛ 10:


// Пример инициализации драйвера и печати текста
ОбъектДрайвера = Новый ("AddIn.Atol_KKM_10");
ОбъектДрайвера.set_DeviceEnabled(Истина);

// Начинаем нефискальный документ
ОбъектДрайвера.beginNonfiscalDocument();

// Печатаем строки
ОбъектДрайвера.set_Text("ТОВАРНЫЙ ЧЕК (НЕФИСКАЛЬНЫЙ)");
ОбъектДрайвера.printText();
ОбъектДрайвера.set_Text("Товар: Сигареты");
ОбъектДрайвера.printText();

// Завершаем и отрезаем ленту
ОбъектДрайвера.endNonfiscalDocument();
ОбъектДрайвера.cut();

Важно: При использовании этого метода данные о продаже не попадут в ОФД, но кассовая смена в 1С все равно должна быть открыта, чтобы документ «Чек ККМ» мог быть проведен в системе для учета остатков.

Риски и контроль маркировки (Честный ЗНАК)

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

Итоговые рекомендации

Если задача стоит остро и вы готовы к техническим изменениям, наиболее стабильным решением будет создание расширения, которое добавляет в РМК кнопку «Печать нефискального чека». Эта кнопка должна:

  1. Проводить документ Чек ККМ в базе 1С (для списания остатков).
  2. Формировать печатную форму на основе макета «Товарный чек».
  3. Отправлять её на принтер, установленный в системе как «Принтер чеков».

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

← На главную