В розничной торговле часто возникает ситуация, когда в одной информационной базе ведется учет по нескольким торговым точкам. При этом магазины могут принадлежать разным организациям и продавать абсолютно разный ассортимент — например, детские товары, бытовую химию или корма для животных. Перед администратором системы встает задача: как сделать так, чтобы кассир каждого конкретного магазина работал только со своим товаром и не мог по ошибке продать чужую номенклатуру? При этом желательно сохранить возможность просмотра остатков в других филиалах, чтобы кассиры могли подсказать покупателю, где найти нужный товар.
Разберем подробно несколько эффективных способов решения этой задачи в конфигурациях 1С:Розница и 1С:Управление нашей фирмой, начиная от стандартных настроек и заканчивая доработками системы через расширения.
Этот инструмент является наиболее правильным с точки зрения методологии разработчиков 1С. Он позволяет жестко ограничить продажи на кассах, сохраняя общую базу данных и не перегружая систему сложными запросами проверки прав.
Рассмотрим пошагово, как настроить данный функционал:
Управление ассортиментом и Форматы магазинов.Изменение ассортимента (раздел «Маркетинг») добавим нужные товары в созданные форматы магазинов. Для позиций, разрешенных к продаже в конкретном магазине, установим статус Разрешены закупки и продажи.Контролировать ассортимент.Результат: Теперь кассир в магазине «Детские товары» физически не сможет пробить товар из категории «Бытовая химия». При сканировании штрихкода система выдаст предупреждение о том, что данный товар не входит в разрешенный ассортимент этого магазина. При этом кассиры сохранят возможность просматривать остатки по всей сети.
Если ассортимент магазинов физически не пересекается на складах, проблему ошибочных продаж можно решить с помощью штатного контроля остатков и настройки рабочего места кассира (РМК). Проанализируем этот простой и эффективный метод:
Контролировать остатки при закрытии чека (запрет проведения чека «в минус»).Только в наличии.Результат: Поскольку товары для животных никогда не приходуются на склад магазина детских товаров, их остаток на данном складе всегда равен нулю. При открытии подбора кассир не увидит «чужие» позиции, так как включен фильтр по наличию. Если кассир случайно отсканирует штрихкод чужого товара, система заблокирует проведение чека на этапе проверки остатков. При этом через стандартную кнопку «Остатки по всем магазинам» кассир всегда сможет посмотреть, где еще есть данный товар.
Выясним, как решить задачу без программирования с помощью подсистемы маркетинга. Этот вариант отлично подходит для настройки ограничений в случае, если у вас установлена базовая или нетиповая версия программы 1С.
Алгоритм настройки выглядит следующим образом:
Запрет продаж.Результат: Товары останутся видны в общем справочнике, но при попытке добавить их в корзину или пробить на кассе программа заблокирует операцию и выведет сообщение о действующем запрете продажи.
Если типовых механизмов контроля ассортимента недостаточно, и требуется полностью скрыть элементы на уровне формы подбора товаров РМК, мы можем прибегнуть к механизму расширений конфигурации. Рассмотрим этот способ подробнее:
Номенклатура с именем МагазинДоступности (тип данных: СправочникСсылка.Магазины).Посмотрим на пример программного кода, который можно использовать в расширении для динамического списка формы подбора:
&НаСервере
Процедура Расш_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// Получаем текущий магазин из параметров сеанса или настроек пользователя
ТекущийМагазин = ПараметрыСеанса.ТекущийМагазин;
// Накладываем программный отбор на динамический список номенклатуры
НовыйОтбор = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовыйОтбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка.МагазинДоступности");
НовыйОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НовыйОтбор.ПравоеЗначение = ТекущийМагазин;
НовыйОтбор.Использование = Истина;
КонецПроцедуры
Использование расширения позволяет сохранить конфигурацию на поддержке и избежать сложностей при последующих обновлениях системы 1С.
В процессе обсуждения подобных задач на форумах часто звучит предложение настроить встроенный механизм платформы — RLS (Record Level Security). Проанализируем, почему для розничной сети это крайне нежелательно:
Чек ККМ.Резюме: Для реализации надежной схемы работы без привлечения программистов и потери быстродействия базы данных используйте комбинацию **Контроля остатков по складам** (Решение 2) и встроенного **Управления ассортиментом** (Решение 1).