Как узнать, какие роли предоставляют право на чтение объекта метаданных в 1С:ERP?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе сопровождения и настройки сложных систем на базе 1С:ERP, таких как «1С:ERP Управление предприятием», «Комплексная автоматизация» или «Управление торговлей», часто возникает задача определить, какая именно роль дает пользователю доступ к конкретному справочнику, документу или отчету. Поскольку в современных конфигурациях количество ролей исчисляется сотнями, ручной перебор в Конфигураторе становится неэффективным. Рассмотрим наиболее быстрые и надежные способы решения этой задачи, доступные как администратору, так и разработчику.

Использование регистра сведений «Права ролей»

Одним из самых удобных инструментов для анализа прав доступа в конфигурациях, построенных на базе Библиотеки стандартных подсистем (БСП), является регистр сведений ПраваРолей. Разберем, для чего он нужен и как с ним работать. Этот регистр представляет собой своеобразный «кэш» или срез прав метаданных, который система использует для оптимизации проверок доступа и работы механизмов RLS (разграничения прав на уровне записей).

Чтобы найти нужную информацию через этот регистр, выполним следующие шаги:

  1. Откроем Универсальный отчет (находится в разделе «Администрирование» — «Печатные формы, отчеты и обработки»).
  2. В качестве типа объекта выберем Регистр сведений, а в качестве самого объекта — Права ролей.
  3. В настройках отчета установим фильтр по полю Объект (выбираем интересующий нас справочник или документ) и по полю Чтение (устанавливаем значение Да).

Такой подход позволяет мгновенно получить список всех ролей, в которых установлена «галочка» на право чтения для выбранного объекта. Проанализируем результаты: отчет покажет не только стандартные роли, но и расширения, если они влияют на права доступа.

Актуализация данных в регистре «Права ролей»

Важно помнить, что данные в регистре ПраваРолей не всегда обновляются мгновенно. Обычно это происходит при обновлении конфигурации базы данных или при первом запуске системы после внесения изменений. Однако, если мы добавили новый объект метаданных или изменили права в расширении, записи могут не появиться сразу.

Выясним, как обновить эти данные принудительно. Для этого можно воспользоваться программным методом БСП. В консоли кода или через обработку выполним следующую команду:

РегистрыСведений.ПраваРолей.ОбновитьДанныеРегистра();

После выполнения этого метода система пересчитает права для всех ролей и объектов, и информация в отчетах станет актуальной. Это особенно важно при отладке новых профилей доступа.

Встроенные отчёты подсистемы «Управление доступом»

Рассмотрим альтернативные способы, которые предоставляют типовые решения 1С:ERP без использования универсальных отчетов. В системе предусмотрены специализированные интерфейсы для аудита прав:

  1. Отчет «Права доступа»: Перейдем в раздел «Администрирование» — «Настройки пользователей и прав». Этот отчет позволяет выбрать конкретного пользователя или профиль групп доступа и просмотреть все назначенные ему права в разрезе объектов.
  2. Дайджест изменений прав доступа: Помогает проанализировать, как изменились права после обновления релиза конфигурации. Это полезно, если после обновления пользователь внезапно потерял доступ к привычному объекту.

Программный поиск ролей через метаданные

Если нам необходимо получить список ролей программно (например, для разработки собственной системы мониторинга прав), мы можем обратиться напрямую к коллекции метаданных. Этот способ является наиболее «честным», так как он не зависит от состояния регистров сведений и отражает реальную структуру прав в конфигурации.

Посмотрим на пример кода, который перебирает все роли и проверяет право на чтение для конкретного документа:


ИмяОбъекта = "Документ.РеализацияТоваровУслуг";
Для Каждого ТекущаяРоль Из Метаданные.Роли Цикл
    Если ПравоДоступа("Чтение", Метаданные.НайтиПоПолномуИмени(ИмяОбъекта), , ТекущаяРоль) Тогда
        Сообщить("Роль: " + ТекущаяРоль.Имя + " дает право на чтение.");
    КонецЕсли;
КонецЦикла;

Этот метод позволяет быстро выявить все роли-доноры прав для любого объекта метаданных непосредственно в режиме «1С:Предприятие».

Анализ через матрицу прав в Конфигураторе

Для разработчика, имеющего доступ к конфигуратору, существует еще один наглядный способ. Разберем его по шагам:

  1. Найдем нужный объект в дереве метаданных.
  2. Нажмем на него правой кнопкой мыши и выберем пункт Дополнительно.
  3. В открывшемся окне перейдем на закладку Права.

Перед нами откроется полная матрица всех ролей конфигурации. Здесь можно отфильтровать список, нажав на кнопку «Выводить только роли с установленными правами». Это самый быстрый способ увидеть общую картину прав «в один клик» вне пользовательского режима.

Связь ролей и профилей групп доступа

Проанализируем ситуацию глубже: нахождение роли — это лишь половина дела. В 1С:ERP права пользователям назначаются не напрямую, а через Профили групп доступа. После того как мы определили нужную роль через регистр ПраваРолей, нам нужно понять, в какие профили она включена.

Для этого в справочнике «Профили групп доступа» удобно использовать типовой отчет «Состав профилей». Помните, что один объект может быть доступен пользователю через несколько разных ролей, входящих в разные профили. Если вы пытаетесь ограничить доступ, необходимо убедиться, что право чтения убрано во всех назначенных пользователю ролях.

Важное замечание по RLS: Наличие права «Чтение» в роли гарантирует только техническую возможность обращения к таблице. Если в системе включено разграничение прав на уровне записей (например, по организациям), пользователь может обладать ролью с правом чтения, но не видеть ни одной записи в списке, если его группа доступа не имеет соответствующих разрешений по значениям доступа.

← На главную