Имя: Пароль:
1C
 
Передать ТЗ как внешний набор данных в СКД
,
0 mzelensky
 
09.02.15
15:40
Доброго всем! Задача вроде избитая, но все найденные решения как-то не помогают.

Отчет на СКД. Управляемые формы. В СКД есть несколько наборов данных типа "Запрос". Добавил еще один типа "Объект" - задал имя и прописал имена полей.

В этот набор данных передаю таблицу значений ,которую формирую отдельно:


//ФОРМИРУЮ:

    Массив = Новый Массив;
    Массив.Добавить(Тип("Дата"));
    ОписаниеТиповД = Новый ОписаниеТипов(Массив);
    
    Массив = Новый Массив;
    Массив.Добавить(Тип("Число"));
    ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,Новый КвалификаторыЧисла(12,2));
    
    Массив = Новый Массив;
    Массив.Добавить(Тип("СправочникСсылка.Магазины"));
    ОписаниеТиповМагазин = Новый ОписаниеТипов(Массив);
    
    ТЗ_ПланыПродажПОДням = новый ТаблицаЗначений;
    ТЗ_ПланыПродажПОДням.Колонки.Добавить("ПериодДень2",ОписаниеТиповД);
    ТЗ_ПланыПродажПОДням.Колонки.Добавить("Магазин",ОписаниеТиповМагазин);
    //ТЗ_ПланыПродажПОДням.Колонки.Добавить("ПланПродаж",ОписаниеТиповЧ);
    ТЗ_ПланыПродажПОДням.Колонки.Добавить("ПланПродажВДень",ОписаниеТиповЧ);


,,,ЗАПОЛНЯЮ...

//ВЫВОЖУ:


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

    
    СкомпоноватьРезультат();
1 mzelensky
 
09.02.15
15:41
При формировании отчета получаю ошибку "Не найден внешний набор данных "ТЗ_ПланыПродажПОДням""

Как сделать правильно?
2 mzelensky
 
09.02.15
15:52
ап
3 Сергиус
 
09.02.15
15:54
(1) из какого места ты запускаешь данный код?
4 Сергиус
 
09.02.15
15:56
+(3)В идеале должна быть твоя процедура, которая была бы подцеплена к стандартной кнопке Сформировать у формы отчета.
5 mzelensky
 
09.02.15
16:01
(4) это все ивызывается в этой самой кнопке
6 mzelensky
 
09.02.15
16:01
Подправил вот так:

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


Вроде что-то выводит, но как-то не так...
7 hhhh
 
09.02.15
16:19
а есть там этот набор ТЗ_ПланыПродажПОДням в скд?
8 Fram
 
09.02.15
16:21
(6) выводит не так - это уже другой вопрос, к ТЗ отношения не имеющий
9 mzelensky
 
09.02.15
16:24
(7) Есть
10 mzelensky
 
09.02.15
16:25
Сейчас вроде получилось запустить. Вариант в (6) но пришлось убрать вот это:


СкомпоноватьРезультат();

и вместо него вот так:


    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(Результат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший