Администрирование · 10 мин
Как получить список ролей в 1С
Способы получить список ролей в 1С: через конфигуратор, метаданные, запрос к пользователям ИБ и типовые отчёты. Примеры кода, проверка прав и типичные ошибки.
Список ролей в 1С может понадобиться в разных ситуациях: при настройке прав доступа, аудите безопасности, разработке ограничений на уровне записей (RLS) или проверке, какие роли назначены конкретному пользователю. В зависимости от задачи используются разные инструменты — от визуального просмотра в конфигураторе до программного обращения к метаданным и списку пользователей информационной базы.
Важно различать два разных «списка ролей». Первый — это роли, определённые в конфигурации (объекты метаданных): они существуют в базе независимо от пользователей. Второй — роли, фактически назначенные конкретным пользователям информационной базы. Ниже разобраны оба варианта с конкретными способами получения данных.
Просмотр ролей в конфигураторе
Самый простой способ увидеть все роли, существующие в конфигурации, — открыть конфигуратор и в дереве объектов конфигурации развернуть ветку «Общие → Роли». Здесь перечислены все роли, определённые разработчиком или поставщиком типового решения. Двойной клик по роли открывает окно редактирования прав, где видно, к каким объектам метаданных роль даёт доступ.
Для просмотра прав по всем ролям сразу удобнее использовать команду «Все роли»: правый клик по корню конфигурации → «Все роли», либо меню «Конфигурация → Все роли». Откроется таблица, где строки — объекты метаданных, колонки — роли, а на пересечении — установленные права. Это основной инструмент аудита прав при настройке доступа.
Если конфигурация типовая и находится на поддержке, изменять роли напрямую не рекомендуется: при обновлении изменения могут быть утеряны. Для просмотра это ограничение не важно, но помните о нём, если планируете доработку прав.
- 1Запустите конфигуратор и откройте конфигурацию (Конфигурация → Открыть конфигурацию)
- 2В дереве объектов разверните ветку «Общие → Роли» — это перечень всех ролей
- 3Для сводной таблицы прав: правый клик по корню конфигурации → «Все роли»
- 4Проверьте результат: таблица содержит строки-объекты и колонки-роли с отметками прав
Просмотр ролей пользователя через список пользователей
Чтобы узнать, какие роли назначены конкретному пользователю, откройте в конфигураторе меню «Администрирование → Пользователи». Выберите пользователя из списка и откройте его свойства двойным кликом. На вкладке «Прочее» отображается список доступных ролей с флажками: отмеченные — назначены этому пользователю.
В клиентском приложении (режиме 1С:Предприятие) в типовых конфигурациях аналогичные сведения доступны в разделе администрирования пользователей: карточка пользователя содержит перечень его ролей или профилей групп доступа, если используется механизм профилей из Библиотеки стандартных подсистем.
Обратите внимание: если в конфигурации применяются профили групп доступа, права пользователя определяются не только напрямую назначенными ролями, но и профилями. В этом случае простой просмотр флажков ролей в конфигураторе не даст полной картины — нужно анализировать ещё и состав профилей.
Программное получение списка ролей конфигурации
Когда список ролей нужен в коде — например, для отчёта по правам или проверки логики — используется коллекция метаданных Метаданные.Роли. Перебор этой коллекции даёт все роли, определённые в конфигурации, независимо от пользователей.
Для Каждого Роль Из Метаданные.Роли Цикл
Сообщить(Роль.Имя + " — " + Роль.Синоним);
КонецЦикла;
У каждого объекта метаданных роли доступны свойства Имя (внутреннее имя, используется в коде) и Синоним (представление для пользователя). Для проверки прав конкретной роли на объект применяется функция ПравоДоступа() — но она проверяет права текущего пользователя, а не произвольной роли.
Если нужно проверить, есть ли у роли конкретное право на объект, используется метод ПравоДоступа с параметрами или анализ через объекты метаданных в расширенных сценариях. На практике для аудита чаще выгружают таблицу «Все роли» из конфигуратора или используют специализированные обработки анализа прав.
Для Каждого Роль Из Метаданные.Роли Цикл
Сообщить(Роль.Имя);
КонецЦикла;Программное получение ролей пользователей информационной базы
Список пользователей и назначенных им ролей получают через менеджер ПользователиИнформационнойБазы. Метод ПолучитьПользователей() возвращает массив пользователей, а у каждого пользователя есть коллекция Роли с назначенными ему ролями.
Пользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого Пользователь Из Пользователи Цикл
СписокРолей = "";
Для Каждого Роль Из Пользователь.Роли Цикл
СписокРолей = СписокРолей + Роль.Имя + "; ";
КонецЦикла;
Сообщить(Пользователь.Имя + ": " + СписокРолей);
КонецЦикла;
Такой код удобно выполнить через внешнюю обработку или консоль кода, чтобы выгрузить соответствие «пользователь — роли» для всего списка. Для больших баз результат лучше выводить в табличный документ или сохранять в файл, а не в окно сообщений.
Для проверки прав текущего пользователя без перебора ролей есть функция РольДоступна("ИмяРоли") — она возвращает Истина, если у текущего сеанса есть указанная роль. Это стандартный способ ветвления логики по правам в коде.
Выгрузка и анализ списка ролей в типовых конфигурациях
В типовых конфигурациях на базе БСП (1С:ERP, УТ, Бухгалтерия и др.) права обычно управляются через профили групп доступа. В этом случае список ролей как таковой вторичен: пользователю назначаются группы доступа, группы связаны с профилями, а профили — с ролями. Полную картину даёт отчёт «Права доступа» или аналогичный механизм в разделе администрирования.
Для аудита удобно выгрузить таблицу «Все роли» из конфигуратора: в окне «Все роли» можно скопировать содержимое или сохранить табличный документ через «Файл → Сохранить копию». Полученный файл пригоден для сравнения настроек между базами или для передачи специалисту по безопасности.
Если конфигураций несколько (например, основная и расширения), помните, что расширения могут добавлять собственные роли или изменять существующие. Список ролей в дереве конфигурации показывает итоговый состав с учётом подключённых расширений, если они загружены.
Сравнение способов получения списка ролей
Быстрый визуальный просмотр всех ролей конфигурации. Не показывает назначение ролей пользователям.
Сводная таблица прав всех ролей на все объекты. Подходит для аудита, но громоздко в больших конфигурациях.
Показывает роли конкретных пользователей. Неудобно для массового анализа по всем пользователям.
Гибкая выгрузка в нужном формате. Требует прав администратора и навыков работы с кодом.
Типичные ошибки и ограничения
Частая ошибка — путать роли конфигурации и профили групп доступа. Профиль — прикладной объект справочника, роль — объект метаданных. Запрос к справочнику профилей не вернёт список ролей конфигурации, и наоборот: перебор метаданных не покажет, какие профили назначены пользователю.
Вторая ошибка — попытка получить список пользователей без права «Администрирование». Метод ПользователиИнформационнойБазы.ПолучитьПользователей() вызовет исключение нарушения прав доступа. Для регламентных заданий такой код должен выполняться от имени пользователя с полными правами.
Третья ошибка — забыть, что в файловой базе список пользователей хранится отдельно от конфигурации, и при переносе только файла конфигурации (.cf) роли пользователей не переносятся. Для переноса пользователей с их ролями используйте выгрузку/загрузку информационной базы целиком (.dt).
Проверка результата
После получения списка ролей убедитесь, что данные полные и корректные. Сверьте количество ролей в дереве конфигурации с результатом программного перебора — они должны совпадать. Для пользователя сравните флажки в карточке пользователя с выводом кода: расхождения обычно означают, что часть прав задана через профили групп доступа.
При аудите прав полезно проверить критичные роли: полные права, администрирование, доступ к регламентным операциям. Убедитесь, что такие роли назначены только тем пользователям, которым они действительно необходимы.
Как проверить результат
Значения совпадают
В коде ролей меньше — проверьте расширения конфигурации
Списки совпадают
Расхождение — права назначены через профили групп доступа
Код отрабатывает без исключений
Ошибка нарушения прав — нет права «Администрирование»
Частые вопросы
Как получить список всех ролей конфигурации одним запросом?
Запросом к метаданным получить роли нельзя — роли не хранятся в таблицах базы данных. Используйте перебор коллекции Метаданные.Роли в коде или просмотр ветки «Общие → Роли» в конфигураторе.
Как узнать, какие роли есть у текущего пользователя?
Программно — через ПользователиИнформационнойБазы.ТекущийПользователь() и перебор его коллекции Роли. Для проверки конкретной роли проще использовать функцию РольДоступна("ИмяРоли").
Почему в карточке пользователя мало ролей, а доступа много?
Вероятно, в конфигурации используются профили групп доступа (механизм БСП). Основные права назначаются через профили, а напрямую пользователю добавлены лишь базовые роли. Проверьте состав профилей в разделе администрирования.
Можно ли выгрузить список ролей в Excel?
Да. Откройте «Все роли» в конфигураторе, выделите содержимое таблицы и скопируйте в Excel, либо сохраните табличный документ через «Файл → Сохранить копию» в формате Excel. Программно можно сформировать табличный документ и сохранить его методом Записать.
Чем отличается РольДоступна от ПравоДоступа?
РольДоступна проверяет наличие у текущего пользователя конкретной роли целиком. ПравоДоступа проверяет конкретное право (например, «Чтение») на конкретный объект метаданных — с учётом всех ролей пользователя суммарно.
Опасно ли программно менять роли пользователей?
Да, при ошибке можно лишить пользователей доступа, включая администраторов. Перед массовыми изменениями сделайте резервную копию базы и сначала протестируйте код на копии, оставив себе запасную учётную запись с полными правами.
Что важно запомнить
Роли конфигурации смотрят в ветке «Общие → Роли» или через Метаданные.Роли, роли пользователей — в карточке пользователя или через ПользователиИнформационнойБазы. В типовых решениях учитывайте профили групп доступа, а любые изменения ролей выполняйте только после резервного копирования.