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

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

1. Получение списка ролей через Конфигуратор 1С

Самый простой способ — использовать встроенные инструменты конфигуратора. Этот метод не требует знания кода и подходит для разовых задач. Откройте базу в режиме Конфигуратор (с правами администратора) и выполните следующие шаги:

  • 📌 Перейдите в меню Администрирование → Пользователи и права (для управляемых форм) или Сервис → Пользователи (для обычных форм).
  • 🔍 В открывшемся окне выберите вкладку Роли — здесь отображается полный перечень ролей, доступных в текущей конфигурации.
  • 📋 Чтобы экспортировать список, нажмите Все действия → Выгрузить список (или используйте комбинацию Ctrl+Shift+S). Файл сохранится в формате .txt или .mxl.

Обратите внимание: в этом разделе отображаются все роли, включая системные (например, ПолныеПрава) и пользовательские. Если список слишком большой, используйте фильтр по имени — введите часть названия в поле поиска справа.

Открыть базу в режиме Конфигуратор|Перейти в Администрирование → Пользователи и права|Выбрать вкладку "Роли"|Нажать "Выгрузить список" (Ctrl+Shift+S)|Сохранить файл в удобном формате-->

⚠️ Внимание: В версиях 1С 8.3.18 и ниже экспорт списка ролей может не поддерживать формат .mxl. В этом случае используйте копирование данных в буфер обмена (Ctrl+C) с последующей вставкой в Excel или текстовый редактор.

2. Использование отчёта «Права пользователей»

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

  1. В режиме 1С:Предприятие перейдите в Администрирование → Права пользователей → Права пользователей.
  2. В настройках отчёта выберите параметр Показывать роли и снимите галочку с Показывать пользователей (если нужны только роли).
  3. Нажмите Сформировать — в результате получите таблицу со всеми ролями и их свойствами (например, Имя, Пометка удаления, Комментарий).

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

Поле отчёта Описание Пример значения
Имя Уникальный идентификатор роли в конфигурации Бухгалтер
Синоним Пользовательское название роли (может отличаться от имени) Главный бухгалтер (полные права)
ПометкаУдаления Признак, что роль помечена на удаление (да/нет) Нет
Комментарий Описание роли, заданное разработчиком Доступ к регистрам бухгалтерии и отчётам

Ручной экспорт через Конфигуратор|Отчёт "Права пользователей"|Запросы к метаданным|Скрипты на встроенном языке|Другое-->

3. Программное получение списка ролей на встроенном языке

Для автоматизации задач (например, при разработке отчётов или обработок) используйте встроенный язык . Ниже приведён универсальный код, который возвращает список ролей в виде таблицы значений:

Процедура ПолучитьСписокРолей()

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

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

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

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

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

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

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

НоваяСтрока.Синоним = Роль.Синоним;

НоваяСтрока.Комментарий = Роль.Комментарий;

КонецЦикла;

Возврат ТаблицаРолей;

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

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

    Запись = Новый ЗаписьДанныхXML;

Запись.УстановитьДанные(ТаблицаРолей);

Запись.Записать(Новый Файл("C:\Temp\СписокРолей.xml"));

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

Если НЕ Роль.Имя = "ПолныеПрава" Тогда ...-->

4. Запрос к метаданным для анализа ролей

Для сложного анализа (например, поиска ролей с определёнными правами) используйте запросы к метаданным. Этот метод гибче, чем отчёт, и позволяет получать данные в структурированном виде. Пример запроса, возвращающего роли с их правами на объекты:

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Роли.Имя КАК Роль,

| РолиПрава.Тип КАК ТипОбъекта,

| РолиПрава.Имя КАК Объект,

| РолиПрава.Права КАК Права

|ИЗ

| Метаданные.Роли КАК Роли

| ЛЕВОЕ СОЕДИНЕНИЕ Метаданные.РолиПрава КАК РолиПрава

| ПО Роли.Имя = РолиПрава.Роль

|УПОРЯДОЧИТЬ ПО

| Роль, ТипОбъекта, Объект";

Результат = Запрос.Выполнить();

