Имя: Пароль:
1C
1С v8
Колдунства с СКД кодом
0 beholder13
 
12.02.13
17:40
Всем приветы =)
Решил я тут одну задачу решить способом, который у меня никогда не получался и использовать в нем сразу два интересных приема - подключение к СКД внешней таблицы в качестве источника данных и инициализация этой самой СКД кодом. Макет создал, в нем все как надо, набор данных "Объект", к нему прописаны поля так же, как в исходной таблице и т.д., беда, как я предполагаю, в том, что я что-то недопрописал в коде.
Отладчик показывает, что ничего не выводится, тогда как, по сути, я просто перекрашиваю траву в зеленый цвет, т.е. вывожу таблицу средствами СКД. Ну снаружи, в предприятии, у меня тупо чистый лист. Что я забыл указать? (Под грцппировки потом перепишу, мне бы хоть что-то получить на выходе)
Код:
ЭлементыФормы.РезультатОтчет.Очистить();
   
   СхемаКомпоновкиДанных = ЭтотОбъект.ПолучитьМакет("СхемаКомпоновкиДанных");
   
   КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
   КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
   
   ВнешниеНаборыДанных=Новый Структура;
   ВнешниеНаборыДанных.Вставить("ВнешняяТаблица",Результат);
   
   КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных;
   
   Настройки=КомпоновщикНастроек.ПолучитьНастройки();
   МакетКомпоновки=КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,);

   ПроцессорКомпоновки=Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,);

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

   ПроцессорВывода.НачатьВывод();

   Пока Истина Цикл
      ЭлементРезультата=ПроцессорКомпоновки.Следующий();
      Если ЭлементРезультата=Неопределено Тогда
         Прервать;
      Иначе
         ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
      КонецЕсли;
   КонецЦикла;

   ПроцессорВывода.ЗакончитьВывод();

   ДокументРезультат.ОтображатьСетку=Ложь;
   ДокументРезультат.ОтображатьЗаголовки=Ложь;
   ДокументРезультат.Показать();
1 beholder13
 
12.02.13
17:42
скрины настроек макета надо, не?
2 kabanoff
 
12.02.13
17:52
Настройки компоновки задал?
3 sivalor
 
12.02.13
17:52
Вывод детальных записей прописал?
4 beholder13
 
12.02.13
17:56
(3) да, вывод там нарисовал, с ресурсами, с итогами и прочим (2) а чо где как? вот тут-то я думаю и прокололся
5 kabanoff
 
12.02.13
17:56
И переменная ДокументРезультат это у тебя что: ПолеТабличногоДокумента или ТабличныйДокумент?
6 beholder13
 
12.02.13
17:58
(5) поле конечно, вывод-то в поле из СКД идет прямиком оО
7 kabanoff
 
12.02.13
18:02
(6) Тогда нахрена там ДокументРезультат.Показать()? Оно и без него выведется.
8 beholder13
 
12.02.13
18:04
(7) не важно, это от старого варианта осталось, у меня в процессоре вывода пусто, это куда важнее
9 kabanoff
 
12.02.13
18:07
Настройки в СКД зашил или в предприятии задаешь?
10 beholder13
 
13.02.13
08:42
(9) в скд в макете сидят, т.е. по идее вылазят в этом моменте (или я что-то упускаю):
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
11 Defender aka LINN
 
13.02.13
08:45
(10) Бросай свои идеи, они тебя до добра не доведут
12 beholder13
 
13.02.13
08:50
(11) я сделаю это! я не позволю снова сломить себя и не стану прописывать построчный вывод с группировками напрямую! Я почти добрался до сути, осталась какая-то мелочь)))
13 beholder13
 
13.02.13
09:01
Вот проблема в более наглядном виде (первая итерация цикла; в таблице-источнике 168 строк данных):
http://s3.postimage.org/4t46i8ef7/image.png
14 Defender aka LINN
 
13.02.13
09:18
(13) Ты, смотрю, намеков не понимаешь, да?
15 beholder13
 
13.02.13
09:23
(14) зависит от намеков)
16 beholder13
 
13.02.13
09:29
(14) И что-то мне подсказывает, что ты знаешь решение этой проблемы =)
17 beholder13
 
13.02.13
09:53
Ладно, сроки поджимают, так что макет табдока и построчный вывод без СКД (((
18 beholder13
 
13.02.13
09:53
правда итоги придется вручную считать
19 Defender aka LINN
 
13.02.13
09:56
(15) Ок, я открытым текстом говорю: "Инициализировать" не имеет ничего общего с "перенести настройки".
Хотя в твоем случае вообще компоновщик не нужен.
20 beholder13
 
13.02.13
10:03
(19) Вооот, и я думаю, что где-то туплю =) Так как же мне собрать схему из макета правильно?
21 beholder13
 
13.02.13
11:20
Сделал еще проще, нашел способ переписать формирование таблицы под язык запросов и все на СКД посадил, сдал задачу