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