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