|
0
serverstar
15.11.22
✎
10:47
|
Здравствуйте! Такой вопрос: есть отчет на СКД, у него формаОтчета. Нужно в этот отчет программно передать 1 параметр и сразу сформировать отчет.
1. открываю форму и передаю параметр так
ПараметрыФормы = Новый Структура("ПартнерСсылка, СформироватьПриОткрытии", Параметры.Партнер, Истина);
ОткрытьФорму("Отчет.ХарактеристикаКлиента.Форма.ФормаОтчета", ПараметрыФормы);
2. в модуле формы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Партнер = Параметры.ПартнерСсылка;
СформироватьОтчетНаСервере(Результат, Партнер);
КонецПроцедуры
&НаСервере
Процедура СформироватьОтчетНаСервере(ТаблДок, Партнер)
ОбъектОтчет = РеквизитФормыВЗначение("Отчет");
ОбъектОтчет.СформироватьОтчет(ТаблДок, Партнер);
КонецПроцедуры
3. в модулеОбъекта отчета
Процедура СформироватьОтчет(ТаблицаОтчета, Партнер) Экспорт
//ПриКомпоновкеРезультата(ТаблицаОтчета, Партнер, СтандартнаяОбработка);
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
// установка параметра Партнер
ПараметрПартнер = Настройки.ПараметрыДанных.Элементы.Найти("ПартнерСсылка");
ПараметрПартнер.Значение = Партнер;
ПараметрПартнер.Использование = Истина;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТаблицаОтчета);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
Получается, правильный отчет формируется, мелькает на 2 секунды. Потом затирается пустой шапкой.
Что я делаю не так? Спасибо, что дочитали.
|
|
|
3
ass1c
15.11.22
✎
11:44
|
Нашел
ФормаОтчёта = ПолучитьФорму("Отчет.XXX.Форма");
КомпоновщикНастроек = ФормаОтчёта.Отчет.КомпоновщикНастроек;
ИдентификаторПараметраПериод = ФормаОтчёта.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ПолучитьИдентификаторПоОбъекту(
ФормаОтчёта.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ТекДата")));
НастройкаПериод = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ИдентификаторПараметраПериод);
НастройкаПериод.Значение = ТекущаяДата();
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("СформироватьПриОткрытии" , Истина);
ПараметрыФормы.Вставить("КлючВарианта" , "Основной");
ПараметрыФормы.Вставить("ПользовательскиеНастройки", КомпоновщикНастроек.ПользовательскиеНастройки);
//установка отбора если необходимо
//ПараметрыФормы.Вставить("Отбор", Новый Структура("ДолжностьПоШтатномуРасписанию", Должность));
ОткрытьФорму("Отчет.XXX.Форма", ПараметрыФормы, ЭтаФорма);
|
|