#12 Шаблон метода для заполнения Таблицы формы данными из СКД по макету

Дата: 26.10.2025 15:46:11
ТаблицаЗначений
СКД
Макет
ДеревоЗначений
Комментарий:
0
Конфигурация:
Любая
Формы:
Управляемые
Описание:

Например, в обработку можно добавлять макеты СКД, и в обработке использовать их для заполнения Дерева или Таблицы значений

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.


1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.