Часто возникает ситуация, когда в типовой конфигурации 1С:Бухгалтерия 3 (БП 3) необходимо предоставить пользователю (например, менеджеру по продажам) доступ к определенным отчетам из раздела "Руководителю". Если просто включить типовую роль чтения отчетов, нужный раздел в интерфейсе может не появиться. При попытке решить задачу через расширение разработчики сталкиваются с ошибкой сохранения. Рассмотрим подробнее, почему так происходит и разберем по шагам рабочие способы решения проблемы.
Выясним причину, по которой назначение роли на чтение отчета не выводит сам раздел в интерфейс пользователя. Этому есть несколько объяснений:
Просмотр на саму подсистему верхнего уровня (в дереве метаданных это Подсистемы — Руководителю). Наличия прав только на входящие в нее отчеты недостаточно.Пытаясь решить проблему, мы можем создать расширение, добавить в него свою роль и заимствовать типовой отчет, чтобы дать на него права (использование и просмотр). Однако при сохранении расширения возникает критическая ошибка:
"Назначение прав доступа на заимствованные объекты основными ролями в расширениях недопустимо"
Посмотрим на причину: платформа строго ограничивает назначение прав. Свойство расширения ОсновныеРоли предназначено для автоматического управления доступом исключительно к собственным новым объектам расширения. Назначать права на заимствованные объекты основной роли запрещено на уровне платформы.
Решение: Откроем палитру свойств самого расширения (корневой элемент дерева) и полностью очистим поле ОсновныеРоли. После этого наша добавленная роль станет дополнительной, и платформа 1С позволит успешно сохранить настройки прав на просмотр заимствованных отчетов.
Если мы не хотим выводить весь раздел "Руководителю" для менеджера по продажам, рассмотрим несколько эффективных альтернативных решений.
Вариант 1. Простые пользовательские настройки (без программирования)
Самый быстрый способ, если права на отчет фактически есть, но его нет в интерфейсе:
Избранное.Вариант 2. Механизм дополнительных отчетов и обработок
Сохраним типовой отчет как внешний файл. Перейдем в раздел администрирования и подключим его через типовой функционал ДополнительныеОтчетыИОбработки. В настройках публикации укажем размещение в доступном пользователю разделе (например, "Продажи") и назначим быстрый доступ нужным сотрудникам.
Вариант 3. Перенос отчета в другой раздел через расширение
Заимствуем необходимые отчеты в наше расширение. Далее просто включим их в состав той подсистемы, к которой у менеджера уже есть полный доступ (например, подсистема "Продажи"). Раздел "Руководителю" выводить не потребуется, а отчеты органично впишутся в рабочее место менеджера.
Вариант 4. Создание программной команды открытия
В расширении мы можем создать новую общую команду и разместить её в командном интерфейсе раздела "Продажи". В модуле команды пропишем вызов нужной формы:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ОткрытьФорму("Отчет.ИмяНужногоОтчета.Форма");
КонецПроцедуры
Затем создадим новую роль в расширении (не забыв очистить поле основных ролей в свойствах конфигурации расширения), дадим права на выполнение этой команды и назначим эту роль нашему пользователю. После этого менеджер сможет открывать нужный отчет нажатием одной кнопки в привычном ему разделе интерфейса.