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

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

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

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

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

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

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

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

12.03.2026 — доработка файла обработки в связи с новым поведением функции ПравоДоступа() в очередных платформах 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 не будет опубликован. Обязательные поля помечены *