Имя: Пароль:
1C
1С v8
Результат СКД в таблицу значений
0 IAleksa
 
13.10.11
16:05
Подскажите пожалуйста как результат СКД в таблицу значений загрузить? Программа ЗУП, отчет правлю типовой по исполнительным листам...
1 Санта
 
13.10.11
16:10
ручами надо все делать
2 Санта
 
13.10.11
16:10
+(1) в смысле, что конструктором не обойтись тут.
Надо всю компоновку кодом строить.
3 IAleksa
 
13.10.11
16:12
т.е. надо сделать отчет внешним и скопировать в него весь код из общих модулей, а потом править его?
4 Maxus43
 
13.10.11
16:16
в книге Хрусталёвой есть пример как делать
5 zippygrill
 
13.10.11
16:17
пример. ....Программно формируем отчет и дальше через МВТ....
   
ДанныеРасшифровки= Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(ЭтотОбъект.СхемаКомпоновкиДанных,КомпоновщикНастроек.Настройки,ДанныеРасшифровки);
   
МВТ = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МВТ;
Запрос.Текст = МакетКомпоновки.НаборыДанных[0].Запрос;
Для Каждого Параметр из МакетКомпоновки.ЗначенияПараметров Цикл
   Запрос.УстановитьПараметр(Параметр.Имя, Параметр.Значение);        
КонецЦикла;
ТЗ = Запрос.Выполнить().Выгрузить();
6 Amiralnar
 
13.10.11
16:20
(5) Тут будет только запрос. А как-же вычисляемые поля, ресурсы, отборы?
7 sivalor
 
13.10.11
16:22
СКД = Новый СхемаКомпоновкиДанных;
   
//Опишем источники как они есть в отчете
ИсточникДанных = СКД.ИсточникиДанных.Добавить();
ИсточникДанных.Имя = "ИсточникДанных1";
ИсточникДанных.ТипИсточникаДанных = "Local";

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

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

ТаблицаЗначений = Новый ТаблицаЗначений;
   
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
   
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
8 also
 
13.10.11
16:23
9 sivalor
 
13.10.11
16:25
или так?)
ТаблицаЗначений = Новый ТаблицаЗначений;
ТиповыеОтчеты.СформироватьТиповойОтчет(ЭтотОбъект, ТаблицаЗначений, ДанныеРасшифровки, Ложь);
10 zippygrill
 
13.10.11
16:26
(6) я думал она знает как программно доводить отчета до экрана :)
11 sivalor
 
13.10.11
16:29
(10) тебе сказали, что твой вариант не учитывает настройки СКД. Экран тут не при чем.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший