Как добавить повторяющийся нижний колонтитул в печатную форму счёта на базе табличного документа 1С?

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

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

Алгоритмический подход к формированию печатной формы

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

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

Реализация логики вывода

Для управления разбиением используйте методы объекта ТабличныйДокумент. Важно помнить, что каждая область имеет свойство ВысотаСтроки. Давайте посмотрим, как это выглядит на примере кода:


// Пример логики вывода с контролем страницы
ТекущаяВысота = 0;
ЛимитВысоты = 250; // Примерный лимит для страницы

Для Каждого Стр Из ДанныеСчета Цикл
    ОбластьСтроки = Макет.ПолучитьОбласть("Строка");
    // Заполнение параметров...
    
    Если ТекущаяВысота + ОбластьСтроки.ВысотаСтроки > ЛимитВысоты Тогда
        // Выводим наш «подвал»
        ОбластьПодвал = Макет.ПолучитьОбласть("НижнийКолонтитул");
        ТабДок.Вывести(ОбластьПодвал);
        
        // Принудительно начинаем новую страницу
        ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        ТекущаяВысота = 0;
    КонецЕсли;
    
    ТабДок.Вывести(ОбластьСтроки);
    ТекущаяВысота = ТекущаяВысота + ОбластьСтроки.ВысотаСтроки;
КонецЦикла;

Важные нюансы при разработке

Анализируя процесс формирования формы, необходимо учитывать несколько критических факторов, которые могут повлиять на результат:

Альтернативные подходы

Если задача требует строгого соответствия визуальным стандартам, которые сложно обеспечить программным расчетом в ТабличномДокументе, мы рекомендуем рассмотреть альтернативы:

Переход на макеты Microsoft Word: При работе с COM-объектами или через библиотеку OpenXML, колонтитулы в Word являются системной функциональностью. Это означает, что изображение, вставленное в нижний колонтитул документа Word, будет гарантированно отображаться на каждой странице без необходимости ручного вычисления высоты строк.

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

← На главную