Произвольные колонтитулы и повтор шапки таблицы в табличном документе (функция)

Публикация № 1305854 07.10.20

Разработка - Универсальные функции

табличный документ макет печать колонтитулы печатная форма шапка таблицы 8.3 управляемые формы

Пример рекурсивной функции, при помощи которой в табличный документ можно выводить верхний или нижний колонтитулы с произвольным содержимым, а также делать повтор шапки таблицы (или таблиц, если их несколько).

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

Задача состояла в следующем: 
1) выводить не очень большой табличный документ (до 30 листов) с несколькими таблицами,
2) на каждой странице в колонтитуле добавлять нумерацию (если страниц больше одной) и картинку (QR-код) (в том числе корректно выводить нижний колонтитул на последней странице),
3) если какие-либо из таблиц переносились на следующую страницу, необходимо было производить повтор шапки переносимой таблицы, при этом не допустить, чтобы на предыдущей странице осталась только шапка без хотя бы одной строки данных в ней,
4) предусмотреть возможность вывода произвольного верхнего колонтитула (изначально макетом заложен не был).

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

Статей на данную тему с примерами вывода колонтитулов и повторов шапки таблицы в интернете, в том числе и здесь на Инфостарте довольно много. Однако, когда возникла описанная выше задача, готового варианта реализации всех названных условий не нашлось (лишь фрагментарно), поэтому был написан некий свой универсальный вариант.
Основным источником идеи для алгоритма был этот пост на Инфостарте от Игоря (за что ему большое спасибо!) под названием "Что делать если в табличный документ нужно выводить колонтитулы с картинками".

Привожу код получившейся основной рекурсивной функции вывода в табличный документ колонтитулов и повторения шапки таблицы:

 
 Код функции

 

Как использовать данную функцию

Что понадобится задать в макете для использования функции:
    1) область пустой строки,
    2) область верхнего колонтитула с произвольным содержимым,
    3) область нижнего колонтитула с произвольным содержимым,
    4) области шапок таблиц.

Пример:

 

В коде их соответственно зачитываем:

ОбластьВерхнегоКолонтитула = Макет.ПолучитьОбласть("ВерхнийКолонтитул");
ОбластьНижнегоКолонтитула = Макет.ПолучитьОбласть("НижнийКолонтитул");
ОбластьПустойСтроки = Макет.ПолучитьОбласть("ПустаяСтрока");

 

Заполняем колонтитулы значениями параметров, если они присутствуют, например:

// картинка кода (здесь исключительно для примера).
ОбластьНижнегоКолонтитула.Параметры.QRCode = QRCode;

 

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

ТабДок = Новый ТабличныйДокумент;
// размер и параметры страницы (необходимо для вычислений страниц)
ТабДок.РазмерСтраницы = "A4";
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДок.МасштабПечати = 100; // 100%
ТабДок.ПолеСверху = 10;
ТабДок.ПолеСнизу = 5;
ТабДок.ПолеСлева = 15;
ТабДок.ПолеСправа = 10;
НомерСтраницы = 1;

 

Теперь можно формировать табличный документ, обращаясь к функции при построчном выводе данных в ТабДок.

Пример вывода какой-либо области:

Область = Макет.ПолучитьОбласть("ШапкаДокумента");
// заполняем значениями параметров, если есть.
Область.Параметры.Заполнить(ПараметрыОтчетаВВидеСтруктуры);
НомерСтраницы = ВыводВТабДокСКолонтитулами(ТабДок, Область, 
ОбластьПустойСтроки, ОбластьВерхнегоКолонтитула, ОбластьНижнегоКолонтитула,, НомерСтраницы);

 

Пример вывода таблицы:

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

 

Параметр ЗапретВисячихШапокТаблицы в функции задан безусловно в Истина, но при использовании данной функции Вы можете вынести параметр за ее пределы и сделать настраиваемым, главное, что есть такая возможность.

Пример повтора шапки таблицы:

