Имя: Пароль:
1C
1С v8
СКД ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений
0 Advais4
 
16.04.15
10:02
Подскажите, можно ли, получив таблицу значений программно для того чтобы изменить некоторые значения, потом вывести данные из таблицы в табличный документ средствами СКД, чтобы не рисовать таблицу и не выводить вручную?

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

    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ПроцессорВывода.УстановитьОбъект(ТаблицаДанных);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
1 fisher
 
16.04.15
10:04
Можно. Но для этого придется рисовать отдельную схему с источником данных вида "Объект".
2 Advais4
 
16.04.15
10:11
Спасибо, попробую!
3 fisher
 
16.04.15
10:26
ТЗ для источника данных передается в ПроцессорКомпоновкиДанных.Инициализировать()
4 Advais4
 
16.04.15
11:28
(3) это уже для новой схемы?
добавила схему ОсновнаяСхемаКомпоновкиДанных1, указала источник данных объект,"имя объекта, содержащего данные"-  ТаблицаДанных.

Компоновщик настроек и компоновщик макета, получается, не нужен? А как тогда указать новую схему?


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

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

    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина);
5 fisher
 
16.04.15
11:54
(4) Да, для новой. Две разные схемы, две разные компоновки. Это должно быть очевидно.
Компоновщик настроек не нужен, если достаточно дефолтных настроек схемы и не используются пользовательские настройки. А вот как ты собираешься обойтись без компоновщика макета - мне непонятно.
Новую схему ты уже указала, вопрос непонятен. Как передать таблицу значений - я написал. Читай СП.
6 Advais4
 
16.04.15
12:44
все получилось, спасибо

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

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

    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина);
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой