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