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