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