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

Ранее уже был вариант фиксации шапка в СКД. Но в нем параметр задавался явно, поэтому данный вариант не удобен когда заранее нельзя понять сколько строка нам нужно зафиксировать (стоит заметить, что в СКД это практически всегда).
Погуглив, нашел множество вариантов решения задачи, но все они упирались в написание кучи строк кода, расчетом количества строк в шапке и т.п. Эти варианты показались мне не очень удачными, поэтому я решил поступить следующим образом: пользователь, в случае когда ему необходима фиксация – сам указывает количество строк. Так как настройки сохраняются, то этот параметр ему надо будет задать один раз для определенного варианта отчета.
Данный способ реализовывал в 8.2 следующим образом:
1) Задаем параметр в СКД:
![]()
2) Выводим его в быстрые настройки:

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