Имя: Пароль:
1C
1С v8
Отчет СКД на управляемых формах
0 Natalika
 
06.08.15
14:39
Есть отчет СКД на управляемых формах, построенный на объекте набора данных, который заполняется на форме отчета из запроса. Отчет формируется, теперь требуется обратиться к заполненной таблице набора данных СКД при нажатии на кнопку "Выгрузить". Как получить значения таблицы набора данных СКД?
Пишу:
ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет("СхемаВыработкаКомплектовщиков");

Отладчиком проверяю, что хранится в СхемаКомпоновкиДанных.НаборыДанных[0] : есть Имя, ИмяОбъекта,ИсточникОбъекта и Поля. А можно ли получить саму таблицу значений объекта набора данных? Или можно другой вариант: создать для отчета ТабличнуюЧасть и при формировании отчета как заполнить эту ТабличнуюЧасть?

ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
ОтчетОбъект.ТаблЧасть.Очистить(); //работает
ОтчетОбъект.ТаблЧасть = ТЗРезультатЗапроса; - выдает ошибку "Поле объекта недоступно для записи (ТаблЧасть)"

Помогите, пожалуйста. Никак не получается самой справиться с этой задачей. Заранее спасибо.
1 vicof
 
06.08.15
14:41
ОтчетОбъект.ТаблЧасть.Загрузить(ТЗРезультатЗапроса.Выгрузить())
2 Nuobu
 
06.08.15
14:43
НастройкиКомпоновки = Объект.Компоновщик.ПолучитьНастройки();
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
        
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаРезультатОтбора,
    НастройкиКомпоновки,,,
    Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;    
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
    
    ТаблицаВывода = ТаблицаРезультатОтбор.Выгрузить();
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    
    ТаблицаРезультат = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
3 Natalika
 
06.08.15
15:14
(1) ТаблЧасть остается пустой при нажатии на кнопку "Выгрузить"
(2) Ошибка "Не найден внешний набор данных "ТаблицаРез", хотя если посмотреть в отладчике в Макете компоновки есть наборДанных1 с имя объекта есть "ТаблицаРез". Процедура выполняется на сервере.
4 vicof
 
06.08.15
15:25
(3) Значит,а ТЗРезультатЗапроса не было данных
5 Nuobu
 
06.08.15
15:32
(3) &НаКлиенте
Процедура Команда1(Команда)
    ВЫполнитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ВыполнитьНаСервере()
    
    НастройкиКомпоновки = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    
    ОтчетЗначение = РеквизитФормыВЗначение("Отчет");
    
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(ОтчетЗначение.СхемаКомпоновкиДанных,
    НастройкиКомпоновки,,,
    Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;    
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    
    ТаблицаРезультат = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
КонецПроцедуры
6 Natalika
 
06.08.15
15:33
(4) Извиняюсь, все заполнилось. У меня просто наименования полей не совпали из-за синтаксической ошибки. Все исправила, заработало!!! Спасибо!!! Буду пользоваться этим вариантом. Он оказался проще!!!
7 Natalika
 
06.08.15
15:38
(5) У меня все так же написано, но не работает. Как будет время я разберусь. Всем спасибо большое!!!