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