Просмотр доступа ролей к объектам метаданных

«Заведите нам пользователя, чтобы он видел в базе только то-то и то-то?» Знакомо? Данная универсальная обработка на УФ помогает администратору 1С-баз быстро решать такие задачи…

Давно вынашивал идею такой обработки/отчета, чтобы по выбранным правам доступа к определенным объектам метаданных получить список соответствующих ролей. Кто работает в УТ11, тот меня поймет — я не считал, сколько там ролей, но, думаю, не меньше сотни, и каждый раз, когда нужно пользователю установить какие-то "нестандартные" права доступа ("чтобы видел только то-то и то-то…") приходится перещелкивать огромный список, чтобы собрать и понять, какие нужны роли, чтобы создать нужный профиль. Так вот и родилась эта обработка/отчет.

Как она работает. При открытии в верхней таблице заполняетя дерево метаданных (только Справочники и Документы), там же вы можете проставить нужные вам права доступа (Чтение, Просмотр, Редактирование и т.д.). Здесь у меня не все права доступа, как они прописаны в конфигураторе, только "значимые" (по моему скромному мнению), чтобы не перегружать таблицу. Итак, проставляем нужные нам права доступа. Здесь, как и в конфигураторе, работает автозаполнение "галочек" "нижестоящих" прав доступа.

При установке/снятии галочек прав доступа автоматически заполняется таблица слева внизу — итоговая таблица необходимых прав доступа, по которой в итоге и собирается список ролей по кнопке "Получить роли".

Как видите, здесь не вышли такие роли, которые имеют доступ на изменение и редактирование данного объекта (например, "Полные права"), т.е. в обработке роли собираются с учетом "вышестоящих" прав (если учитывать права снизу-вверх как: Чтение, Просмотр, Добавление и т.д.).

В конце все-таки хочется добавить ложку дегтя — необходимые роли собираются по принципу достаточности, но не необходимости. Т.е. в данном случае (как на рисунке), для просмотра справочника "Валюты" нашлась только указанная роль ("Чтение базовой НСИ"), но, конечно же, эта роль имеет доступ и к другим объектам. Поэтому если задача стоит жесткая — чтобы пользователь видел "только" "Валюты" и ничего более, то в данном случае придется анализировать указанные роли на предмет доступа к другим объектам или создавать-таки новые роли (думаю, что в 99% случаев подходящих ролей просто не будет существовать в базе). 

P.S. Была идея сделать кнопку для создания на основании собранных ролей профиля групп доступа (в УТ11), но при этом потеряется универсальность обработки — кто захочет, без труда это сделает.

12.03.2024 — доработка файла обработки в связи с новым поведением функции ПравоДоступа() в очередных платформах 1С.

14 Comments

  1. Ibrogim

    Очень полезный инструмент!

    Reply
  2. kiruha

    А есть ограничения RLS(наличие/отсутствие)?

    Reply
  3. Mortiferus

    (2) kiruha, нет, условия в правах доступа не анализируются. Зачем это надо? Обработка нужна для «быстрого» поиска нужных ролей — а дальше уже работа администратора/программиста понять подходит эта роль или нет.

    Reply
  4. Kymapuk

    Нажимаю по шагам 1-2-3-4, на все пусто, не выдает Роли. и в Документообороте и в Бухгалтерии

    Reply
  5. Mortiferus

    (4) Kymapuk, покажи скрин. скорее всего, по твоему условию нет нужных ролей.

    Reply
  6. Kymapuk

    Это для примера, вообще ни на что не выдает роли по любым условиям

    Reply
  7. Mortiferus

    (6) Kymapuk, ну а теперь докажи, что есть роль только с правом чтения этого справочника. Думаю, что такой роли просто нет. Есть и с правом чтения и редактирования. Такие роли не выходят, потому что они «более крутые», ты же задал условие только на чтение (т.е. права редактирования в данном случае излишни).

    Хотя бы право просмотра добавил что-ли…

    Reply
  8. Mortiferus

    (6) Kymapuk,

    Как видите, здесь не вышли такие роли, которые имеют доступ на изменение и редактирование данного объекта (например, «Полные права»), т.е. в обработке роли собираются с учетом «вышестоящих» прав (если учитывать права снизу-вверх как: Чтение, Просмотр, Добавление и т.д.).

    Видимо, в статье это не совсем понятно было написано, хотя именно это я и хотел сказать.

    Reply
  9. anikif

    Не работает на 1С:ERP Управление предприятием 2 (2.4.2.144). При различных сочетаниях выбранных объектов либо ошибка (скриншот), либо нет реакции на команду «Получить роли».

    Reply
  10. Mortiferus

    (9) какая у вас платформа 1С?

    Reply
  11. chesnokov-a-v

    {ВнешняяОбработка.ДоступРолейКОбъектамМетаданных.Форма.Форма.Форма(133)}: Ошибка при вызове метода контекста (ПравоДоступа)

    Если ПравоДоступа(Право, Метаданные[ТекСтрока.Тип][ТекСтрока.Объект], Роль) Тогда

    по причине:

    Право Проведение неприменимо к Справочник.Номенклатура

    Reply
  12. chesnokov-a-v

    Ну и в принципе ничего не появляется после нажатия кнопки «Получить роли» в конф Бухгалтерия предприятия, редакция 3.0 (3.0.67.43) что в файловом варианте, что в серверном. Печально.

    Хотя сама обработка рабочая, если закомментировать пару строк, то всё показывает. Проблема с приоритетом этих прав…

    Reply
  13. Mortiferus

    (12) похоже это из-за нового поведения функции ПравоДоступа() в новой платформе. У меня 8.3.13.1644 — и такая же ошибка вышла. Напишите свою почту мне в личку — вышлю исправленную версию. Спасибо за тестирование!

    Reply
  14. chesnokov-a-v

    (13) Спасибо, мне не критично и я сам исправил.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *