Как распределить пробитие товаров по разным ККМ для одной организации в 1С:Розница 2

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

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

Архитектурное устройство и ограничения типовой конфигурации

Для понимания того, почему 1С не позволяет «из коробки» свободно отправлять позиции одного чека на две разные ККМ одной организации, разберем базовую логику работы кассового модуля:

  1. Привязка к рабочему месту: Сеанс работы кассира и подключаемое торговое оборудование жестко привязаны к текущему значению справочника РабочиеМеста (параметр сеанса РабочееМестоКлиента).
  2. Ограничение на количество касс: К одному рабочему месту и одной организации типовой функционал позволяет привязать только один активный экземпляр справочника КассыККМ с подключенным фискальным регистратором.
  3. Монопольный захват портов драйвером: При локальном подключении ККТ по интерфейсам COM/USB драйвер оборудования захватывает порт монопольно. Попытка одновременно инициализировать две кассы на одном физическом ПК без явного освобождения ресурсов приводит к ошибкам ввода-вывода.
  4. Механизм разбиения чека: Вся ключевая логика распределения товаров из корзины РМК перед фискализацией сосредоточена в модуле формы РМК в процедуре ЗаполнитьТаблицуЧеков. Штатно алгоритм умеет группировать товары по организациям и по системам налогообложения (например, ОСН и Патент/ЕНВД).

Штатный вариант: разделение по системам налогообложения (СНО)

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

  1. В настройках организации включаем флаг использования нескольких систем налогообложения.
  2. В справочнике Товарные группы сопоставляем группы товаров с соответствующими СНО (например, ОСН и УСН/Патент).
  3. При оформлении продажи в РМК процедура ЗаполнитьТаблицуЧеков автоматически сформирует два отдельных фискальных чека и поочередно отпечатает их на одном фискальном регистраторе.

Способы решения задачи для одной организации с несколькими ККМ

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

Вариант 1. Доработка процедуры ЗаполнитьТаблицуЧеков через расширение

Основная точка расширения — процедура ЗаполнитьТаблицуЧеков в форме РМК. Мы можем перехватить формирование таблицы чеков и заложить собственное правило разделения (например, по номенклатурным группам, складам или сегментам товаров).

Рассмотрим примерную структуру перехвата логики с помощью расширения:


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

Вариант 2. Динамическая смена параметра сеанса РабочееМестоКлиента

Чтобы обойти ограничение инициализации фискального регистратора, можно применить подход со сменой контекста рабочего места:

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

Вариант 3. Использование двух параллельных сеансов 1С

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

  1. На одном компьютере запускаем два сеанса 1С под разными пользователями.
  2. Для каждого пользователя в настройках задаем свое Рабочее место и свою Кассу ККМ.
  3. Важное условие: Для того чтобы оборудование корректно работало в двух сеансах, ККТ должна подключаться по сетевому интерфейсу (Ethernet / Wi-Fi) или через веб-сервер оборудования, поддерживающий многопоточный доступ, исключая монопольную блокировку COM-порта.

Особенности кассовой дисциплины

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

← На главную