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