Как узнать, какие права предоставляет конкретная роль в 1С:Предприятие?

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

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

Способ 1: Использование возможностей Конфигуратора

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

1. Вывод списка из окна роли. Откроем нужную нам роль в дереве метаданных. В нижней части окна редактирования роли нажмем кнопку "Действия" и выберем пункт "Вывести список". Система предложит выбрать колонки (объекты, виды прав). После нажатия "ОК" будет сформирован текстовый или табличный документ со всеми установленными галочками. Это самый простой способ визуализировать права "здесь и сейчас".

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

Способ 2: Стандартные отчеты в режиме «1С:Предприятие» (БСП)

В современных конфигурациях, построенных на базе Библиотеки стандартных подсистем (БСП), таких как ERP, УТ 11 или Бухгалтерия 3.0, реализован мощный механизм анализа прав. Рассмотрим, как им воспользоваться:

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

Способ 3: Программный вывод прав на встроенном языке

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

Рассмотрим пример кода, который выводит в сообщение все справочники и документы, на которые у конкретной роли есть право Чтение:


// Определяем роль, которую хотим проанализировать
ИмяРоли = "ДобавлениеИзменениеСделок";
ОбъектРоли = Метаданные.Роли[ИмяРоли];

Сообщить("Анализ прав для роли: " + ИмяРоли);

// Проверяем права на справочники
Сообщить("--- Справочники ---");
Для каждого МетаДанное Из Метаданные.Справочники Цикл
    Если ПравоДоступа("Чтение", МетаДанное, ОбъектРоли) Тогда
        Сообщить("Разрешено чтение: " + МетаДанное.Имя);
    КонецЕсли;
КонецЦикла;

// Проверяем права на документы
Сообщить("--- Документы ---");
Для каждого МетаДанное Из Метаданные.Документы Цикл
    Если ПравоДоступа("Чтение", МетаДанное, ОбъектРоли) Тогда
        Сообщить("Разрешено чтение: " + МетаДанное.Имя);
    КонецЕсли;
КонецЦикла;

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

Способ 4: Использование среды разработки 1C:EDT

Проанализируем современные инструменты разработки. Если вы используете 1C:EDT (Enterprise Development Tool), то работа с ролями там организована значительно удобнее. В EDT существует матричный редактор ролей, который позволяет:

Это избавляет от необходимости "протыкивать" дерево метаданных, как это происходит в классическом конфигураторе.

Способ 5: Внешние обработки и инструменты

Существует множество бесплатных и коммерческих инструментов для анализа прав. Посмотрим на наиболее популярные решения, такие как консоли анализа прав (например, с портала Инфостарт). Такие обработки позволяют:

Важно помнить, что если роль использует RLS, то простое наличие права Чтение не гарантирует доступ ко всем данным. Нужно обязательно проверять текст запроса в колонке "Ограничение доступа" в окне редактирования роли.

Резюме

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

← На главную