Давно вынашивал идею такой обработки/отчета, чтобы по выбранным правам доступа к определенным объектам метаданных получить список соответствующих ролей. Кто работает в УТ11, тот меня поймет — я не считал, сколько там ролей, но, думаю, не меньше сотни, и каждый раз, когда нужно пользователю установить какие-то "нестандартные" права доступа ("чтобы видел только то-то и то-то…") приходится перещелкивать огромный список, чтобы собрать и понять, какие нужны роли, чтобы создать нужный профиль. Так вот и родилась эта обработка/отчет.
Как она работает. При открытии в верхней таблице заполняетя дерево метаданных (только Справочники и Документы), там же вы можете проставить нужные вам права доступа (Чтение, Просмотр, Редактирование и т.д.). Здесь у меня не все права доступа, как они прописаны в конфигураторе, только "значимые" (по моему скромному мнению), чтобы не перегружать таблицу. Итак, проставляем нужные нам права доступа. Здесь, как и в конфигураторе, работает автозаполнение "галочек" "нижестоящих" прав доступа.
При установке/снятии галочек прав доступа автоматически заполняется таблица слева внизу — итоговая таблица необходимых прав доступа, по которой в итоге и собирается список ролей по кнопке "Получить роли".
Как видите, здесь не вышли такие роли, которые имеют доступ на изменение и редактирование данного объекта (например, "Полные права"), т.е. в обработке роли собираются с учетом "вышестоящих" прав (если учитывать права снизу-вверх как: Чтение, Просмотр, Добавление и т.д.).
В конце все-таки хочется добавить ложку дегтя — необходимые роли собираются по принципу достаточности, но не необходимости. Т.е. в данном случае (как на рисунке), для просмотра справочника "Валюты" нашлась только указанная роль ("Чтение базовой НСИ"), но, конечно же, эта роль имеет доступ и к другим объектам. Поэтому если задача стоит жесткая — чтобы пользователь видел "только" "Валюты" и ничего более, то в данном случае придется анализировать указанные роли на предмет доступа к другим объектам или создавать-таки новые роли (думаю, что в 99% случаев подходящих ролей просто не будет существовать в базе).
P.S. Была идея сделать кнопку для создания на основании собранных ролей профиля групп доступа (в УТ11), но при этом потеряется универсальность обработки — кто захочет, без труда это сделает.
12.03.2025 — доработка файла обработки в связи с новым поведением функции ПравоДоступа() в очередных платформах 1С.
Очень полезный инструмент!
А есть ограничения RLS(наличие/отсутствие)?
(2) kiruha, нет, условия в правах доступа не анализируются. Зачем это надо? Обработка нужна для «быстрого» поиска нужных ролей — а дальше уже работа администратора/программиста понять подходит эта роль или нет.
Нажимаю по шагам 1-2-3-4, на все пусто, не выдает Роли. и в Документообороте и в Бухгалтерии
(4) Kymapuk, покажи скрин. скорее всего, по твоему условию нет нужных ролей.
Это для примера, вообще ни на что не выдает роли по любым условиям
(6) Kymapuk, ну а теперь докажи, что есть роль только с правом чтения этого справочника. Думаю, что такой роли просто нет. Есть и с правом чтения и редактирования. Такие роли не выходят, потому что они «более крутые», ты же задал условие только на чтение (т.е. права редактирования в данном случае излишни).
Хотя бы право просмотра добавил что-ли…
(6) Kymapuk,
Видимо, в статье это не совсем понятно было написано, хотя именно это я и хотел сказать.
Не работает на 1С:ERP Управление предприятием 2 (2.4.2.144). При различных сочетаниях выбранных объектов либо ошибка (скриншот), либо нет реакции на команду «Получить роли».
(9) какая у вас платформа 1С?
{ВнешняяОбработка.ДоступРолейКОбъектамМетаданных.Форма.Форма.Форма(133)}: Ошибка при вызове метода контекста (ПравоДоступа)
Если ПравоДоступа(Право, Метаданные[ТекСтрока.Тип][ТекСтрока.Объект], Роль) Тогда
по причине:
Право Проведение неприменимо к Справочник.Номенклатура
Ну и в принципе ничего не появляется после нажатия кнопки «Получить роли» в конф Бухгалтерия предприятия, редакция 3.0 (3.0.67.43) что в файловом варианте, что в серверном. Печально.
Хотя сама обработка рабочая, если закомментировать пару строк, то всё показывает. Проблема с приоритетом этих прав…
(12) похоже это из-за нового поведения функции ПравоДоступа() в новой платформе. У меня 8.3.13.1644 — и такая же ошибка вышла. Напишите свою почту мне в личку — вышлю исправленную версию. Спасибо за тестирование!
(13) Спасибо, мне не критично и я сам исправил.