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