Имя: Пароль:
1C
1С v8
Программная передача параметра в отчет. не получается сформировать отчет
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.Форма", ПараметрыФормы, ЭтаФорма);
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.