Как вывести номер страницы в колонтитуле табличного документа 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При формировании печатных форм и отчетов в платформе «1С:Предприятие» часто требуется выводить нумерацию страниц, текущую дату или общее количество листов документа. В табличном документе (объект ТабличныйДокумент) для этих целей предусмотрен встроенный механизм колонтитулов. Разберем по шагам, как программно настроить отображение колонтитула и корректно передать в него номер страницы.

Управляющие конструкции для колонтитулов

Для автоматической подстановки динамических данных при печати табличного документа используются специальные служебные теги (управляющие конструкции). Они указываются внутри строки как обычный текст:

  1. [&НомерСтраницы] (или [&PageNumber]) — выводит номер текущей страницы при печати или предварительном просмотре.
  2. [&СтраницВсего] (или [&PagesTotal]) — выводит суммарное количество страниц печатного документа.
  3. [&Дата] (или [&Date]) — подставляет текущую системную дату.
  4. [&Время] (или [&Time]) — подставляет текущее системное время.

Эти теги можно свободно комбинировать с произвольным текстом в одной строке.

Базовый пример вывода номера страницы

Рассмотрим стандартную настройку нижнего колонтитула. Чтобы колонтитул появился, необходимо явно включить свойство Выводить и назначить строку с тегом нужной секции (слева, в центре или справа):


// Включаем отображение нижнего колонтитула
ТабДок.НижнийКолонтитул.Выводить = Истина;

// Выводим только номер страницы по центру
ТабДок.НижнийКолонтитул.ТекстВЦентре = "[&НомерСтраницы]";

Посмотрим на пример комбинирования тегов с текстом, когда требуется вывести формат «Страница X из Y»:


ТабДок.НижнийКолонтитул.Выводить = Истина;
ТабДок.НижнийКолонтитул.ТекстСправа = "Лист [&НомерСтраницы] из [&СтраницВсего]";
ТабДок.НижнийКолонтитул.ТекстСлева = "Сформировано: [&Дата] [&Время]";

Дополнительные параметры настройки колонтитулов

Проанализируем дополнительные свойства объекта Колонтитул и табличного документа, которые позволяют гибко управлять внешним видом:

  1. Свойство НачальнаяСтраница: если требуется начать нумерацию не с 1, а с определенного числа (например, если первый лист формируется отдельно), задается свойство ТабДок.НижнийКолонтитул.НачальнаяСтраница = 2;.
  2. Отключение на титульном листе: если документ содержит обложку или титульную страницу, колонтитул на ней можно скрыть с помощью свойства ТабДок.НижнийКолонтитул.ВыводитьНаПервойСтранице = Ложь;.
  3. Шрифт и оформление: колонтитулу можно задать шрифт и цвет текста через свойства Шрифт и ЦветТекста, а также выравнивание по высоте через свойство ВертикальноеПоложение (со значениями системного перечисления: Верх, Центр, Низ).
  4. Высота отступов: размер области под колонтитулы настраивается в миллиметрах через свойства самого табличного документа — РазмерКолонтитулаСверху и РазмерКолонтитулаСнизу.

Разберем комплексный пример настройки параметров табличного документа:


ТабДок.РазмерКолонтитулаСнизу = 10; // размер отступа снизу в мм
ТабДок.НижнийКолонтитул.Выводить = Истина;
ТабДок.НижнийКолонтитул.ВыводитьНаПервойСтранице = Ложь;
ТабДок.НижнийКолонтитул.НачальнаяСтраница = 1;
ТабДок.НижнийКолонтитул.Шрифт = Новый Шрифт("Arial", 8, Ложь, Истина);
ТабДок.НижнийКолонтитул.ТекстСправа = "Страница [&НомерСтраницы] из [&СтраницВсего]";

Особенности отображения колонтитулов

Важно помнить, что встроенные колонтитулы табличного документа не отображаются в стандартном режиме редактирования и просмотра документа на экранной форме. Они рассчитываются платформой динамически и становятся видны только:

  1. В режиме предварительного просмотра перед печатью;
  2. При включенном режиме отображения страниц;
  3. При отправке на принтер или при сохранении табличного документа в форматы PDF, XLS и XLSX.

Альтернативный вариант: формирование колонтитулов вручную

Если в колонтитул необходимо поместить картинку, логотип компании, рамку ячеек или сложную многострочную шапку, встроенный механизм колонтитулов не подойдет, так как он поддерживает только простой текст. В таких ситуациях разберем алгоритм ручного вывода областей макета:

  1. В макете создаются отдельные области: ШапкаСтраницы и ПодвалСтраницы.
  2. В цикле вывода строк печатной формы используется метод ТабДок.ПроверитьВывод(), куда передается массив из очередной строки данных и области подвала.
  3. Если область не помещается на текущую страницу, выводятся подвал с рассчитанным номером страницы, горизонтальный разделитель методом ТабДок.ВывестиГоризонтальныйРазделительСтраниц() и шапка следующей страницы.
← На главную