Как настроить права доступа к отчетам раздела "Руководителю" и решить ошибку ролей в расширении 1С?

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

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

Разберем причину невидимости раздела "Руководителю"

Выясним причину, по которой назначение роли на чтение отчета не выводит сам раздел в интерфейс пользователя. Этому есть несколько объяснений:

  1. Отсутствие прав на подсистему: В командном интерфейсе 1С раздел отображается на панели только если у роли пользователя установлен флаг Просмотр на саму подсистему верхнего уровня (в дереве метаданных это Подсистемы — Руководителю). Наличия прав только на входящие в нее отчеты недостаточно.
  2. Особенности Библиотеки стандартных подсистем (БСП): В типовых конфигурациях прямое назначение ролей через конфигуратор часто перетирается регламентными заданиями БСП. Права необходимо назначать через профили групп доступа в режиме "1С:Предприятие".
  3. Скрытие команд в интерфейсе: По умолчанию команды отчетов могут быть скрыты внутри настроек командного интерфейса самой подсистемы.

Проанализируем ошибку прав в расширении

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

"Назначение прав доступа на заимствованные объекты основными ролями в расширениях недопустимо"

Посмотрим на причину: платформа строго ограничивает назначение прав. Свойство расширения ОсновныеРоли предназначено для автоматического управления доступом исключительно к собственным новым объектам расширения. Назначать права на заимствованные объекты основной роли запрещено на уровне платформы.

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

Посмотрим на альтернативные варианты предоставления доступа

Если мы не хотим выводить весь раздел "Руководителю" для менеджера по продажам, рассмотрим несколько эффективных альтернативных решений.

Вариант 1. Простые пользовательские настройки (без программирования)

Самый быстрый способ, если права на отчет фактически есть, но его нет в интерфейсе:

  1. Формируем внутренние ссылки на нужные отчеты под полными правами.
  2. Отправляем ссылки пользователю-менеджеру.
  3. Пользователь переходит по ссылкам, открывает отчеты и нажимает значок "звездочки" — добавляет отчеты в Избранное.
  4. Также можно выборочно скопировать настройки пользователя (через типовой механизм "Скопировать от..."), у которого этот отчет уже выведен.

Вариант 2. Механизм дополнительных отчетов и обработок

Сохраним типовой отчет как внешний файл. Перейдем в раздел администрирования и подключим его через типовой функционал ДополнительныеОтчетыИОбработки. В настройках публикации укажем размещение в доступном пользователю разделе (например, "Продажи") и назначим быстрый доступ нужным сотрудникам.

Вариант 3. Перенос отчета в другой раздел через расширение

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

Вариант 4. Создание программной команды открытия

В расширении мы можем создать новую общую команду и разместить её в командном интерфейсе раздела "Продажи". В модуле команды пропишем вызов нужной формы:


&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    ОткрытьФорму("Отчет.ИмяНужногоОтчета.Форма");
КонецПроцедуры

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

← На главную