Как найти пользователей с определенной ролью или правами в 1С

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

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

Способ 1. Быстрый отбор по ролям в конфигураторе

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

  1. Откроем информационную базу в режиме Конфигуратор под учетной записью с административными правами.
  2. Перейдем в главное меню: Администрирование → Пользователи.
  3. В открывшемся окне списка пользователей нажмем кнопку Установить отбор и сортировку списка (или воспользуемся пунктом контекстного меню).
  4. На вкладке отбора выберем поле Роли и отметим одну или несколько интересующих нас ролей.
  5. Нажмем ОК. В списке останутся только те пользователи, которым назначены выбранные роли.

Способ 2. Программный поиск пользователей через встроенный язык

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

Проанализируем пример кода, который перебирает всех пользователей информационной базы и проверяет наличие конкретной роли:


ИмяИскомойРоли = "ДобавлениеИзменениеДанныхСклада";
ИскомаяРоль = Метаданные.Роли.Найти(ИмяИскомойРоли);

Если ИскомаяРоль = Неопределено Тогда
    Сообщить("Роль не найдена в метаданных!");
    Возврат;
EndЕсли;

МассивПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();

Для Каждого ПользовательИБ Из МассивПользователей Цикл
    Если ПользовательИБ.Роли.Содержит(ИскомаяРоль) Тогда
        Сообщить("Пользователь с ролью: " + ПользовательИБ.Имя + " (" + ПользовательИБ.ПолноеИмя + ")");
    КонецЕсли;
КонецЦикла;

Обратите внимание на важные технические особенности программного метода:

  1. Функция РольДоступна() проверяет наличие роли только для текущего сеанса (пользователя, запустившего код). Проверить права других пользователей с ее помощью нельзя.
  2. Для чтения списка пользователей методом ПользователиИнформационнойБазы.ПолучитьПользователей() у текущего пользователя должно быть установлено право Администрирование или Администрирование пользователей (либо код должен выполняться в привилегированном режиме через УстановитьПривилегированныйРежим(Истина)).

Способ 3. Аудит прав в типовых конфигурациях (БСП)

В современных конфигурациях (ERP, КА, УТ, БП, ЗУП и др.) роли редко назначаются напрямую через конфигуратор. Архитектура подсистемы управления доступом Библиотеки стандартных подсистем (БСП) строится на использовании Профилей групп доступа и Групп доступа.

Разберем, как посмотреть пользователей с нужными правами в режиме «1С:Предприятие»:

  1. Перейдем в раздел Администрирование → Настройки пользователей и прав.
  2. Откроем отчеты по правам доступа (например, Права доступа или Анализ прав доступа). Они позволяют в наглядном виде увидеть распределение ролей, профилей и объектов конфигурации по пользователям.
  3. Также можно открыть список Профили групп доступа, найти профиль, в который включена требуемая роль, и посмотреть список участников входящих в него групп доступа.

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

Нюансы отображения разделов интерфейса

Если перед нами стоит задача открыть доступ к конкретному разделу (например, «Склад»), важно помнить, что наличие одной лишь роли не всегда гарантирует видимость подсистемы. Проанализируем сопутствующие факторы:

  1. Функциональные опции: если в настройках программы отключен соответствующий функционал (например, снят флаг ведения складского учета), раздел будет скрыт для всех пользователей вне зависимости от их ролей.
  2. Видимость по ролям: в командном интерфейсе для каждой подсистемы настраивается видимость в разрезе ролей.
  3. Ограничения на уровне записей (RLS): роль дает общее право на объект, но правила RLS могут дополнительно фильтровать доступные данные (например, скрывать документы конкретных складов или организаций).
← На главную