Почему в задаче был упомянут корректный вывод нижнего колонтитула на последней странице? Потому что при тех способах, что советовали в других статьях (например, просто добавить область нижнего колонтитула к последней выводимой области в документе) получалось, что колонтитул отображался не в самом низу страницы, а там, где закончился документ (например, где-нибудь посередине, а бывало и в вверху). В указанной функции для этого используется область пустой строки (т.е. последняя страница "дополняется" до самого низа пустыми строками и только в самом конце выводится нижний колонтитул).
Вот пример вывода последней страницы:

 

Поэтому, после вывода всех данных в табличный документ делаем завершающий вызов функции, если нужно корректно завершить страницу с нижним колонтитулом:

// завершающий вывод
НомерСтраницы = ВыводВТабДокСКолонтитулами(ТабДок,, 
ОбластьПустойСтроки,, ОбластьНижнегоКолонтитула,, НомерСтраницы);

 

Полный пример:

 
 Пример использования функции

 

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

 

См. также:

Возможно будут интересны статьи:

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. it-expert 08.10.20 14:01 Сейчас в теме
В макете это просто сделать. Вот когда отчет на СКД то появляется засада
user712426; +1 Ответить
2. user618575_VladimirGluhov.1c 2 18.03.21 11:26 Сейчас в теме
3. user825364 01.09.21 14:42 Сейчас в теме
Оч круто.. например письма на оф бланках формируются на раз.. Спасибо!
4. krlexa 05.08.22 09:26 Сейчас в теме
А можно ли как-то вывести &СтраницВсего как в стандартных колонтитулах?
7. banitBPS 07.04.23 12:34 Сейчас в теме
Макет.НижнийКолонтитул.Выводить = Истина;
Макет.НижнийКолонтитул.ТекстВЦентре = "Страница [&НомерСтраницы] из [&СтраницВсего] ";
5. val_ka 28.09.22 08:26 Сейчас в теме
Спасибо от души. Столько времени сэкономлено
6. ketr 118 03.10.22 15:38 Сейчас в теме
Очень помогла ваша статья, благодарю!
Оставьте свое сообщение

См. также

Программные перечисления, ч.2: приемы кэширования при разработке

Универсальные функции Механизмы платформы 1С Запросы Платформа 1С v8.3 Бесплатно (free)

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

30.10.2017    31721    unichkin    18    

93

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    60602    tormozit    53    

144

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    58113    tormozit    79    

151

Универсальные функции с примерами использования

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

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

26.02.2016    45844    unichkin    48    

308

Ускорение отладки управляемых форм

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Ускорение отладки управляемых форм в больших неповоротливых конфигурациях, когда заказчик просит что-то и сам не знает, что из этого получится.

23.05.2015    15748    moolex    6    

26

УстановитьСсылкуНового() как ход оптимизации!

Универсальные функции Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

22.10.2014    64817    logarifm    85    

150

[8.2] Глобальные переменные в контексте сервера (управляемое приложение)

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Можно ли в 8.2 на сервере хранить ссылку на объект внешней компоненты? Можно! Рассмотрим на примере... Эта статья - отчет на вопрос в http://infostart.ru/forum/forum14/topic29689/

09.12.2009    39755    Душелов    34    

80

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

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Навеяло от...http://infostart.ru/public/203664/ но с другого бока. Пришли пингвины, заявили... (а база перекурочена предшественниками как черепаха богом) хотим чтоб если есть в документе такой то реквизит, чтоб он всегда был заполнен... или же никогда там не выбирались группы и перечислили наименования справочников при ссылке на которые не должно быть пустот. И что? Я рыжий сидеть дня два прсматривать каждый из почти двух сотен доков? Потому и уродились три подписки на события. Описание в тексте Выбор групп проверяется на событие ПередЗаписью а проверка реквизитов на событии ОбработкаПроверкиЗаполнения

16.10.2013    15218    ser6702    7    

9

Стандартные доработки. Запрет изменения документов “ЗаказовПокупателей”, по которым есть движения.

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Стандартные доработки. Запрет изменения документов “ЗаказовПокупателей”, по которым есть движения. Эта статья описывает процесс доработки типовых 1С конфигураций, для добавления возможности запретить редактировать документы, на основании которых другими документами уже сделаны движения в регистрах накопления. Это позволяет предотвратить часть ошибок, возникающих из-за действий пользователя задним числом.

