Фиксация шапки в СКД
UPD: В 1с 8.2 в отчете у модуля объекта появился метод ПриКомпоновкеРезультата(), у которого есть параметр ДокументРезультат — табличный документ, который генерирует СКД.
По сути в модуле объекта можно прописать следующее:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) ДокументРезультат.ФиксацияСверху = 8; КонецПроцедуры |
Все что ниже, устарело…
Для того, чтобы зафиксировать шапку в скд, необходимо обрабатывать табличный документ. В инструментах скд этот механизм отсутствует.
Код вывода с фиксацией шапки:
Результат = ЭлементыФормы.Результат; Результат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.НачатьВывод(); ТаблицаЗафиксирована = Ложь; Пока Истина Цикл ЭлементРезультата = ПроцессорКомпоновкиДанных.Следующий(); Если ЭлементРезультата = Неопределено Тогда Прервать; Иначе ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата); Если не ТаблицаЗафиксирована и ЭлементРезультата.ЗначенияПараметров.Количество() > 0 Тогда ТаблицаЗафиксирована = Истина; Результат.ФиксацияСверху = Результат.ВысотаТаблицы - 1; КонецЕсли; КонецЕсли; КонецЦикла; ПроцессорВывода.ЗакончитьВывод(); |
Для того, чтобы зафиксировать колонку по горизонтали, можно просто выполнить следующее:
Результат.ФиксацияСлева = 1; |
Если программировать на 8.2, то можно реализовать проще.
В 1с 8.2 в отчете у модуля объекта появился метод ПриКомпоновкеРезультата(), у которого есть параметр ДокументРезультат – табдок, который генерирует СКД.
По сути в модуле объекта можно прописать следующее:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
ДокументРезультат.ФиксацияСверху = 8;
КонецПроцедуры
Спасибо! Добавлю в публикацию
Фиксацию в 8.1 также можно добавить через процедуру ОбновлениеОтображения(), правда смотрел только на небольших отчетах.
Мир Вам! У меня не получилось сделать вашим кодом, а получилось вот таким:
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(ОтчетОбъект.СхемаКомпоновкиДанных, ОтчетОбъект.КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
//Определение Процессора компоновки
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
//Определение Процессора вывода
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
//Получение доп макета для шапки и подвала
Макет = ОтчетОбъект.ПолучитьМакет(“Макет”);
//Вывод шапки
Область = Макет.ПолучитьОбласть(“Заголовок”);
//Область.Параметры.ДатаОтчета = Формат(ТекущаяДата(), “ДФ=dd.MM.yyyy”);
//Область.Параметры.Организация = организация;
//Область.Параметры.Месяц = Формат(Период, “ДФ=’MMММ yyyy’”);
ЭлементыФормы.Результат.Вывести(Область);
//Вывод таблицы
ПроцессорВывода.Вывести(процессорКомпоновки);
Вообще-то в 8.1 тоже можно поступить гораздо проще. В модуле формы отчета прописать процедуру
Процедура ОбновлениеОтображения()
ЭлементыФормы.Результат.ФиксацияСверху=1;
КонецПроцедуры
Клево!!! Работает!
Только не могу понять что попадает сюда: ЭлементРезультата.ЗначенияПараметров
Не работает (по крайней мере на 8.1).
Не определён объект ПроцессорКомпоновкиДанных.
Для того чтобы заработало надо вверху добавить следующее:
—————————————————————————————————————
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(
СхемаКомпоновкиДанных,
КомпоновщикНастроек.Настройки );
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать( МакетКомпоновки );
—————————————————————————————————————
И не понятно зачем в “Результат.ФиксацияСверху = Результат.ВысотаТаблицы – 1;” минус один, должно быть без него.