Имя: Пароль:
1C
1С v8
Скд - внешний набор данных
0 mzelensky
 
08.10.12
13:08
Хочу передать ТЗ в СКД, там что-то сделать и обратно получить тоже ТЗ

ПИШУ:

   ТЗ= ТабличнаяЧасть1.Выгрузить();
   
   
   ВнешниеНаборыДанных = Новый Структура;
   ВнешниеНаборыДанных.Вставить("ТЗ",тз);
   
   СхемаКомпоновкиДанных = ЭтотОбъект.ПолучитьМакет("Макет");
   Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
   
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,  Настройки);
         
   ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ,истина );
   
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
   Табл = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
1 mzelensky
 
08.10.12
13:09
Ругается на этой строке:

Табл = ПроцессорВывода.Вывести(ПроцессорКомпоновки);

"Неизвестный тип макета"

эт что?
2 Maxus43
 
08.10.12
13:14
эт надо открыть книгу хрусталёвой на стр 480
3 mzelensky
 
08.10.12
13:25
(2) ну где я ее сейчас найду?
4 Maxus43
 
08.10.12
13:28
чото типа вот:
ПроцессорВывода.УстановитьОбъект(ТвояТЗ);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
5 mzelensky
 
08.10.12
13:29
(4) я так делал:

ТЗ= ТабличнаяЧасть1.Выгрузить();
   
   
   ВнешниеНаборыДанных = Новый Структура;
   ВнешниеНаборыДанных.Вставить("ТЗ",тз);
   
   СхемаКомпоновкиДанных = ЭтотОбъект.ПолучитьМакет("Макет");
   Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
   
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,  Настройки);
         
   ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ,истина );
   
   Табл=новый таблицаЗначений();
   
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
   ПроцессорВывода.УстановитьОбъект(Табл);
   ПроцессорВывода.Вывести(ПроцессорКомпоновки);
6 Maxus43
 
08.10.12
13:31
(5) и?
7 mzelensky
 
08.10.12
13:33
(6) тоже самое - ""Неизвестный тип макета""
8 Maxus43
 
08.10.12
13:36
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,  Настройки,,,Тип("
генератормакетакомпоновкиданныхдляколлекциизначений"));
9 organizm
 
08.10.12
13:37
может у ТЗ ситоит типы колонок определить...
10 mzelensky
 
08.10.12
13:40
При этом если меняю только это:

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

ПроцессорВывода.УстановитьДокумент(ТабДок);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

т.е. вывожу не в ТЗ, а в Табличный док (больше ничего не меняю) - все работает!
11 Maxus43
 
08.10.12
13:40
(10) в (8) не шутка, прям дословно пиши
12 mzelensky
 
08.10.12
13:42
(8) вставил, получил:

{Форма.Форма.Форма(13)}: Ошибка при вызове метода контекста (Выполнить)
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,  Настройки, , ,Тип("генератормакетакомпоновкиданныхдляколлекциизначений"));
по причине:
Ошибка компоновки макета
по причине:
Ошибка генерации макета
по причине:
Не поддерживается вывод таблиц, диаграмм и вложенных отчетов в универсальную коллекцию значений
13 Maxus43
 
08.10.12
13:43
(12) щас думай, всё по русски
14 mzelensky
 
08.10.12
13:46
(13) ну не мучай, я уже пару часов на это убил :(
15 mzelensky
 
08.10.12
13:46
(14) + почему онане поддерживается и как решить?!
16 Maxus43
 
08.10.12
13:47
(15) да потому что не поддерживается, как ты себе представляеш вывод Диаграммы например в ТЗ? настройка у СКД должна быть такая чтоб в ТЗ имело смысл её ложить
17 mzelensky
 
08.10.12
13:48
(16)все, понял :)
18 mzelensky
 
08.10.12
13:49
(16) я до этого выводил в Таблицу...хотя по мне так это логично - результат в виде таблицы выводить в таблицу значений!

Сделал вывод в список значений (в настройках самой СКД) и оно вывелось.
19 Maxus43
 
08.10.12
13:51
(18) не совем логично, ибо таблицы в СКД - что-то типа вложенного отчета
20 Maxus43
 
08.10.12
13:51
(19) + и их несколько может быть и т.д.
21 mzelensky
 
08.10.12
13:53
А почему вотэто надо прописывать, вроде как параметр не обязательный ведь:

МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,  Настройки,,,Тип("
генератормакетакомпоновкиданныхдляколлекциизначений"));
22 Maxus43
 
08.10.12
13:56
(21) необязателен, потому что есть значение по умолчанию у него, а оно для вывода в ТП, а не в другие штучки-дрючки
23 mzelensky
 
08.10.12
14:11
Ок, спасибо!

А можно еще тогда вопрос.
Я кинул на форму элемент ОТБОР и связал его со своим компоновщиком. Получается я могу теперь в отборе добавлять ограничения. А как передать этот отбор ?
24 Maxus43
 
08.10.12
14:24
(23) зачем передавать? он уже сам на форме, и меняеш ты именно его.
  МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,  Настройки);
тут они и передаются
25 mzelensky
 
08.10.12
14:46
(24) сейчас вот так прописал:

ТЗ= ТабличнаяЧасть1.Выгрузить();    
   
   ВнешниеНаборыДанных = Новый Структура;
   ВнешниеНаборыДанных.Вставить("ТЗ",тз);  
   
   СхемаКомпоновкиДанных =ЭтотОбъект.ПолучитьМакет("Макет");
   //Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;    
   Настройки =  КомпоновщикНастроек.ПолучитьНастройки();
   ДанныеРасшифровки =    Новый ДанныеРасшифровкиКомпоновкиДанных;    
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;      
   
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,  КомпоновщикНастроек.ПолучитьНастройки() , ДанныеРасшифровки , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
   
   ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки );
   
   Табл=новый таблицаЗначений();
         
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
   ПроцессорВывода.УстановитьОбъект(Табл);
   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);  
   
   Для каждого Ст из Табл цикл
       Сообщить(Ст);    
   КонецЦикла;
26 mzelensky
 
08.10.12
14:54
все, заработало...