07.04.2011    28660    milkers    25    

28

Сканируем без сканера или MXL to JPG

Внешние источники данных Универсальные функции Печатные формы Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Хотите конвертировать документы в формат изображения менее чем за минуту, не имея сканера? Тогда эта статья для вас.

24.05.2012    35418    shakmaev    47    

142

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке

Универсальные функции Зарплата Кадровый учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Бухгалтерский учет Бесплатно (free)

В статье размещен список стандартных процедур и функций с примерами, которые могут помочь при разработке (доработке) конфигураций Зарплата и управление персоналом ред. 3.1 и Зарплата и кадры государственного учреждения 3.1. Иногда бывает довольно сложно правильно получить данные или долго, поэтому лучшим вариантом будет использование стандартных процедур. Буду очень признателен, если Вы поделитесь своим опытом и предложите свои варианты стандартных процедур которые помогают в работе. Или предложите, как дополнить имеющиеся процедуры.

14.11.2018    230189    GeterX    175    

1006

Форма выбора (подбор) в управляемых формах

Универсальные функции Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Бесплатно (free)

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    178633    user5300    40    

288

Золотые костыли

Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Немного о программировании.

23.08.2018    12305    vasilev2015    39    

43

Чтение CSV (быстрое)

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

Почему то из гугла до сих пор нет ссылки на код процедуры быстро читающей csv... Загрузка из файла CSV c помощью ADODB.Connection провайдера Microsoft.Jet.OLEDB.

31.03.2021    7664    kuzyara    7    

17

Выполнение длительных операций в фоновых заданиях

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Как программно запустить длительные операции в фоновых заданиях без блокировки пользовательского интерфейса.

19.01.2023    2031    programmer_2019    6    

26

Функции для преобразования справочников и документов в соответствие и обратно

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

01.11.2021    1834    avalakh    5    

19

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    5476    quazare    8    

101

Конвейеры обработки сообщений

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

Проект методики разработки решений для последовательной обработки сообщений или объектов данных по принципу построения конвейера.

27.06.2022    1684    zhichkin    13    

17

Выгрузка данных в Excel с добавлением формул (нюансы формирования формул)

Загрузка и выгрузка в Excel Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

30.05.2022    3464    Zlohobbit    5    

19

Хитрости СКД. Часть 3

СКД Универсальные функции Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

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

28.05.2022    6657    milkers    11    

87

Базовые принципы работы с регламентными заданиями подсистем БСП

Универсальные функции БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В очередной публикации рассмотрим некоторые базовые приемы работы с регламентными заданиями в рамках библиотеки стандартных подсистем

22.05.2022    9273    quazare    24    

55

Модули общего назначения - готовые полезные функции и процедуры конфигураций на БСП

Универсальные функции БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной статье я рассматриваю несколько полезных "классических" функций и процедур для работы с данными, которые уже встроены в БСП и готовы к использованию.

25.04.2022    10138    quazare    11    

130

Вывод табличных документов с разной ориентацией страниц в один pdf файл

Универсальные функции Платформа 1С v8.3 Россия Бесплатно (free)

Привожу код для вывода нескольких табличных документов c разной ориентацией страниц в один файл pdf.

06.04.2022    2697    sdjoker    5    

28

Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0 (сравнение)

Универсальные функции Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бесплатно (free)

В данном обзоре приведу примеры встроенных используемых функций для работы с печатными формами на примерах конфигураций Управление торговлей 11.4 и Бухгалтерия 3.0.

10.07.2020    15054    quazare    7    

86

Полезный код для программистов 1С (часть 3). Подготовка печатных форм + подсистема Управление печатью (БСП)

БСП (Библиотека стандартных подсистем) Универсальные функции Платформа 1С v8.3 Бесплатно (free)

