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

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

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

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

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

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

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

Самый простой способ увидеть все роли, существующие в конфигурации, — открыть конфигуратор и в дереве объектов конфигурации развернуть ветку «Общие → Роли». Здесь перечислены все роли, определённые разработчиком или поставщиком типового решения. Двойной клик по роли открывает окно редактирования прав, где видно, к каким объектам метаданных роль даёт доступ.

Для просмотра прав по всем ролям сразу удобнее использовать команду «Все роли»: правый клик по корню конфигурации → «Все роли», либо меню «Конфигурация → Все роли». Откроется таблица, где строки — объекты метаданных, колонки — роли, а на пересечении — установленные права. Это основной инструмент аудита прав при настройке доступа.

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

Как открыть список ролей в конфигураторе
  1. 1
    Запустите конфигуратор и откройте конфигурацию (Конфигурация → Открыть конфигурацию)
  2. 2
    В дереве объектов разверните ветку «Общие → Роли» — это перечень всех ролей
  3. 3
    Для сводной таблицы прав: правый клик по корню конфигурации → «Все роли»
  4. 4
    Проверьте результат: таблица содержит строки-объекты и колонки-роли с отметками прав

Просмотр ролей пользователя через список пользователей

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

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

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

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

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

Для Каждого Роль Из Метаданные.Роли Цикл

Сообщить(Роль.Имя + " — " + Роль.Синоним);

КонецЦикла;

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

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

bsl
Для Каждого Роль Из Метаданные.Роли Цикл
    Сообщить(Роль.Имя);
КонецЦикла;

Программное получение ролей пользователей информационной базы

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

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

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

СписокРолей = "";

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

СписокРолей = СписокРолей + Роль.Имя + "; ";

КонецЦикла;

Сообщить(Пользователь.Имя + ": " + СписокРолей);

КонецЦикла;

Такой код удобно выполнить через внешнюю обработку или консоль кода, чтобы выгрузить соответствие «пользователь — роли» для всего списка. Для больших баз результат лучше выводить в табличный документ или сохранять в файл, а не в окно сообщений.

Для проверки прав текущего пользователя без перебора ролей есть функция РольДоступна("ИмяРоли") — она возвращает Истина, если у текущего сеанса есть указанная роль. Это стандартный способ ветвления логики по правам в коде.

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

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

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

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

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

Конфигуратор, ветка «Общие → Роли»

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

Окно «Все роли»

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

Администрирование → Пользователи

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

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

Гибкая выгрузка в нужном формате. Требует прав администратора и навыков работы с кодом.

Типичные ошибки и ограничения

Частая ошибка — путать роли конфигурации и профили групп доступа. Профиль — прикладной объект справочника, роль — объект метаданных. Запрос к справочнику профилей не вернёт список ролей конфигурации, и наоборот: перебор метаданных не покажет, какие профили назначены пользователю.

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

Третья ошибка — забыть, что в файловой базе список пользователей хранится отдельно от конфигурации, и при переносе только файла конфигурации (.cf) роли пользователей не переносятся. Для переноса пользователей с их ролями используйте выгрузку/загрузку информационной базы целиком (.dt).

Типичные ошибки
01
Путать профили групп доступа с ролями метаданных — в БСП-конфигурациях это разные уровни настройки прав
02
Выполнять код получения пользователей без права «Администрирование» — возникает исключение нарушения прав
03
Ожидать переноса ролей пользователей при загрузке .cf — пользователи переносятся только через выгрузку .dt
04
Игнорировать роли из расширений конфигурации — итоговый список ролей может отличаться от основной конфигурации

Проверка результата

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

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

Контрольные точки

Как проверить результат

Количество ролей из кода и из дерева конфигурации
Норма

Значения совпадают

Тревожный признак

В коде ролей меньше — проверьте расширения конфигурации

Роли пользователя в карточке и в выводе кода
Норма

Списки совпадают

Тревожный признак

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

Выполнение кода получения пользователей
Норма

Код отрабатывает без исключений

Тревожный признак

Ошибка нарушения прав — нет права «Администрирование»

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

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

Запросом к метаданным получить роли нельзя — роли не хранятся в таблицах базы данных. Используйте перебор коллекции Метаданные.Роли в коде или просмотр ветки «Общие → Роли» в конфигураторе.

Как узнать, какие роли есть у текущего пользователя?

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

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

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

Можно ли выгрузить список ролей в Excel?

Да. Откройте «Все роли» в конфигураторе, выделите содержимое таблицы и скопируйте в Excel, либо сохраните табличный документ через «Файл → Сохранить копию» в формате Excel. Программно можно сформировать табличный документ и сохранить его методом Записать.

Чем отличается РольДоступна от ПравоДоступа?

РольДоступна проверяет наличие у текущего пользователя конкретной роли целиком. ПравоДоступа проверяет конкретное право (например, «Чтение») на конкретный объект метаданных — с учётом всех ролей пользователя суммарно.

Опасно ли программно менять роли пользователей?

Да, при ошибке можно лишить пользователей доступа, включая администраторов. Перед массовыми изменениями сделайте резервную копию базы и сначала протестируйте код на копии, оставив себе запасную учётную запись с полными правами.

Итог

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

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