К статье
Практический материал

Администрирование · 9 мин

1С: как получить список ролей пользователя

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

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

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

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

Просмотр ролей пользователя в конфигураторе

Самый простой способ — открыть свойства учётной записи. Запустите конфигуратор под учётной записью с правами администратора и перейдите в меню Администрирование → Пользователи. Откроется список всех пользователей информационной базы.

Дважды щёлкните по нужному пользователю. В диалоге свойств перейдите на вкладку «Прочее»: там отображается список всех ролей конфигурации с отметками — какие из них назначены данному пользователю. Отмеченные роли и составляют искомый список.

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

Порядок действий в конфигураторе
  1. 1
    Откройте конфигуратор под учётной записью администратора
  2. 2
    Перейдите в меню Администрирование → Пользователи
  3. 3
    Откройте нужного пользователя двойным щелчком
  4. 4
    Перейдите на вкладку «Прочее» и просмотрите отмеченные роли

Получение списка ролей программно

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

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

Функция ПолучитьРолиПользователя(ИмяПользователя) Экспорт

СписокРолей = Новый СписокЗначений;

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

Если ПользовательИБ = Неопределено Тогда

Возврат СписокРолей; // пользователь не найден

КонецЕсли;

Для Каждого Роль Из ПользовательИБ.Роли Цикл

СписокРолей.Добавить(Роль.Имя, Роль.Синоним);

КонецЦикла;

Возврат СписокРолей;

КонецФункции

Для выгрузки ролей всех пользователей базы используйте перебор через ПолучитьПользователей():

Процедура ВыгрузитьРолиВсехПользователей() Экспорт

ТаблицаРолей = Новый ТаблицаЗначений;

ТаблицаРолей.Колонки.Добавить("Пользователь");

ТаблицаРолей.Колонки.Добавить("Роль");

Для Каждого ПользовательИБ Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл

Для Каждого Роль Из ПользовательИБ.Роли Цикл

Строка = ТаблицаРолей.Добавить();

Строка.Пользователь = ПользовательИБ.Имя;

Строка.Роль = Роль.Имя;

КонецЦикла;

КонецЦикла;

КонецПроцедуры

bsl
Для Каждого ПользовательИБ Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
	Для Каждого Роль Из ПользовательИБ.Роли Цикл
		Сообщить(ПользовательИБ.Имя + " — " + Роль.Имя);
	КонецЦикла;
КонецЦикла;

Проверка конкретной роли у текущего пользователя

Если нужно не получить весь список, а проверить, есть ли у текущего пользователя конкретная роль, используйте функцию РольДоступна("ИмяРоли"). Она возвращает Истина или Ложь и работает быстрее перебора.

В типовых конфигурациях на базе Библиотеки стандартных подсистем вместо прямой проверки ролей рекомендуется использовать Пользователи.ЭтоПолноправныйПользователь() и механизм профилей групп доступа — это корректнее с точки зрения логики типового решения.

Роли через профили групп доступа в типовых конфигурациях

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

Чтобы увидеть фактические права такого пользователя, откройте в режиме предприятия: Администрирование → Настройки пользователей и прав → Пользователи, выберите пользователя и посмотрите назначенные группы доступа и профиль. Состав ролей профиля виден в справочнике «Профили групп доступа».

Для сводного анализа в типовых решениях есть отчёт «Права доступа» (или «Анализ прав доступа»), который показывает, какие роли и к каким объектам метаданных фактически предоставлены пользователю с учётом всех механизмов.

Способы получения списка ролей

Конфигуратор

Подходит для разовой проверки одного пользователя. Не выгружает данные и не показывает профили доступа.

Код через ПользователиИнформационнойБазы

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

Отчёт «Права доступа» в типовых

Показывает эффективные права с учётом профилей. Доступен только в конфигурациях на БСП.

Выгрузка списка ролей в файл

Полученную таблицу пользователей и ролей удобно сохранить в табличный документ и выгрузить в Excel или CSV для передачи аудитору или службе безопасности. Табличный документ сохраняется методом Записать() с указанием типа файла.

При выгрузке в CSV помните о разделителях и кодировке: для корректного открытия кириллицы в Excel используйте UTF-8 с BOM или сохраняйте сразу в формате MXL/XLSX через табличный документ.

Частые ошибки и ограничения

Типичная ошибка — попытка выполнить код получения пользователей от имени учётной записи без административных прав. В этом случае возникает ошибка нарушения прав доступа. Выполняйте такой код в привилегированном режиме (УстановитьПривилегированныйРежим(Истина)) или под администратором.

Вторая ошибка — путать имя роли и синоним. В коде для проверок и сравнений используется именно имя роли (латиницей, как в конфигураторе), а синоним — только для отображения пользователю.

Третья ошибка — искать роли у пользователя, который работает через внешнюю аутентификацию или добавлен только в справочник «Пользователи» типовой конфигурации, но не создан как пользователь информационной базы. Такой учётной записи может не быть в списке пользователей ИБ.

Типичные ошибки
01
Проверка ролей по синониму вместо имени — сравнение не срабатывает
02
Запуск кода без административных прав — ошибка доступа
03
Оценка прав только по ролям в конфигураторе — не учтены профили групп доступа в типовых
04
Изменение ролей в рабочей базе без резервной копии — риск потери доступа или утечки прав

Отличия в файловом и клиент-серверном режимах

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

Если база опубликована на веб-сервере, пользователи с аутентификацией операционной системы могут не иметь явного пароля в 1С, но их роли всё равно видны стандартными способами через конфигуратор или код.

Частые вопросы

Как узнать, какие роли есть в конфигурации вообще?

Полный перечень ролей виден в дереве конфигурации: ветка «Общие → Роли». Программно список получают перебором коллекции Метаданные.Роли с доступом к имени и синониму каждой роли.

Можно ли получить роли пользователя без прав администратора?

Текущий пользователь может проверить свои роли через РольДоступна() без особых прав. Получить список ролей других пользователей через ПользователиИнформационнойБазы без административных прав нельзя — потребуется привилегированный режим на сервере.

Почему у пользователя нет ролей в конфигураторе, но он работает в базе?

Скорее всего, конфигурация построена на БСП и права назначены через профили групп доступа. Проверьте в режиме предприятия раздел «Администрирование → Настройки пользователей и прав» и отчёт по правам доступа.

Как сравнить роли двух пользователей?

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

Можно ли получить роли через запрос, как к обычному справочнику?

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

Как выгрузить роли всех пользователей в Excel?

Сформируйте таблицу значений перебором пользователей и ролей, выведите её в табличный документ и сохраните методом Записать() с типом файла XLSX. Либо воспользуйтесь готовой внешней обработкой выгрузки прав, если писать код нет возможности.

Итог

Что важно запомнить

Разовая проверка — вкладка «Прочее» в свойствах пользователя конфигуратора. Массовая выгрузка — код через ПользователиИнформационнойБазы с правами администратора. В типовых конфигурациях дополнительно анализируйте профили групп доступа и отчёт по правам. Перед любыми изменениями ролей делайте резервную копию базы.