Мы все любим 1С, не так ли? Вот дает 1С прекрасный механизм возможности модификации макетов печатных форм в БСП. А из всех рекомендаций это получение макета и заполнение параметров областей. И вы спросите: "А что не так... ты печатные формы накодить не можешь без указаний сверху?". Да вот в том то и дело, что я могу все. А вот пользователям от такого механизма пользы 0, если из всех доступных изменений остаются только шрифты, да текст произвольный накинуть. А ведь можно больше, надо только соблюдать несколько правил при подготовке печатных форм...

07.03.2022    9820    vandalsvq    0    

56

Убираем параметры из отбора СКД

Универсальные функции СКД Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

Заметка о некоторых технических нюансах параметров данных и отборов СКД.

17.02.2022    5390    Yashazz    29    

31

Конвертируем печатную форму pdf в картинку (jpg, gif, png и прочие) на сервере

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Была поставлена интересная задача конвертировать печатную форму в файл картинку. По условию задачи клиенту на почту нужно присылать только файл картинку (jpg, gif).

22.12.2021    6342    John_d    25    

46

Несколько простых приемов для удобной работы в конфигураторе

Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

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

12.11.2021    13542    acces969    95    

142

Простейший способ учета изменений управляемых форм объектов 1С

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Описание методологии, позволяющей контролировать список изменений форм + вспомогательные функции программного изменения форм. Пригодятся при внесении изменений в расширениях, если есть необходимость видеть и контролировать все сделанные с формой изменения.

02.11.2021    2043    avalakh    13    

20

Программно свернуть/развернуть узел динамического списка (с основной таблицей). Жирная точка над всеми "i".

Работа с интерфейсом Универсальные функции Платформа 1С v8.3 Бесплатно (free)

Какой пользователь не мечтал поменьше тыркать кнопкой? Особенно в малюсенькие +/- в "древесных" динамических списках. Если вас тоже озадачили, чтобы, при выборе узла дерева сами развернулись все его вложенные элементы , а при выборе другого узла - так же автоматом свернулась ранее развернутая ветка (причем эти узлы могут находится в разных "отношениях" друг с другом)... То вам - сюда.

08.10.2021    3841    e-9    13    

21

Из Word в табличный документ

Универсальные функции Платформа 1С v8.3 Платформа 1C v8.2 Бесплатно (free)

Быстро и просто: текст, списки, таблицы. Готовый код

18.08.2021    4728    Yashazz    6    

64

Префиксация объектов - полезный типовой функционал БСП

Универсальные функции БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Россия Бухгалтерский учет Управленческий учет Бесплатно (free)

В данной публикации предлагаю рассмотреть основные типовые возможности библиотеки стандартных подсистем (БСП), касаемые префиксации объектов конфигураций.

21.06.2021    10856    quazare    4    

61

Своя функция &Вместо &ИзменениеИКонтроль

Универсальные функции Платформа 1С v8.3 Россия Бесплатно (free)

Как добавить контроль в расширения, если не доверяешь аннотации &ИзменениеИКонтроль.

06.06.2021    16500    AntonProgma    171    

18

Предотвращение многократного вызова "ПриПолученииДанных" во время поиска в табличном поле в обычных формах

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

Долго искал решение: как при выводе строк заполнить значениями колонки, которые созданы программно, чтобы, не было тормозов при стандартном поиске. И с минимальными изменениями (легко контролируемыми, при обновлении).

07.04.2021    3608    Vlad_CK    9    

25

Лайфхаки для разработчиков 1С. Часть 1

Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Россия Бесплатно (free)

Собрали 20 лайфхаков, которые используют наши программисты при работе с 1С. Формы, контрагенты, СКД, процедуры, глюки платформы и многое другое. В этой статье публикуем первую часть.

30.09.2020    9653    Neti    47    

68

Сохранение настроенного запроса набора данных СКД

Универсальные функции Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Как сохранить запрос набора данных СКД в том виде, каким он будет выполнен системой для открытия в консоли запросов с диска ИТС.

09.11.2020    2424    Serge R    0    

21

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

Универсальные функции Механизмы типовых конфигураций Платформа 1С v8.3 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Бесплатно (free)

Рабочий механизм создания документа Установка цен номенклатуры в КА 2 и УТ 11, без сохранения документа и с рабочим отображением заполненных данных.

11.03.2021    3637    Vladimir_D    10    

16