И еще немного про фиксацию СКД | Leprikons.Ru

И еще немного про фиксацию СКД

Ранее уже был вариант фиксации шапка в СКД. Но в нем параметр задавался явно, поэтому данный вариант не удобен когда заранее нельзя понять сколько строка нам нужно зафиксировать (стоит заметить, что в СКД это практически всегда).

Погуглив, нашел множество вариантов решения задачи, но все они упирались в написание кучи строк кода, расчетом количества строк в шапке и т.п. Эти варианты показались мне не очень удачными, поэтому я решил поступить следующим образом: пользователь, в случае когда ему необходима фиксация – сам указывает количество строк. Так как настройки сохраняются, то этот параметр ему надо будет задать один раз для определенного варианта отчета.

Данный способ реализовывал в 8.2 следующим образом:
1) Задаем параметр в СКД:

2) Выводим его в быстрые настройки:

3) На форме получаем следующее:

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

//Стандартные описания Компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

СхемаКомпоновкиДанных = ЭтотОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); //Внешний отчет

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

//В случае если мы можем получить параметр, то установим его, иначе не будем фиксировать
Попытка
ФиксацияСверху = МакетКомпоновки.ЗначенияПараметров.ФиксацияСверху.Значение;
ДокументРезультат.ФиксацияСверху = ФиксацияСверху;
Исключение
КонецПопытки;

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

Таким образом пользователю не важно количество параметров отбора, он может сам отрегулировать себе шапку. Установить значение фиксации в ручную не так уж затратно по времени, и думаю не очень сложно, надеюсь вашего клиента это устроит. :)

Leave a comment

You must be logged in to post a comment.