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

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

При разработке отчетов в системе 1С:Предприятие 8.2 (особенно в конфигурациях на обычных формах, таких как Бухгалтерия предприятия 2.0) часто возникает необходимость выводить подписи ответственных лиц в самом низу страницы. Если отчет занимает несколько листов, стандартный вывод области макета в конце документа не всегда подходит, так как подписи должны дублироваться на каждой странице. Для решения этой задачи идеально подходит механизм колонтитулов.

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

Разбор основной ошибки: к какому объекту обращаться?

Проанализируем типичную ситуацию, с которой сталкиваются начинающие разработчики. При попытке прописать код настройки колонтитула часто возникают ошибки выполнения. Рассмотрим причину их появления. Главная ошибка заключается в неверном понимании объектной модели 1С. Разработчик пытается обратиться к колонтитулу через ОтчетОбъект или напрямую через Макет.

Важно запомнить: свойство НижнийКолонтитул принадлежит исключительно объекту ТабличныйДокумент. Ни сам отчет (как объект метаданных), ни макет (как шаблон) не управляют параметрами печати в процессе вывода. Вывод колонтитулов — это настройка конкретного экземпляра сформированного документа, который мы показываем пользователю.

Если вы напишете ОтчетОбъект.НижнийКолонтитул, система выдаст ошибку, так как у объекта «Отчет» нет такого свойства. Нужно обращаться к той переменной, куда выводится результат (обычно это ТабДок или реквизит формы типа ТабличныйДокумент).

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

Рассмотрим правильный алгоритм программной настройки подписей. Допустим, у нас есть сформированный табличный документ. Нам необходимо, чтобы на каждой странице внизу по центру выводилась надпись «Составил __________ Иванов». Посмотрим на пример кода:


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

Разберем, что делает каждая строка в этом примере:

  1. Свойство Выводить = Истина — это главный «рубильник». Без этой команды система проигнорирует все остальные настройки колонтитула.
  2. НачальнаяСтраница = 1 — указывает, с какой страницы начинать печать колонтитула. Иногда подписи не нужны на титульном листе, тогда здесь ставится значение 2.
  3. ТекстВЦентре — устанавливает строку, которая будет отображаться ровно посередине. Также существуют свойства ТекстСлева и ТекстСправа.
  4. ВертикальноеПоложение — определяет, будет ли текст прижат к самому низу или иметь отступ.

Использование специальных шаблонов в тексте колонтитула

Выясним, как сделать колонтитул более информативным. В 1С предусмотрены специальные теги-заполнители, которые автоматически подставляют системные данные при печати. Их можно комбинировать с вашим текстом.

Рассмотрим популярные теги:

Посмотрим на пример использования:


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

Проблема невидимости колонтитулов и параметры страницы

Бывают ситуации, когда код написан верно, ошибок нет, но при просмотре документа подписей не видно. Проанализируем возможные причины. Чаще всего это связано с тем, что колонтитул «не влезает» в отведенные поля страницы.

За отображение отвечают два важных параметра табличного документа: ПолеСнизу и РазмерКолонтитулаСнизу. Если ПолеСнизу установлено в 0, то колонтитулу просто негде отобразиться, так как текст отчета занимает все пространство до края листа. Рекомендуется устанавливать ПолеСнизу не менее 10–20 мм, а РазмерКолонтитулаСнизу — около 10 мм.

Также проверьте свойство АвтоМасштаб. Если отчет очень широкий и система сильно его сжимает, чтобы уместить на один лист по ширине, текст колонтитула может стать практически нечитаемым или сместиться.


ТабДок.АвтоМасштаб = Истина; // Позволяет уместить отчет по ширине страницы
ТабДок.ПолеСнизу = 15;      // Отступ от края листа до данных
ТабДок.РазмерКолонтитулаСнизу = 10; // Положение текста колонтитула

Альтернатива: Колонтитул или Подвал макета?

Разберем ситуацию, когда подписи нужны только один раз в самом конце отчета, а не на каждой странице. В этом случае использовать НижнийКолонтитул методически неверно. Вместо этого в макете отчета создается отдельная область (например, с именем «Подвал»), где рисуются линии подписей и указываются должности.

Процесс вывода в коде будет выглядеть так:


ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
// Заполняем параметры области, если они есть
ОбластьПодвал.Параметры.ФИООтветственного = "Иванов И.И.";
// Выводим область после окончания основного цикла формирования данных
ТабДок.Вывести(ОбластьПодвал);

Если же стоит задача выводить подписи именно на каждой странице (как в строгих реестрах), то мы возвращаемся к использованию свойств объекта НижнийКолонтитул.

Особенности настройки в Системе компоновки данных (СКД)

Если ваш отчет строится на базе СКД, то программно обращаться к табличному документу в форме может быть поздно или неудобно. В СКД настройку можно сделать визуально без написания кода:

  1. Откройте схему компоновки данных.
  2. Перейдите на вкладку «Настройки».
  3. Выберите пункт «Другие настройки».
  4. Найдите параметры группы «Колонтитулы» и введите нужный текст прямо в соответствующие поля (Нижний колонтитул слева/справа/центр).

Система сама применит эти настройки при компоновке результата в табличный документ.

Таким образом, мы рассмотрели все основные способы добавления подписей. Главное правило — всегда проверяйте, к какому объекту вы обращаетесь, и не забывайте настраивать поля страницы, чтобы ваш текст был виден при печати.

← На главную