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

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

При разработке печатных форм в среде 1С:Предприятие часто возникает необходимость вывода дополнительной информации в верхний или нижний колонтитул. Это может быть номер документа, дата, или автоматическая нумерация страниц. Разберем детально, как правильно реализовать эту задачу, чтобы настройки гарантированно отображались при печати.

Основные принципы настройки колонтитулов

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

Золотое правило: программный код настройки колонтитулов необходимо размещать строго после того, как в ТабличныйДокумент были выведены все области макета (методы Вывести() или Присоединить()). Если применить настройки до вывода областей, платформа может пересчитать параметры документа, что приведет к потере ваших установок.

Пошаговая настройка колонтитула

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


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

Здесь мы использовали свойство РазмерКолонтитулаСнизу, которое определяет отступ от края листа. Если не задать этот размер, текст колонтитула может наложиться на основной текст документа, что сделает печатную форму нечитаемой.

Вывод динамических данных и нумерация страниц

Одной из частых задач является вывод номера документа, даты и данных о страницах (например, «1 из 5»). Для этой цели 1С предоставляет специальные встроенные макросы, которые платформа заменяет на актуальные значения непосредственно перед печатью.

Для вставки текущего номера страницы используйте макрос [&НомерСтраницы], а для общего количества страниц — [&СтраницВсего]. Посмотрим, как собрать это в одну строку:


// Формирование текста с номером, датой и нумерацией страниц
СтрокаКолонтитула = "" + Номер + " от " + Формат(Дата, "ДЛФ=Д") + " стр. [&НомерСтраницы] из [&СтраницВсего]";

ТабличныйДокумент.ВерхнийКолонтитул.ТекстВЦентре = СтрокаКолонтитула;
ТабличныйДокумент.ВерхнийКолонтитул.Выводить = Истина;

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

Технические нюансы и ограничения

При настройке колонтитулов стоит учитывать следующие моменты:

  1. Единый стиль: Все настройки, заданные через свойство Шрифт, применяются ко всей области колонтитула целиком. Вы не сможете выделить жирным только слово «Дата» внутри одной секции. Если требуется сложное форматирование, рассмотрите возможность использования «областей макета» в качестве колонтитулов.
  2. Область видимости: Если вы используете функцию Показать() для отображения документа, настройки колонтитула будут применены к этому экземпляру. Убедитесь, что код выполняется до вызова метода отображения.
  3. Альтернативный подход: Если стандартных средств настройки колонтитулов недостаточно, создайте в макете отдельные именованные области (например, «ШапкаСтраницы» и «ПодвалСтраницы»). Выводите их принудительно, используя ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(), чтобы жестко контролировать визуальное оформление каждой страницы.

Подводя итог: всегда выполняйте настройку колонтитулов в самом конце формирования табличного документа. Это гарантирует, что ваши параметры оформления не будут затерты при добавлении строк или пересчете параметров печати платформой 1С.

← На главную