Анализ прав и ролей: поиск подходящего профиля
Справочники, документы, отчеты — им соответствуют определенные права и роли. Набор объектов — определяют набор ролей, которые в свою очередь входят в набор профилей групп доступа. По заданным наборам объектов можно найти единственный подходящий профиль или набор профилей, в которые необходимо включить пользователя.
- Описание
- Подробнее
Описание
Всем привет!
Началось все с того, что мне поставили примерно такую задачу: "нужно задать права пользователю, чтобы вот этот документ мог проводить, а вот этот не мог, ну и с отчетами аналогично…"
Началось с простого — а закончил созданием расширенной обработки для анализа прав и ролей, и поиска подходящего профиля групп доступа или набора профилей, в которые необходимо включить пользователя.
Если подходящий профиль не найден и нельзя использовать набор подходящих профилей, тогда надо создать свой профиль с нужными ролями. Обработка не умеет создавать роли и профили. Обработка проводит анализ и поиск подходящих профилей из имеющихся!
Представлена внешняя обработка-стенд — со всеми видимыми служебными таблицами и деревьями — для того, чтобы можно было легко увидеть:
1) есть ли пересечения между ролями,
2) все объединения ролей (всевозможные наборы ролей),
3) есть ли пересечения между профилями групп доступа,
4) все объединения профилей (всевозможные наборы профилей).
Обработка была протестирована на УНФ 1.6, БП 3.0, Розница 2.3, УТ 11, КА 2.4, ЗУП 3.1.
Разработана на платформе 1С:Предприятие 8.3.18.1289, файловый режим: используются функции СтрРазделить(), СтрСоединить(), СтрНайти().
Заложены ограничения — имена объектов метаданных конфигурации и имена ролей имеют длину не более 255 символов. Код открыт — ограничения можно изменить.
Заложены алгоритмические ограничения:
1) подразумевается, что в конфигурации имеется справочник "ПрофилиГруппДоступа", содержащий табличную часть связанных ролей "Роли",
2) профиль определяется по наименованию — поэтому, если у вас два профиля с одинаковым наименованием, значит анализ и поиск профиля отработает с ошибкой (проверка на дублирование наименований профилей будет запрограммирована в след. версиях),
3) перед стартом проверьте символ-разделитель — к примеру в УТ 11, КА 2.4, УНФ 1.6 имеются профили, содержащие в наименовании запятую (символ ",") — для подобных случаев нужно задать другой символ-разделитель, например точку с запятой (";"). Это нужно для того, что собрать набор профилей "Кассир, Кладовщик" в одну строку для последующего разбора и генерации деревьев. Так вот, запятая в наименовании придаст алгоритму другое разделение на подстроки, и обработка отработает некорректно. Символ-разделитель относится только к наборам профилей, но не к ролям — поскольку роли не могут содержать запятые в своем имени.
Перед стартом укажите какие Типы объектов конфигурации хотите включить в анализ: Документы, Справочники, Отчеты и т.д. Разделение на типы объектов уменьшает время анализа.
В обработке имеется один явный недочет — при изменении данных одной строки, обрабатываются все строки таблицы. Технически такой недочет не меняет логику работы программы, но лишь повторно проводит анализ ролей.
Я не тестировал обработку на анализ ролей из расширений и специфичных прав конфигурации: например "Интерактивное открытие внешних обработок".
Предопределенные права на справочники, документы, отчеты, регистры — задействованы и протестированы!
Анализ таблиц (прав и ролей) надо проводить сверху — вниз и слева-направо: каждая верхняя таблица порождает таблицы ниже. Итоговая таблица с наборами профилей может содержать строки выделенные красным цветом — это наборы, в которых имеются профили, которые следует исключить из рассмотрения. К примеру, вы указали в первой верхней таблице, что определенный документ пользователь не должен проводить. Согласно такому критерию будет найдена Роль, которая имеет право проводить данный документ. Эта Роль и соответствующие ей Профили (набор профилей) войдут в таблицу Исключений. Исключения выделяются красным.
В дополнение посмотрите видео, в котором я рассказываю и показываю, как работать с обработкой.
