Как в 1С 8.3 узнать, у каких пользователей есть права на определенный справочник

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

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

Способ 1. Использование встроенного отчета «Права доступа»

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

  1. Перейдем в раздел Администрирование и выберем пункт Настройки пользователей и прав.
  2. В открывшемся окне найдем гиперссылку Отчеты по правам доступа.
  3. Нас интересует отчет Права доступа. Откроем его.
  4. В поле «Объект» выберем тип Метаданные, а затем найдем в списке нужный нам справочник (например, Контрагенты или Номенклатура).
  5. Нажмем кнопку «Сформировать».

Проанализируем результат: система выведет таблицу, где в строках будут указаны пользователи, а в колонках — разрешенные действия (Чтение, Просмотр, Редактирование и т.д.). Этот метод позволяет увидеть итоговую картину прав, не углубляясь в структуру ролей.

Способ 2. Анализ через регистр сведений «Права ролей»

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

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

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

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

Способ 3. Программная проверка через консоль кода

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

Посмотрим на пример логики, которую можно реализовать в обработке «Консоль кода»:


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

Данный метод хорош тем, что он учитывает не только роли, назначенные непосредственно пользователю, но и все механизмы платформы 1С:Предприятие 8.3 по расчету прав доступа в текущий момент времени.

Способ 4. Анализ цепочки «Объект — Профиль — Группа доступа»

В конфигурациях на управляемых формах права редко назначаются «голыми» ролями. Разберем иерархию доступа, чтобы понимать, откуда у пользователя появляются права:

  1. Роль: Определяет базовое право в конфигураторе (например, ЧтениеКонтрагентов).
  2. Профиль группы доступа: Это набор ролей (например, профиль «Бухгалтер» содержит десятки ролей).
  3. Группа доступа: Связывает Профиль с конкретными Пользователями.

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

Нюансы Row Level Security (RLS)

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

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

Дополнительные инструменты

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

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

← На главную