1C: Выбор из нескольких вариантов макета отчета СКД
Задача: в зависимости от внешних условий, выводить тот или иной вариант отчёта СКД.
Решение:
Добавим в отчёт два макета СКД:

Далее, в зависимости от нажатой кнопки, формируем разные данные:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | &НаСервере Процедура РукамиНаСервере(ТаблДок,мак) 	 ОбъектОтчетНаСервере = РеквизитФормыВЗначение("Отчет");      СхемаСКД = ОбъектОтчетНаСервере.ПолучитьМакет(мак); 	// с парамертрами по умолчанию  	//КомпоновщикНастроекДанныхОтчета = Новый КомпоновщикНастроекКомпоновкиДанных; 	//КомпоновщикНастроекДанныхОтчета.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаСКД)); 	//КомпоновщикНастроекДанныхОтчета.ЗагрузитьНастройки(СхемаСКД.НастройкиПоУмолчанию); 	//КомпоновщикНастроекДанныхОтчета.ЗагрузитьПользовательскиеНастройки(Отчет.КомпоновщикНастроек.ПользовательскиеНастройки); 	//КомпоновщикМакетаОСКД = Новый КомпоновщикМакетаКомпоновкиДанных; 	//Макет = КомпоновщикМакетаОСКД.Выполнить(СхемаСКД, КомпоновщикНастроекДанныхОтчета.ПолучитьНастройки()); 	// задаем сами      НастройкиСхемыОСКД = СхемаСКД.НастройкиПоУмолчанию; 	 ПараметрыДанныхОСКД = НастройкиСхемыОСКД.ПараметрыДанных.Элементы; 	 ЭлементНачалоПериода = ПараметрыДанныхОСКД.Найти("Период"); 	 ЭлементНачалоПериода.Использование = Истина;	  	 ДатаНачала = ФильтрПериод.ДатаНачала; 	 ДатаОкончания = ФильтрПериод.ДатаОкончания;      ЭлементНачалоПериода.Значение.ДатаНачала        = НачалоМесяца(ДатаНачала);      ЭлементНачалоПериода.Значение.ДатаОкончания    = КонецМесяца(ДатаОкончания);	  	 ЭлементНачалоПериода = ПараметрыДанныхОСКД.Найти("СетеваяОрганизация"); 	 ЭлементНачалоПериода.Использование = Истина;	  	 ЭлементНачалоПериода.Значение=отчет.Сетевая; 	 ЭлементНачалоПериода = ПараметрыДанныхОСКД.Найти("Фильтр"); 	 ЭлементНачалоПериода.Использование = Истина;	  	 ЭлементНачалоПериода.Значение=отчет.Фильтр; 	 КомпоновщикМакетаОСКД = Новый КомпоновщикМакетаКомпоновкиДанных; 	 Макет = КомпоновщикМакетаОСКД.Выполнить(СхемаСКД, НастройкиСхемыОСКД); 	 Фильтр=отчет.Фильтр; 	ПроцессорКомпоновкиОСКД = Новый ПроцессорКомпоновкиДанных; 	ПроцессорКомпоновкиОСКД.Инициализировать(Макет); 	ТаблДок.Очистить(); 	ПроцессорВыводаОСКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; 	ПроцессорВыводаОСКД.УстановитьДокумент(ТаблДок); 	ПроцессорВыводаОСКД.Вывести(ПроцессорКомпоновкиОСКД);	 	ПроцессорВыводаОСКД.ЗакончитьВывод(); КонецПроцедуры &НаКлиенте Процедура ОтчетПоЕМК(Команда) 	РукамиНаСервере(Результат,"ОсновнаяСхемаКомпоновкиДанных"); 	Элементы.Результат.ОтображениеСостояния.Видимость = Ложь; 	Элементы.Результат.ОтображениеСостояния.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.НеИспользовать;		 КонецПроцедуры &НаКлиенте Процедура ОтчетПоЛС(Команда) 	РукамиНаСервере(Результат,"ОсновнаяСхемаКомпоновкиДанных1"); 	Элементы.Результат.ОтображениеСостояния.Видимость = Ложь; 	Элементы.Результат.ОтображениеСостояния.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.НеИспользовать;		 КонецПроцедуры |