Заполнение табличной части документа УФ результатами отчета СКД

1. AndrewUs 11 20.11.18 09:58 Сейчас в теме
Здравствуйте!
Простите, возможно, вопрос глупый, но я вынужден его задать, т.к. необходима помощь.
Есть отчет на СКД. Создал кнопку "Заполнить документ".
Подскажите, как можно заполнить ТЧ "ТЧ1" документа "Документ1" результатами, которые вывел отчет?
Подскажите полезные статейки, возможно примеры, если есть, чтобы посмотреть-то как умные головы делают.
Спасибо.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. independ 1520 20.11.18 10:15 Сейчас в теме
(1) ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.
Получение данных из базы с фильтрацией по отбору СКД
3. soft_wind 20.11.18 10:19 Сейчас в теме
хм, умные головы такой ерундой как заполнение ТЧ документа данными из СКД не занимаются.
а для любителей г..кода
вот пример процедуры получающей данные СКД в ТЗ, если сможете, то прикрутите к своей задачке

Процедура КоманднаяПанельФормыРезультатТЗ(Кнопка)
	СхемаКомпоновкиДанныхКонсоли = ПолучитьСхемуКомпоновкиДанных();
	Если СхемаКомпоновкиДанныхКонсоли = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Копия.Доступность = Истина;
	
	лкНастройка 	= КомпоновщикНастроек.ПолучитьНастройки(); //Настройки;
	лкНастройка.Структура.Очистить();
	лкДопНастройки = лкНастройка.ПараметрыВывода.Элементы; //.Очистить();//блин не работает
	Для каждого лкСтр Из лкДопНастройки Цикл
		лкСтр.Использование = Ложь;
	КонецЦикла; 
	
	лкГруппировка 	= лкНастройка.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
	лкГруппировка.Использование = Истина;
	лкВыбранныеПоля = лкГруппировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
	лкВыбранныеПоля.Использование = Истина;
	
	лкКомпоновщикМакета	= Новый КомпоновщикМакетаКомпоновкиДанных;
	лкМакетКД			= лкКомпоновщикМакета.Выполнить(СхемаКомпоновкиДанныхКонсоли, лкНастройка, ДанныеРасшифровкиКонсоли, , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
	
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(лкМакетКД);
	ПроцессорВывода 	= Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
	
	лкТЗ = Новый ТаблицаЗначений;
	ПроцессорВывода.УстановитьОбъект(лкТЗ);
	ПроцессорВывода.Вывести(ПроцессорКомпоновки); //в лкТЗ результат СКД 				
	
//дальше просто форма показа ТЗ
	ФормаВложеннойТаблицы = ПолучитьФорму("ФормаВложеннойТаблицы", ЭтаФорма, Новый УникальныйИдентификатор );
	ФормаВложеннойТаблицы.ВложеннаяТаблица = лкТЗ;
	ФормаВложеннойТаблицы.ЭлементыФормы.ВложеннаяТаблица.СоздатьКолонки();
	ФормаВложеннойТаблицы.Открыть();
	
КонецПроцедуры
Показать
5. user633533_encantado 11 20.11.18 10:58 Сейчас в теме
(3)
хм, умные головы такой ерундой как заполнение ТЧ документа данными из СКД не занимаются.
а для любителей г..кода


Очень сомнительное мнение. Есть какой-то другой способ заполнить документ использую произвольный отбор ? Использование скд для заполнения чего либо в типовых конфигурациях сплошь и рядом.
4. SlavaKron 20.11.18 10:45 Сейчас в теме
Задача сводится к получению таблицы значений как результата СКД:
&НаКлиенте
Процедура ЗаполнитьДокумент(Команда)
	ЗаполнитьДокументНаСервере();
КонецПроцедуры

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

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