Как в документе добавить ссылку на отчет на управляемой форме 1С

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

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

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

Способ 1. Стандартный платформенный механизм (команда отчета)

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

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

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

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

Способ 2. Подключение через подсистему БСП (подменю «Отчеты»)

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

Проанализируем процесс регистрации отчета в данном механизме:

  1. Откроем модуль менеджера документа, к которому привязываем отчет (например, Документ.ЗаказПокупателя).
  2. Найдем или создадим экспортную процедуру ДобавитьКомандыОтчетов:

Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
    
    КомандаОтчет = КомандыОтчетов.Добавить();
    КомандаОтчет.Менеджер = Метаданные.Отчеты.ИмяОтчета.ПолноеИмя();
    КомандаОтчет.Представление = НСтр("ru = 'Движения по заказу'");
    КомандаОтчет.КлючВарианта = "Основной";
    КомандаОтчет.Важность = "Обычное";
    
КонецПроцедуры
  1. Перейдем в общий модуль ВариантыОтчетовПереопределяемый.
  2. В процедуре ОпределитьОбъектыСКомандамиОтчетов убедимся, что метаданные нашего документа добавлены в список объектов, поддерживающих команды контекстных отчетов.
  3. В процедуре НастроитьВариантыОтчетов зарегистрируем отчет вызовом функции:

ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ИмяОтчета);

Способ 3. Подключение внешнего отчета (.erf)

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

В модуле объекта внешнего отчета заполняем экспортную функцию СведенияОВнешнейОбработке:


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

При открытии такого отчета через контекстное меню документа в форму отчета передается массив ссылок ОбъектыНазначения. В процедуре ПриСозданииНаСервере формы отчета этот массив можно считать из параметров и установить в качестве отбора компоновки данных.

Возможные причины, почему ссылка на отчет не отображается

Если настройки выполнены, но пункт отчета в документе так и не появился, выясним причину с помощью чек-листа:

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