Фиксация шапки в СКД

UPD: В 1с 8.2 в отчете у модуля объекта появился метод ПриКомпоновкеРезультата(), у которого есть параметр ДокументРезультат — табличный документ, который генерирует СКД.
По сути в модуле объекта можно прописать следующее:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
 
	ДокументРезультат.ФиксацияСверху = 8;
 
КонецПроцедуры

Все что ниже, устарело…

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

Код вывода с фиксацией шапки:

Результат = ЭлементыФормы.Результат;
Результат.Очистить();
 
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.НачатьВывод();
 
ТаблицаЗафиксирована = Ложь;
Пока Истина Цикл
    ЭлементРезультата = ПроцессорКомпоновкиДанных.Следующий();
    Если ЭлементРезультата = Неопределено Тогда
        Прервать;
	Иначе        
		ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
        Если не ТаблицаЗафиксирована и ЭлементРезультата.ЗначенияПараметров.Количество() > 0 Тогда
            ТаблицаЗафиксирована 		= Истина;
            Результат.ФиксацияСверху 	= Результат.ВысотаТаблицы - 1;
        КонецЕсли;
    КонецЕсли;
КонецЦикла;
 
ПроцессорВывода.ЗакончитьВывод();

Для того, чтобы зафиксировать колонку по горизонтали, можно просто выполнить следующее:

Результат.ФиксацияСлева = 1;
Подписаться
Уведомить о
guest
7 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Данилюк Андрей
Данилюк Андрей
13 лет назад

Если программировать на 8.2, то можно реализовать проще.
В 1с 8.2 в отчете у модуля объекта появился метод ПриКомпоновкеРезультата(), у которого есть параметр ДокументРезультат – табдок, который генерирует СКД.
По сути в модуле объекта можно прописать следующее:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
ДокументРезультат.ФиксацияСверху = 8;
КонецПроцедуры

Akryl
Akryl
13 лет назад

Фиксацию в 8.1 также можно добавить через процедуру ОбновлениеОтображения(), правда смотрел только на небольших отчетах.

xsnika
xsnika
13 лет назад

Мир Вам! У меня не получилось сделать вашим кодом, а получилось вот таким:
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(ОтчетОбъект.СхемаКомпоновкиДанных, ОтчетОбъект.КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
//Определение Процессора компоновки
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
//Определение Процессора вывода
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
//Получение доп макета для шапки и подвала
Макет = ОтчетОбъект.ПолучитьМакет(“Макет”);
//Вывод шапки
Область = Макет.ПолучитьОбласть(“Заголовок”);
//Область.Параметры.ДатаОтчета = Формат(ТекущаяДата(), “ДФ=dd.MM.yyyy”);
//Область.Параметры.Организация = организация;
//Область.Параметры.Месяц = Формат(Период, “ДФ=’MMММ yyyy’”);
ЭлементыФормы.Результат.Вывести(Область);
//Вывод таблицы
ПроцессорВывода.Вывести(процессорКомпоновки);

Владимир Аникин
Владимир Аникин
13 лет назад

Вообще-то в 8.1 тоже можно поступить гораздо проще. В модуле формы отчета прописать процедуру
Процедура ОбновлениеОтображения()
ЭлементыФормы.Результат.ФиксацияСверху=1;
КонецПроцедуры

Teriban
Teriban
13 лет назад

Клево!!! Работает!
Только не могу понять что попадает сюда: ЭлементРезультата.ЗначенияПараметров

Belousov
Belousov
11 лет назад

Не работает (по крайней мере на 8.1).
Не определён объект ПроцессорКомпоновкиДанных.
Для того чтобы заработало надо вверху добавить следующее:
—————————————————————————————————————
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(
СхемаКомпоновкиДанных,
КомпоновщикНастроек.Настройки );
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать( МакетКомпоновки );
—————————————————————————————————————
И не понятно зачем в “Результат.ФиксацияСверху = Результат.ВысотаТаблицы – 1;” минус один, должно быть без него.