Как вывести внешний отчет в интерфейс разделов 1С:УНФ 1.6?

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

При разработке и внедрении внешних отчетов в конфигурации 1С:Управление нашей фирмой 1.6 многие разработчики сталкиваются с ситуацией, когда стандартная регистрация в справочнике ДополнительныеОтчетыИОбработки с указанием нужного раздела (например, «Продажи») не приводит к появлению отчета в интерфейсе. Попытка переопределить типовую процедуру ОпределитьРазделыСДополнительнымиОтчетами в общем модуле также не дает результата. Разберем причины такого поведения платформы и детально рассмотрим работающие способы размещения внешних отчетов в подсистемах УНФ 1.6.

Почему внешний отчет не отображается в разделах УНФ 1.6?

Проанализируем архитектуру конфигурации 1С:УНФ 1.6, чтобы выяснить причину проблемы:

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

Способ 1. Создание отдельной команды вызова дополнительных отчетов

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

Разберем по шагам порядок действий:

  1. Добавим новую общую команду (например, ДополнительныеОтчетыПродажи).
  2. В свойствах команды укажем представление: Дополнительные отчеты.
  3. В свойстве Группа выберем панель навигации или панель действий подсистемы (например, Панель навигации.СмТакже или Панель действий.Отчеты).
  4. Включим команду в состав нужной подсистемы (например, Продажи или ЗапасыИЗакупки).
  5. Перейдем в модуль созданной команды и определим обработчик действия:

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

Обратим внимание на четвертый параметр вызова: строка "Продажи" задает имя подсистемы, отчеты которой необходимо отобразить пользователю. Если требуется команда для раздела закупок, укажем "ЗапасыИЗакупки".

Ошибки при открытии и их устранение: Поле не найдено «Пользовательский»

Посмотрим на распространенную ошибку, возникающую при попытке вызова формы отчета или выполнения выборки настроек БСП:


{ОбщийМодуль.ОбщегоНазначения.Модуль(94)}: Ошибка при вызове метода контекста (Выполнить)
    Выборка = Запрос.Выполнить().Выбрать();
по причине:
{(3, 2)}: Поле не найдено "Пользовательский"
<<?>>Пользовательский КАК Пользовательский

Выясним причину этой ошибки. В Библиотеке стандартных подсистем варианты отчетов делятся на предопределенные (заложенные разработчиком в схему СКД) и пользовательские (сохраненные пользователем в процессе работы). За это разделение отвечает реквизит Пользовательский справочника ВариантыОтчетов.

Если данная ошибка возникает при вызове команды, проанализируем параметры:

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

Способ 2. Встраивание внешнего отчета в штатную панель отчетов УНФ без доработки метаданных

Рассмотрим альтернативный способ, который позволяет отобразить внешний отчет в типовом окне «Все отчеты» раздела без создания дополнительных команд и расширений. Для этого адаптируем сам внешний отчет под внутренние стандарты подсистемы отчетов УНФ.

Разберем процесс доработки отчета:

  1. Откроем внешний отчет в конфигураторе и в корне свойств отчета найдем свойство Хранилище вариантов. Установим для него значение ХранилищеВариантовОтчетов.
  2. В корень метаданных внешнего отчета добавим дополнительный реквизит ЭтоОтчетУНФ с типом данных Булево и установим значение по умолчанию в Истина. Этот признак сообщает механизмам конфигурации, что отчет поддерживает оформление и правила панели УНФ.
  3. Откроем модуль объекта внешнего отчета и добавим экспортную процедуру сопоставления тегов:

Процедура ПриОпределенииНастроекОтчета(НастройкиОтчета, НастройкиВариантов) Экспорт
    
    НастройкиВариантов["Основной"].Теги = НСтр("ru = 'Продажи'");
    
КонецПроцедуры

В приведенном коде "Основной" — это имя предопределенного варианта отчета из схемы компоновки данных (СКД), а 'Продажи' — наименование раздела, в панель которого должен выводиться вариант.

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

Важные нюансы настройки прав и доступа

Проверим дополнительные настройки, если команда или отчет по-прежнему не видны у пользователей:

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