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

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





