Как добавить дополнительные отчеты на начальную страницу в 1С:ERP

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием
← На главную

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

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

Анализ причин отсутствия отчетов в стандартном интерфейсе

Прежде чем переходить к написанию кода, проанализируем, почему стандартные команды ДополнительныеОтчетыГлавное могут не отображать данные. Система «Дополнительные отчеты и обработки» в составе БСП опирается на сложную структуру прав и функциональных опций:

  1. Настройка «Размещения» в справочнике: В карточке дополнительного отчета в справочнике ДополнительныеОтчетыИОбработки обязательно должен быть заполнен список Размещение. Чтобы отчет был виден в разделе «Главное» или на рабочем столе, в этом списке должен быть выбран соответствующий раздел.
  2. Функциональные опции: Проверьте, включена ли в базе функциональная опция ИспользоватьДополнительныеОтчеты. Она управляется отдельно от обработок.
  3. Права на регистры: Система проверяет право на чтение регистра сведений НазначениеДополнительныхОбработок. Если у пользователя нет доступа к этому регистру, механизмы БСП не смогут определить, кому назначен отчет.
  4. RLS (Ограничение доступа на уровне записей): Если включен RLS, пользователь должен входить в группу доступа, которой явно разрешено использование конкретных видов отчетов.

Если все настройки выполнены, но отчеты так и не появились на начальной странице, перейдем к программному решению задачи через расширение конфигурации.

Шаг 1. Создание собственной формы в расширении

Рассмотрим ситуацию, когда типовая общая форма ДополнительныеОтчетыИОбработки при вызове открывается пустой. Это происходит потому, что форма ожидает параметр РазделИнтерфейса. Если параметр не передан, фильтр срабатывает «в пустоту».

Для решения задачи создадим в расширении собственную общую форму (например, МОЯ_ФормаНачальнойСтраницы), на которой разместим кнопки для вызова нужных отчетов или динамический список. Это позволит нам полностью контролировать состав элементов на рабочем столе пользователя.

Шаг 2. Программная установка начальной страницы в модуле сеанса

Чтобы подменить стандартную начальную страницу пользователя нашей формой, воспользуемся механизмом перехвата события установки параметров сеанса. Это гарантирует, что настройки применятся сразу при входе пользователя в систему.

В расширении заимствуем МодульСеанса и создадим обработчик &После("УстановкаПараметровСеанса"). Проанализируем пример кода:


&После("УстановкаПараметровСеанса")
Процедура МОЯ_УстановкаПараметровСеанса(ИменаПараметровСеанса)
    
    // Вызываем процедуру настройки интерфейса
    МОЯ_НастройкаНачальнойСтраницы();
    
КонецПроцедуры

Процедура МОЯ_НастройкаНачальнойСтраницы()
    
    // Проверяем наличие специфической роли, чтобы не менять интерфейс всем пользователям
    Если РольДоступна("ивс_ПравоДоступаКОтчету") Тогда
        
        НастройкиНачальнойСтраницы = Новый НастройкиНачальнойСтраницы;    
        СоставФорм = Новый СоставФормНачальнойСтраницы;
        
        // Добавляем нашу созданную форму в левую колонку рабочего стола
        // Вместо "ОбщаяФорма.ДополнительныеОтчетыИОбработки" указываем свою форму
        СоставФорм.ЛеваяКолонка.Добавить("ОбщаяФорма.МОЯ_ФормаПользователя");
        
        // Устанавливаем настройки
        НастройкиНачальнойСтраницы.УстановитьСоставФорм(СоставФорм);
        
        // Сохраняем настройки в системное хранилище для текущего пользователя
        ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиНачальнойСтраницы", , НастройкиНачальнойСтраницы);
        
    КонецЕсли;
    
КонецПроцедуры

Использование ХранилищеСистемныхНастроек позволяет принудительно задать состав форм начальной страницы, игнорируя пользовательские настройки «по умолчанию».

Шаг 3. Реализация логики в форме начальной страницы

В созданной нами форме (ОбщаяФорма.МОЯ_ФормаПользователя) мы можем либо жестко прописать вызов внешних отчетов, либо использовать API БСП для динамического получения списка доступных пользователю объектов. Посмотрим, как это сделать правильно.

В модуле формы добавим код для открытия дополнительного отчета:


&НаКлиенте
Процедура КомандаОткрытьОтчет(Команда)
    
    ПараметрыОткрытия = Новый Структура;
    ПараметрыОткрытия.Вставить("ДополнительнаяОбработкаСсылка", СсылкаНаВнешнийОтчет);
    
    // Вызываем типовую форму выполнения обработки
    ОткрытьФорму("ОбщаяФорма.ДополнительныеОтчетыИОбработки", ПараметрыОткрытия);
    
КонецПроцедуры

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

Важные замечания по безопасности и производительности

При использовании метода с ХранилищеСистемныхНастроек.Сохранить в модуле сеанса важно помнить следующее:

  1. Частота вызовов: Метод УстановкаПараметровСеанса вызывается часто. Рекомендуется добавить проверку, чтобы запись в хранилище происходила только при первом входе или если настройки действительно изменились.
  2. Очистка кэша: Иногда изменения состава форм начальной страницы не видны сразу из-за кэширования настроек интерфейса. В этом случае пользователю может потребоваться перезапуск сеанса.
  3. Параметры типовой формы: Если вы решите использовать типовую форму ОбщаяФорма.ДополнительныеОтчетыИОбработки, обязательно передавайте параметр РазделИнтерфейса. Идентификатором раздела для рабочего стола обычно является пустая ссылка или специальная константа БСП.

Альтернативный подход через «Избранное» и Виджеты

В актуальных версиях 1С:ERP (начиная с 2.5) разработчики платформы и БСП предлагают использовать механизмы Информационной панели. Вместо написания кода в расширении, можно предложить пользователю добавить нужные отчеты в «Избранное», а затем вывести виджет избранного на начальную страницу через стандартную настройку (иконка шестеренки в правом верхнем углу).

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

Таким образом, мы выяснили причину «пустых» форм и научились программно управлять составом начальной страницы, обеспечивая пользователю быстрый доступ к необходимым дополнительным отчетам и обработкам даже при отсутствии доступа к основным разделам системы.

← На главную