Этот запрос вернёт таблицу, где каждой роли соответствуют объекты конфигурации (справочники, документы, отчёты) и назначенные права (например, Чтение, Изменение). Для упрощения анализа можно добавить фильтрацию:

Запрос.Текст =

"ВЫБРАТЬ РАЗЛИЧНЫЕ

| Роли.Имя КАК Роль

|ИЗ

| Метаданные.Роли КАК Роли

|ГДЕ

| Роли.Имя НЕ ПОДОБНО ""%Администратор%""";

⚠️ Внимание: Запросы к метаданным могут значительно нагружать сервер при большом количестве ролей (более 500). Для производственных баз выполняйте их в нерабочее время или на тестовом сервере.

5. Анализ прав конкретной роли

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

Процедура АнализПравРоли(ИмяРоли)

Роль = Метаданные.Роли.НайтиПоИмени(ИмяРоли);

Если Роль = Неопределён Тогда

Сообщить("Роль не найдена!");

Возврат;

КонецЕсли;

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

Сообщить(СтрШаблон("Объект: %1, Права: %2",

Право.Объект.Имя, Право.Права));

КонецЦикла;

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

Для визуализации результатов можно создать дерево прав в обработке:

  1. Добавьте реквизит типа ДеревоЗначений.
  2. В цикле заполните узлы дерева, группируя объекты по типам (справочники, документы и т.д.).
  3. Используйте иконки для обозначения уровня прав (например, 🔒 для Чтение, ✏️ для Изменение).

Для ускорения работы с большими конфигурациями (например, 1С:ERP или 1С:УТ 11) предварительно кэшируйте метаданные в коллекцию:

МетаданныеКэш = Новый Соответствие;

Для Каждого Объект Из Метаданные Цикл

МетаданныеКэш.Вставить(Объект.Имя, Объект);

КонецЦикла;

Как экспортировать права роли в JSON?

Используйте библиотеку ЗаписьJSON:

Запись = Новый ЗаписьJSON;

Запись.УстановитьДанные(ПолучитьПраваРоли("Бухгалтер"));

Запись.Записать(Новый Файл("C:\Temp\ПраваБухгалтера.json"));

Файл будет содержать структурированные данные, пригодные для интеграции с внешними системами.

6. Автоматизация через REST API (для 1С:Предприятие 8.3.20+)

В современных версиях (начиная с 8.3.20) доступен REST-интерфейс, позволяющий получать данные о ролях удалённо. Этот метод актуален для облачных решений или распределённых систем. Пример запроса к API:

GET /hs/role/list HTTP/1.1

Host: your-1c-server.ru

Authorization: Basic base64-credentials

Content-Type: application/json

Ответ сервера будет содержать JSON-массив с описанием ролей:

{

"roles": [

{

"name": "Бухгалтер",

"synonym": "Бухгалтерские права",

"rights": [

{"object": "Справочник.Контрагенты", "access": "read,write"},

{"object": "Документ.ПоступлениеТоваров", "access": "read"}

]

},

...

]

}

Для работы с API необходимо:

  • 🔑 Настроить аутентификацию (обычно используется Basic Auth или токены).
  • 📡 Убедиться, что на сервере включён веб-сервис (в настройках публикации).
  • 🔧 Проверить права доступа пользователя, от имени которого выполняется запрос (требуется роль с правом Администрирование).
⚠️ Внимание: REST API в может быть отключён по умолчанию из соображений безопасности. Перед использованием согласуйте настройки с администратором сервера.
💡

REST API удобен для интеграции 1С с внешними системами (например, BI-аналитикой или SIEM), но требует дополнительной настройки сервера и защиты канала связи (рекомендуется использовать HTTPS).

7. Экспорт ролей для миграции или резервного копирования

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

  1. В конфигураторе выберите Файл → Сохранить данные конфигурации в файлы.
  2. В диалоговом окне отметьте галочкой Роли и снимите остальные флажки.
  3. Укажите папку для сохранения (например, C:\Backup\Roles) и нажмите Сохранить.
  4. Для импорта в другую базу используйте Файл → Загрузить данные конфигурации из файлов.

Файлы ролей сохраняются в формате .xml и содержат полное описание прав, включая:

  • 📄 Имя и синоним роли.
  • 🔐 Права на объекты (чтение, изменение, удаление и т.д.).
  • 📝 Параметры роли (например, ограничения по организациям).

Для автоматизации резервного копирования напишите скрипт на PowerShell или Bash, который будет запускать в режиме /Execute с параметрами выгрузки:

"C:\Program Files\1cv8\8.3.23.1234\bin\1cv8.exe"

/S "C:\Bases\MainBase"

/N "Admin"

/P "password"

/Execute "ВыгрузитьРоли();"

/Out "C:\Logs\ExportRoles.log"

8. Анализ ролей с помощью внешних инструментов

Для глубокого аудита прав используйте специализированные утилиты:

  • 🛠️ 1С:Аудит — встроенный инструмент для анализа безопасности, доступен в дистрибутиве платформы.
  • 🔍 EDT (1С:Enterprise Development Tools) — позволяет визуализировать связи между ролями и объектами.
  • 📊 Сторонние обработки, например, "Анализ прав пользователей" от Инфостарт.

Пример отчёта из 1С:Аудит:

Роль Количество объектов с правами Критические права
Бухгалтер 42 Удаление документов
МенеджерПоПродажам 18 Изменение цен

Внешние инструменты полезны для:

  • 🔎 Поиска избыточных прав (например, роли с правами на удаление, которые не должны их иметь).
  • 📈 Сравнения ролей между разными базами (например, при обновлении конфигурации).
  • 🛡️ Выявления уязвимостей (например, ролей с правами на выполнение опасных операций).
⚠️ Внимание: Детали работы внешних инструментов (например, поддерживаемые версии или форматы отчётов) могут меняться. Перед использованием проверяйте совместимость с вашей конфигурацией в документации разработчика.

FAQ: Частые вопросы о ролях в 1С

Как найти роль, которая даёт доступ к конкретному документу?

Используйте запрос к метаданным с фильтром по типу объекта:

ВЫБРАТЬ РАЗЛИЧНЫЕ Роли.Имя

ИЗ Метаданные.РолиПрава КАК РолиПрава

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Метаданные.Роли КАК Роли

ПО РолиПрава.Роль = Роли.Имя

ГДЕ РолиПрава.Тип = "Документ.ПоступлениеТоваров"

Можно ли изменить системную роль (например, ПолныеПрава)?

Нет, системные роли (например, ПолныеПрава, Администратор) нельзя модифицировать. Вы можете только создать новую роль на их основе или скопировать права в пользовательскую роль.

Как экспортировать роли вместе с пользователями, которым они назначены?

Скомбинируйте данные из Метаданные.Роли и Пользователи.ПрофилиПользователей:

ВЫБРАТЬ

Пользователи.Имя КАК Пользователь,

Роли.Имя КАК Роль

ИЗ

Метаданные.Пользователи КАК Пользователи

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Метаданные.ПользователиРоли КАК ПользователиРоли

ПО Пользователи.Имя = ПользователиРоли.Пользователь

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Метаданные.Роли КАК Роли

ПО ПользователиРоли.Роль = Роли.Имя

Что делать, если роль не отображается в списке, но существует в конфигурации?

Вероятные причины:

  • Роль помечена на удаление (проверьте флаг ПометкаУдаления).
  • Отсутствуют права на просмотр метаданных у текущего пользователя.
  • Роль является динамической (создана программно и не сохранена в конфигурации).

Для диагностики выполните запрос:

ВЫБРАТЬ Роли.Имя, Роли.ПометкаУдаления

ИЗ Метаданные.Роли КАК Роли

Как сравнить роли между двумя базами 1С?

Используйте внешнюю обработку (например, "Сравнение конфигураций" из 1С:EDT) или напишите скрипт:

  1. Выгрузите роли из обеих баз в JSON или XML.
  2. Сравните файлы с помощью утилит вроде WinMerge или Beyond Compare.
  3. Обратите внимание на различия в правах на объекты с одинаковыми именами.