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