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