Имя: Пароль:
1C
 
Программно применить пользовательские настройки к макету СКД
0 inkvizitr
 
28.02.24
10:20
Добрый день, создал отчет в дереве метаданных.
В данном отчете имеется несколько макетов СКД, первый макет называется "ОсновнаяСхемаКомпоновкиДанных", второй называется "МакетВторойУровень" т.е. второй макет это расшифровка первого, для каждого макета была создана своя форма, плюс в макете-формы расшифровкой есть возможность открыть команду настройки для того, чтобы к примеру сгруппировать данные и так далее.
Вопрос следующий, когда открываю настройки макета расшифровки "МакетВторойУровень" то вижу поля первого отчета "ОсновнаяСхемаКомпоновкиДанных", как и где сделать так, чтобы при открытии второго макета применялись настройки второго макета, а не первого? листинг:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	
	Если ВариантОтчета = 1 Тогда
		ТЗИтог = ДанныеПервогоУровняОтчета();
		
		СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
		
		//КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
		Настройки = КомпоновщикНастроек.ПолучитьНастройки(); 
		
		ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; 
		
		КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;	
		МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);	
		
		ВнешнийНаборДанных = Новый Структура("ВнешняяТаблицаИсточника", ТЗИтог); //Внешний набор данных записываем в структуру, где ключ = имени внешнего набора данных в СКД 
		ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; 
		ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки); //Устанавливаем в СКД внешний набор данных
		
		ДокументРезультат.Очистить();
		
		ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; 
		ПроцессорВывода.УстановитьДокумент(ДокументРезультат); 
		ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
	ИначеЕсли ВариантОтчета = 2 Тогда
		Выгрузка =  ДанныеВторогоУровняОтчета();
		
		ДокументРезультат.АвтоМасштаб = Истина;
		
		СхемаКомпоновкиДанных = ПолучитьМакет("МакетВторойУровень");
		
		ВариантНастроек = СхемаКомпоновкиДанных.ВариантыНастроек.Основной;
		
		КомпоновщикНастроек.ЗагрузитьНастройки(ВариантНастроек.Настройки);
		
		Настройки = КомпоновщикНастроек.Настройки;
		
		ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; 
		
		КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;	
		МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);	
		
		ВнешнийНаборДанных = Новый Структура("ВнешняяТаблицаРасшифровкаДва", Выгрузка); //Внешний набор данных записываем в структуру, где ключ = имени внешнего набора данных в СКД 
		ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; 
		ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки); //Устанавливаем в СКД внешний набор данных
		
		ДокументРезультат.Очистить();
		
		ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; 
		
		ДокументРезультат.АвтоМасштаб = Истина;
		ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
		
		ПроцессорВывода.УстановитьДокумент(ДокументРезультат); 
		ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
	КонецЕсли;
КонецПроцедуры