В процессе администрирования 1С:Предприятие 8.3 часто возникает задача аудита прав доступа. Например, когда необходимо выяснить, кто из сотрудников может просматривать или редактировать конфиденциальные данные в конкретном справочнике. В современных конфигурациях, таких как 1С:Бухгалтерия 8.3, система прав устроена достаточно сложно: роли объединяются в профили, профили в группы доступа, а те, в свою очередь, назначаются пользователям. Разберем несколько эффективных способов решения этой задачи, от простых встроенных отчетов до программного анализа.
Если ваша конфигурация построена на базе Библиотеки стандартных подсистем (БСП), то самым быстрым и наглядным способом будет использование типового отчета. Рассмотрим, как его сформировать:
Контрагенты или Номенклатура).Проанализируем результат: система выведет таблицу, где в строках будут указаны пользователи, а в колонках — разрешенные действия (Чтение, Просмотр, Редактирование и т.д.). Этот метод позволяет увидеть итоговую картину прав, не углубляясь в структуру ролей.
Иногда отчеты могут не показывать полную техническую информацию, или нам нужно быстро проверить права в консоли запросов. В современных версиях конфигураций существует специальный вспомогательный регистр сведений Права ролей. Рассмотрим, как с ним работать:
Этот регистр хранит развернутую информацию о том, какая роль какими правами обладает на каждый объект метаданных. Чтобы найти пользователей через этот регистр, выполним следующие шаги:
Права ролей.Важное примечание: Данные в этом регистре могут устаревать после обновления конфигурации. Если вы видите несоответствия, рекомендуется запустить процедуру обновления параметров работы программы, которая пересчитает права.
Для программиста самый надежный способ — это использование встроенной функции ПравоДоступа(). Это исключает человеческий фактор при анализе сложных иерархий групп доступа. Мы можем написать небольшой скрипт, который переберет всех пользователей базы данных и проверит наличие прав.
Посмотрим на пример логики, которую можно реализовать в обработке «Консоль кода»:
ВыборкаПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого ТекущийПользователь Из ВыборкаПользователей Цикл
Если ПравоДоступа("Редактирование", Метаданные.Справочники.ИмяВашегоСправочника, ТекущийПользователь) Тогда
Сообщить("Пользователь: " + ТекущийПользователь.Имя + " имеет права на редактирование.");
КонецЕсли;
КонецЦикла;
Данный метод хорош тем, что он учитывает не только роли, назначенные непосредственно пользователю, но и все механизмы платформы 1С:Предприятие 8.3 по расчету прав доступа в текущий момент времени.
В конфигурациях на управляемых формах права редко назначаются «голыми» ролями. Разберем иерархию доступа, чтобы понимать, откуда у пользователя появляются права:
ЧтениеКонтрагентов).Чтобы выяснить, у кого есть права, мы можем пойти «от обратного»: сначала найти все Профили групп доступа, в которые включена роль с правами на наш справочник. Затем посмотреть, какие Группы доступа используют эти профили. Все участники этих групп и будут искомыми пользователями.
Проанализируем важный момент: наличие права доступа на уровне метаданных еще не означает, что пользователь увидит данные. В 1С часто используется механизм RLS (ограничение прав на уровне записей).
Выясним причину, почему это важно: даже если роль разрешает «Чтение» справочника Контрагенты, в настройках прав доступа может быть установлено ограничение «По организациям». Если пользователю не разрешена ни одна организация, справочник для него будет пуст. Поэтому при аудите прав всегда проверяйте настройки в разделе Администрирование — Группы доступа, чтобы увидеть действующие ограничения по конкретным разрезам (филиалы, кассы, склады).
Для более детального анализа профессионалы используют внешние обработки, такие как «Инструменты разработчика». В них есть специализированные консоли анализа прав, которые позволяют построить матрицу доступа. Это особенно полезно в крупных корпоративных системах (ERP, КА), где количество ролей исчисляется сотнями, а профилей — десятками.
Подводя итог, можно сказать, что для быстрого ответа лучше всего подходит встроенный отчет Права доступа, а для глубокого технического анализа — запрос к регистру Права ролей или прямой программный перебор через ПравоДоступа().