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

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

При работе с крупными решениями на платформе 1С, такими как 1С:ERP, 1С:Комплексная автоматизация 2 или 1С:Управление торговлей 11, разработчики часто сталкиваются с проблемой анализа прав доступа. В таких конфигурациях количество ролей может исчисляться сотнями и даже тысячами. Стандартная матрица в окне «Все роли» становится практически бесполезной из-за бесконечного горизонтального скроллинга и низкой производительности интерфейса. Рассмотрим эффективные способы решения этой задачи, от простых встроенных фильтров до программных методов и профессиональных инструментов.

Использование фильтров в окне прав конкретного объекта

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

  1. Найдем нужный объект в дереве метаданных Конфигуратора.
  2. Нажмем на него правой кнопкой мыши и выберем пункт «Права».
  3. В открывшемся окне в левой части отобразится список всех ролей, существующих в системе. Чтобы не искать нужную роль вручную, обратим внимание на командную панель этого окна.
  4. Нажмем кнопку «Установить фильтр» (иконка в виде лейки).
  5. В появившемся меню выберем опцию «Показывать только роли, имеющие права на объект».

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

Поиск ссылок на объект в ролях

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

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

Встроенные отчеты БСП в пользовательском режиме

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

Перейдем в раздел «Администрирование» — «Настройки пользователей и прав». Там мы найдем отчет «Анализ прав доступа». Этот инструмент позволяет:

Этот способ особенно полезен, когда нужно понять, почему конкретный пользователь видит или не видит объект, так как отчет учитывает иерархию «Профиль — Роль — Пользователь».

Программный метод через консоль кода

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


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

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

Использование «Инструментов разработчика» (ИР)

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

Работа в среде EDT (Enterprise Development Tools)

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

Важный нюанс: Ограничения на уровне записей (RLS)

Выяснив, какая роль дает доступ к объекту, нельзя забывать об RLS. В крупных конфигурациях (ERP, КА) наличие галочки «Чтение» в роли вовсе не означает, что пользователь увидит данные. Выясним причину возможного отсутствия доступа: в нижней части окна настройки роли для каждого объекта может быть прописан шаблон ограничения доступа. Если там указано условие, необходимо проверить, соответствуют ли данные пользователя (например, его подразделение или организация) условиям, прописанным в Ограничение доступа. Анализ прав без учета RLS часто приводит к ошибочным выводам в задачах технической поддержки пользователей.

← На главную