Имя: Пароль:
1C
1С v8
СКД, программный вывод, МАКЕТ не заполняется
,
0 Крутил_
Вертел_1С
 
23.04.13
02:36
Привет, не думал что когда то задам вопрос по СКД т.к. опыта там очень мног, НО появилась необходимость.

Есть СхемаКомпоновкиДанных, получаю эту схему, обрабатываю и вывожу.

В этйо схеме есть группировка + макет, то есть своя шапка. До этого делал всегда работало, но щас когда выводит свою шапку НЕ заполняются параметры шапки, хотя они указаны.

То-есть если делать отчет на основании СКД, то всё отлично работает, если программно вывод делать, то параметры в своём макете на заполняются.

Вопрос: Как победить?

   Результат = Новый ТабличныйДокумент;
   
   СхемаКомпоновкиДанных = ПолучитьМакет("Компоновка");
   
   КомпоновщикНастроекКомпоновкиДанных = Новый КомпоновщикНастроекКомпоновкиДанных;
   КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
   КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
   
   КомпоновщикНастроекКомпоновкиДанных.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Ссылка", СсылкаНаОбъект);
   
   КомпоновщикМакетаКомпоновкиДанных = Новый КомпоновщикМакетаКомпоновкиДанных;
   МакетКомпоновкиДанных = КомпоновщикМакетаКомпоновкиДанных.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроекКомпоновкиДанных.ПолучитьНастройки());
   
   ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
   
   ТабДок = Новый ТабличныйДокумент;
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ТабДок = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
   ТабДок.Показать();
1 Крутил_
Вертел_1С
 
23.04.13
02:38
Почему то не отрабатывает заполнение своей части макета, может нужно вызвать ещё обработчик? даже использую примитивный запрос, выбираем док по ссылке и ставим в макет его номер, ошибок нет, вывода номера нет.

Опять же обратите внимание если автоматом вызывать схему, то всё норм, дело именно в программном вызове
2 Cube
 
23.04.13
04:51
Хм... А разве так можно?

КомпоновщикНастроекКомпоновкиДанных.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Ссылка", СсылкаНаОбъект);
3 Крутил_
Вертел_1С
 
23.04.13
04:53
(2) да)) ссылка передаётся нормально, в отчете в шапке выводит Параметры: Ссылка - документ......

то-есть параметр заполняется правильно, тем более в запросе другом идет отбор по параметру ссылка и он все верно отбирает.
4 Крутил_
Вертел_1С
 
23.04.13
04:55
То-есть у меня выводится через СКд шапка(мой макет) и таблица автоматом, таблица заполняется верно по документу(параметр ссылка) но шапка не видит вообще реквизиты некакие(хотя всё стоит на закладке макеты - параметры)
5 Cube
 
23.04.13
04:56
(3) "да))"
Мда... А я всё "по-старинке" в три строки каждый параметр устанавливаю... :)
6 Cube
 
23.04.13
04:57
(4) В смысле "шапка не видит вообще реквизиты некакие"?
7 Крутил_
Вертел_1С
 
23.04.13
05:00
(6) ну в конструкторе СКД.

Закладка - Макеты, там добавлен макет и привязан к группировке, которая выводится. Когда мы делаем привязку макета к группировке то в нижней левой таблице "параметры макета" заполняются параметры найденные на моём макете, а там уже ставлю от куда брать данные.

В обычных ситуация всегда пшло(когда СКД автоматом код выполняет свой), щас эти параметры пустые всегда, пробовал указать им разный путь к данным, без толку.

Через пол часа ещё попробую варианты.
8 Cube
 
23.04.13
05:01
Попробуй вместо

МакетКомпоновкиДанных = КомпоновщикМакетаКомпоновкиДанных.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроекКомпоновкиДанных.ПолучитьНастройки());


написать

МакетКомпоновкиДанных = КомпоновщикМакетаКомпоновкиДанных.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроекКомпоновкиДанных.Настройки);
9 Cube
 
23.04.13
05:03
И вместо

   ТабДок = Новый ТабличныйДокумент;
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ТабДок = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
   ТабДок.Показать();

написать

   ТабДок = Новый ТабличныйДокумент;
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ТабДок);
   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
   ТабДок.Показать();
10 Cube
 
23.04.13
05:04
(9) Хотя... Это можно не делать...
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан