При формировании печатных форм и отчетов в платформе «1С:Предприятие» часто требуется выводить нумерацию страниц, текущую дату или общее количество листов документа. В табличном документе (объект ТабличныйДокумент) для этих целей предусмотрен встроенный механизм колонтитулов. Разберем по шагам, как программно настроить отображение колонтитула и корректно передать в него номер страницы.
Для автоматической подстановки динамических данных при печати табличного документа используются специальные служебные теги (управляющие конструкции). Они указываются внутри строки как обычный текст:
Эти теги можно свободно комбинировать с произвольным текстом в одной строке.
Рассмотрим стандартную настройку нижнего колонтитула. Чтобы колонтитул появился, необходимо явно включить свойство Выводить и назначить строку с тегом нужной секции (слева, в центре или справа):
// Включаем отображение нижнего колонтитула
ТабДок.НижнийКолонтитул.Выводить = Истина;
// Выводим только номер страницы по центру
ТабДок.НижнийКолонтитул.ТекстВЦентре = "[&НомерСтраницы]";
Посмотрим на пример комбинирования тегов с текстом, когда требуется вывести формат «Страница X из Y»:
ТабДок.НижнийКолонтитул.Выводить = Истина;
ТабДок.НижнийКолонтитул.ТекстСправа = "Лист [&НомерСтраницы] из [&СтраницВсего]";
ТабДок.НижнийКолонтитул.ТекстСлева = "Сформировано: [&Дата] [&Время]";
Проанализируем дополнительные свойства объекта Колонтитул и табличного документа, которые позволяют гибко управлять внешним видом:
ТабДок.НижнийКолонтитул.НачальнаяСтраница = 2;.ТабДок.НижнийКолонтитул.ВыводитьНаПервойСтранице = Ложь;.Шрифт и ЦветТекста, а также выравнивание по высоте через свойство ВертикальноеПоложение (со значениями системного перечисления: Верх, Центр, Низ).РазмерКолонтитулаСверху и РазмерКолонтитулаСнизу.Разберем комплексный пример настройки параметров табличного документа:
ТабДок.РазмерКолонтитулаСнизу = 10; // размер отступа снизу в мм
ТабДок.НижнийКолонтитул.Выводить = Истина;
ТабДок.НижнийКолонтитул.ВыводитьНаПервойСтранице = Ложь;
ТабДок.НижнийКолонтитул.НачальнаяСтраница = 1;
ТабДок.НижнийКолонтитул.Шрифт = Новый Шрифт("Arial", 8, Ложь, Истина);
ТабДок.НижнийКолонтитул.ТекстСправа = "Страница [&НомерСтраницы] из [&СтраницВсего]";
Важно помнить, что встроенные колонтитулы табличного документа не отображаются в стандартном режиме редактирования и просмотра документа на экранной форме. Они рассчитываются платформой динамически и становятся видны только:
Если в колонтитул необходимо поместить картинку, логотип компании, рамку ячеек или сложную многострочную шапку, встроенный механизм колонтитулов не подойдет, так как он поддерживает только простой текст. В таких ситуациях разберем алгоритм ручного вывода областей макета:
ШапкаСтраницы и ПодвалСтраницы.ТабДок.ПроверитьВывод(), куда передается массив из очередной строки данных и области подвала.ТабДок.ВывестиГоризонтальныйРазделительСтраниц() и шапка следующей страницы.