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