При автоматизации розничных торговых точек специалисты часто сталкиваются со следующей задачей: в одном магазине (иногда даже за одним прилавком) ведется торговля от имени нескольких юридических лиц или индивидуальных предпринимателей (например, ООО продает алкоголь, а ИП — сопутствующие товары и продукты). При этом касса в магазине одна, рабочий стол кассира один, но к нему подключены два или три фискальных регистратора (ККТ), оформленных на разные организации. Для соблюдения требований к обороту алкоголя в рамках такой схемы используется автоматический обмен данными между 1С и ЕГАИС с проверкой в государственном реестре.
Покупатель хочет набрать товары в одну корзину, подойти к кассиру, оплатить всю покупку разом («в одно нажатие кнопки»), но на выходе получить несколько чеков — каждый от своей организации. В программе 1С:Розница этот функционал («Распределение продаж») реализован «из коробки» и настраивается штатными средствами за полчаса. Однако при попытке настроить аналогичную схему во встроенном Рабочем месте кассира (РМК) в 1С:Управление торговлей 11 (УТ 11) многие внедренцы заходят в тупик. Выясняется, что архитектура УТ 11 ориентирована на оптовую торговлю и классический партионный учет, и встроенный механизм РМК там значительно проще.
В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем возможные пути её решения, оценим трудозатраты и выберем наиболее стабильный вариант для вашего бизнеса.
---
Для начала выясним причину такого поведения систем. 1С:Розница изначально проектировалась как «фронт-офис» — быстрая, легкая система для работы непосредственно в торговом зале. В ней заложены механизмы разделения товарных потоков, так как схемы с «ИП + ООО» на патенте и ОСНО в рознице встречаются повсеместно.
1С:Управление торговлей 11 — это мощная учетная система класса «бэк-офис». Она предназначена для ведения сложного финансового учета, планирования закупок, оптовых продаж, работы со складами и взаиморасчетами. Розничный блок (РМК) добавлен в нее скорее как вспомогательный инструмент. По умолчанию УТ 11 предполагает, что один сеанс работы ККМ и один документ Чек ККМ жестко привязаны к одной конкретной организации и одной кассе ККМ. Разбить одну транзакцию на разные фискальные регистраторы на лету в стандартном РМК УТ 11 без доработок невозможно.
Рассмотрим четыре практических способа решения этой проблемы — от простых организационных мер до технических доработок и интеграций.
---
Самый простой способ, не требующий вмешательства программиста и изменения конфигурации. Он подходит, если оформление покупки начинается в торговом зале с помощью менеджеров или операторов.
Разберем этот процесс по шагам:
Заказ клиента или Реализация товаров и услуг) — каждый под свою организацию.Преимущества: Конфигурация остается полностью типовой, легко обновляется. Нет рисков ошибок при расчете себестоимости.
Недостатки: Существенно увеличивается нагрузка как на операторов в зале, так и на кассира. Вместо одной операции кассиру приходится выполнять две или три. Покупатель вынужден ждать дольше, что снижает пропускную способность кассы.
---
Это классический архитектурный подход, рекомендуемый самой фирмой 1С. Мы разделяем контуры учета. УТ 11 выступает в роли управляющей системы, где ведется глобальный учет, закупки и ценообразование. В качестве кассовых терминалов на рабочих местах кассиров устанавливается 1С:Розница.
Как работает данная схема:
Преимущества: Полностью типовой функционал обеих программ, высокая стабильность работы кассы даже при отсутствии связи с сервером УТ (автономность фронт-офиса), полное соответствие законодательству.
Недостатки: Требуется покупка дополнительных лицензий на 1С:Розницу, настройка и администрирование обмена данными, поддержание актуальности остатков в обеих базах. Техническое обслуживание нескольких баз в такой схеме выполняет автоматическое обновление и архивирование 1С без участия пользователя.
---
Современной альтернативой полноценной 1С:Рознице является программный продукт 1С:РМК (Рабочее место кассира). Это легкое специализированное приложение, разработанное 1С специально для работы в качестве единого кассового интерфейса, подключаемого к различным конфигурациям, в том числе и к УТ 11.
Проанализируем преимущества интеграции с 1С:РМК:
Этот вариант является наиболее перспективным, если вы не хотите разворачивать тяжелую базу Розницы на кассовом компьютере, но при этом желаете остаться в рамках официальных программных решений.
---
Если бюджет ограничен, покупать дополнительные лицензии на Розницу клиент отказывается, а работать нужно строго «в одной базе УТ», остается путь программной доработки. Чтобы не снимать конфигурацию с поддержки и сохранить возможность легкого обновления, доработку следует выполнять строго через механизм расширений.
Нам потребуется перехватить процесс проведения чека в РМК и программно разделить один исходный набор товаров на несколько документов Чек ККМ.
Рассмотрим упрощенный концептуальный алгоритм того, как программист может реализовать это в коде расширения:
// Псевдокод обработчика в расширении перед пробитием чека
Процедура ПередПробитиемЧека(ДокументОбъект, Отказ) Экспорт
// Шаг 1. Анализируем табличную часть "Товары" исходного чека
ТаблицаТоваров = ДокументОбъект.Товары.Выгрузить();
// Создаем структуру для хранения разделенных таблиц по Организациям
СводныеТаблицы = Новый Соответствие;
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
// Определяем организацию-владельца товара (например, по реквизиту номенклатуры или группе)
ТекущаяОрганизация = ПолучитьОрганизациюНоменклатуры(СтрокаТовара.Номенклатура);
ТаблицаДляОрганизации = СводныеТаблицы.Получить(ТекущаяОрганизация);
Если ТаблицаДляОрганизации = Неопределено Тогда
ТаблицаДляОрганизации = ТаблицаТоваров.СкопироватьКолонки();
СводныеТаблицы.Вставить(ТекущаяОрганизация, ТаблицаДляОрганизации);
КонецЕсли;
ЗаполнитьЗначенияСвойств(ТаблицаДляОрганизации.Добавить(), СтрокаТовара);
КонецЦикла;
// Шаг 2. Если организаций больше одной, отменяем проведение текущего общего чека
Если СводныеТаблицы.Количество() > 1 Тогда
Отказ = Истина; // Блокируем стандартную запись общего документа
// Шаг 3. Программно создаем новые отдельные документы Чек ККМ для каждой организации
Для Каждого КлючИЗначение Из СводныеТаблицы Цикл
Орг = КлючИЗначение.Ключ;
ТоварыОрг = КлючИЗначение.Значение;
НовыйЧек = Документы.ЧекККМ.СоздатьДокумент();
НовыйЧек.Организация = Орг;
НовыйЧек.КассаККМ = ПолучитьКассуККМДляОрганизации(Орг);
НовыйЧек.Товары.Загрузить(ТоварыОрг);
// Заполняем остальные реквизиты, суммы, скидки и проводим
НовыйЧек.Записать(РежимЗаписиДокумента.Проведение);
// Шаг 4. Вызываем фискализацию для каждого созданного чека на соответствующем устройстве
ПробитьЧекНаФизическомУстройстве(НовыйЧек);
EndЦикла;
КонецЕсли;
КонецПроцедуры
Важные технические нюансы при доработке:
---
Вне зависимости от выбранного варианта (будь то Розница, РМК или доработка УТ), вы обязательно столкнетесь с аппаратной проблемой бесконфликтной работы нескольких ККТ на одном компьютере.
При подключении двух и более касс (например, марки АТОЛ) по USB-портам часто происходит конфликт драйверов: операционная система Windows может динамически менять номера COM-портов после перезагрузки ПК, из-за чего 1С теряет связь с кассами или путает их местами (чек ООО уходит на кассу ИП).
Чтобы избежать этой проблемы, рекомендуется использовать следующие подходы:
KkmServer сам корректно распределяет их по физическим устройствам и управляет очередью печати, исключая зависания портов.---
Подведем итоги нашего анализа. Выбор архитектурного решения зависит от готовности клиента платить и технических навыков программиста: