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