Каталог решений - Две схемы СКД в одном отчете с пользовательскими параметрами

Две схемы СКД в одном отчете с пользовательскими параметрами

Две схемы СКД в одном отчете с пользовательскими параметрами

В наличии

Простая реализация разных по типу отчетов в одном.
Применение нескольких схем компоновки с корректной передачей пользовательских параметров.

Категория:

Описание

В инете множество примеров отчетов на нескольких схемах компоновки. Но не встречал вариантов с работающими пользовательскими параметрами, т.к. для корректной работы схем в компоновщик загружаются настройки по умолчанию. При загрузке в компоновщик настроек по умолчанию загружаются также и параметры по умолчанию, что не дает возможности указать их в пользовательских настройках(указанные параметры будут скидываться на параметры по умолчанию).

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

Пример реализации ниже:

Создаем два реквизита(булево). Реквизит Изменение выносим на форму — для смены Схемы компоновки. 

Соответственно создаем два макета, например я использовал в тестовой конфе следующие:

 

Код модуля формы:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
Отчет.ПроверкаНаИзменение = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура ИзменениеПриИзменении(Элемент)
   
Отчет.ПроверкаНаИзменение = Истина;
КонецПроцедуры

 

Код модуля объекта отчета:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    Если
Изменение Тогда
       
СхемаКомпоновкиДанных = ПолучитьМакет("Макет");
    Иначе
       
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    КонецЕсли;

    // Загружаем настройки по умолчанию, только если изменили Схему компоновки
   
Если ПроверкаНаИзменение Тогда
       
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
    КонецЕсли;

    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
   
ПроверкаНаИзменение = Ложь;

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
   
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
   
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
   
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
   
ПроцессорВывода.Вывести(ПроцессорКомпоновки);

КонецПроцедуры

Т.е. в процедуре ПриКомпоновкеРезультата() выбираем макет компоновки (если на форме установлена галка в реквизите Изменение, то выбирается схема компоновки Макет, иначе Основная схема).

В модуле формы пишем в реквизит ПроверкаНаИзменение, когда соответственно изменяем галку на форме. При каждом формировании отчета сбрасываем это значение в ложь, чтобы загружать настройки СКД по умолчанию только когда меняется схема. 

Результат: работающие пользовательские параметры при смене схемы компоновки

 

Заранее извините, если баян, велосипед и т.п., 🙂

has been added to your cart:
Оформление заказа