В процессе администрирования и доработки конфигураций на платформе 1С:Предприятие разработчики часто сталкиваются с ситуацией, когда у пользователя с минимальными правами внезапно отображаются интерфейсные элементы или команды, доступ к которым должен быть ограничен. Типичный пример — общая команда ПерсональныеНастройки в конфигурации «Зарплата и управление персоналом» (ЗУП 3), которая неожиданно появляется в меню «Главное» у пользователя без административных прав. Выяснить вручную, какая именно роль предоставляет доступ к объекту, бывает крайне сложно из-за сотен существующих ролей в современных типовых решениях.
В этой статье мы подробно разберем, как быстро найти роль, дающую права на общую команду, как исключить это право и как эффективно проанализировать весь состав прав конкретной роли без ручного перебора всех объектов метаданных.
Самый быстрый способ определить, в каких именно ролях установлены права на конкретный объект (включая общие команды), — это использование специализированного интерфейса работы с ролями в Конфигураторе. Выполним следующие шаги:
Общие -> Общие команды -> ПерсональныеНастройки.Просмотр или Прослушивание для данной команды.Именно этот метод позволяет быстро обнаружить, что помимо роли ПолныеПрава, отметка также установлена в малозаметных ролях, таких как БазовыеПраваЗарплатаКадрыРасширенная.
Если права на роль настроены корректно, но команда все равно отображается в интерфейсе, необходимо выяснить, как именно она выводится на экран. Возможно, дело в командном интерфейсе подсистем или рабочего стола. Разберем, как это проверить:
ПерсональныеНастройки.Когда вы обнаружили подозрительную роль (например, БазовыеПраваЗарплатаКадрыРасширенная) и хотите понять, какие еще права она предоставляет пользователю, перещелкивать каждый объект метаданных вручную не имеет смысла. Для этого в платформе предусмотрен штатный механизм выгрузки отчета.
Рассмотрим по шагам, как сформировать отчет по правам роли:
БазовыеПраваЗарплатаКадрыРасширенная).Полученный отчет покажет детальную структуру роли: все объекты метаданных и конкретные разрешенные действия (Чтение, Просмотр, Изменение, Редактирование и т. д.). Данный отчет можно сохранить в текстовый документ или таблицу Excel для последующего поиска и анализа.
Для разработчиков, привыкших работать с текстовыми редакторами, существует еще более прогрессивный и быстрый метод поиска прав по всей конфигурации. Он особенно полезен при работе с крупными базами данных:
CommonCommand.ПерсональныеНастройки
.role), в которых содержится упоминание этой команды с установленными правами доступа. Пример структуры прав в XML-файле роли выглядит следующим образом:
<object>
<name>CommonCommand.ПерсональныеНастройки</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
Поскольку современные конфигурации (включая ЗУП 3) разрабатываются на базе БСП (Библиотеки стандартных подсистем), детальный аудит прав можно провести непосредственно в пользовательском режиме предприятия без обращения к Конфигуратору.
Разберем, как воспользоваться встроенным отчетом по правам доступа:
Если стандартных отчетов БСП недостаточно, можно воспользоваться внешними обработками с порталов для разработчиков (например, «Матрица прав доступа»). Такие инструменты позволяют в удобной графической форме сопоставить роли и объекты метаданных.
Выяснив техническую сторону вопроса, важно понять логику разработчиков фирмы «1С». Почему роль БазовыеПраваЗарплатаКадрыРасширенная, которая должна быть максимально ограниченной, содержит права на команду ПерсональныеНастройки?
Дело в том, что базовые права спроектированы как обязательный технологический фундамент для любого пользователя информационной базы. Без этой роли сеанс работы просто не сможет корректно инициализироваться. Команда Персональные настройки включена в этот перечень намеренно: любой сотрудник, даже обладающий доступом только к просмотру расчетного листка, должен иметь возможность индивидуально настроить интерфейс под себя — изменить масштаб отображения форм, отрегулировать вывод оповещений, настроить параметры печати или выбрать принтер. Ограничение этих базовых сервисных функций обычно не несет практической пользы для безопасности системы, поэтому разработчики оставляют их доступными по умолчанию для всех категорий пользователей.