СКД: Вывод результата в ТЗ

1. _Vanda_ 07.05.20 21:32 Сейчас в теме
Добрый день!
Есть отчет на СКД,не получается вывести результат отчета в таблицу значений. Структура представляет собой 3 группировки, детальных записей нет.
Вывод в ТЗ делаю по кнопке, в дальнейшем хочу вывести в ТЧ. В кнопке прописываю:

ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
	СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	КомпоновщикНастроек = ОтчетОбъект.КомпоновщикНастроек;

	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

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


ТЗ приходит с пустыми значениями,думаю, что дело в группировках, создаю новый вариант отчета Основной1, в котором вывожу только детальные записи без условного оформления , проверяю в предприятии - данные выводит. В кнопке делаю замену настроек (на настройки варианта Основной1):

 ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
	СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	КомпоновщикНастроек = ОтчетОбъект.КомпоновщикНастроек;

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

Показать


ТЗ приходит с одной пустой строчкой.
Пробовала также выгружать в дерево значений(без замены настроек):приходит дерево с пустыми значениями.
Во вложении прикрепила как выглядит структура, по сути мне нужны данные по ДокументРеализации.
Подскажите, что я делаю не так.
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
6. _Vanda_ 08.05.20 18:47 Сейчас в теме
(5)да, дело было в параметрах, не передавались пользовательские настройки

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

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

Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Salavat 15 07.05.20 21:42 Сейчас в теме
(1) отчёт (хотябы каркас его) выложите и - назовите конфигурацию.
Ответ - гораздо быстрее получите.
4. _Vanda_ 07.05.20 22:53 Сейчас в теме
(2) Сделала каркас отчета и в нем все работает как надо, то есть код, который прописан в кнопке отрабатывает корректно, дело в чем то другом)) Спасибо за идею, буду копать дальше)
3. dhurricane 07.05.20 21:42 Сейчас в теме
(1) Попробуйте отказаться от промежуточного компоновщика настроек. При компоновке макета сразу укажите "ВариантОтчета.Настройки".

P.S. Либо для первого примера сразу "СхемаКомпновкиДанных.НастройкиПоУмолчанию".
5. ab_initio 95 08.05.20 05:38 Сейчас в теме
Странно как-то
Есть подозрения, что в самой схеме компоновке проблема. Что именно она не выбирает ничего. Ну, там, отбор может стоит какой, или параметры какие-то так выбраны, что запрос ничего не возвращает и в выборку ничего не попадает.
Вот посмотрите, Ваш код без единого изменения работоспособен, если сама СКД что-то выдает, то в таблицу оно совершенно точно попадет, даже с группировками.
Прикрепленные файлы:
ВнешнийОтчет1.erf
6. _Vanda_ 08.05.20 18:47 Сейчас в теме
(5)да, дело было в параметрах, не передавались пользовательские настройки

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

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

Показать
7. ab_initio 95 08.05.20 20:42 Сейчас в теме
(6) Сейчас всё работает?
8. _Vanda_ 08.05.20 21:11 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот