Как вывести подвал на каждой странице табличного документа в 1С
Категория: Примеры кода | 23.06.2026 | Просмотров: 15
В этой статье разберём, как программно обеспечить вывод подвала (например, подписи, итогов) внизу каждой страницы при печати табличного документа — даже если данные выводятся «целиком», а не построчно.
Суть задачи
Часто при формировании печатных форм (счетов, отчётов) требуется, чтобы определённые данные (подвал) отображались внизу каждой страницы, а не только в конце документа. Проблема в том, что при «сплошном» выводе данных сложно «прижать» подвал к низу страницы. Решаем это программным разбиением данных на порции.
Алгоритм решения
- Определить, сколько строк помещается на странице с подвалом.
Используем методПроверитьВывод(), чтобы узнать, сколько строк можно вывести до перехода на новую страницу. - Выводить данные порциями.
- Вывести часть данных → подвал → перейти на новую страницу (
ВывестиГоризонтальныйРазделительСтраниц()).
- Вывести часть данных → подвал → перейти на новую страницу (
- Обработать последнюю страницу.
Заполнить остаток страницы пустыми строками, чтобы «прижать» подвал вниз.
Пример кода
Вот рабочий фрагмент модуля:
Процедура Печать()
.................
//Задаем массив проверки
МассивОснова = Новый Массив;
МассивОснова.Добавить(ОбластьМакетаОсновнойТекст);
МассивОснова.Добавить(ОбластьПодписьПодвал);
ТекСтрока = 1;
ВсегоСтрок = ОбластьМакетаОсновнойТекст.ВысотаТаблицы;
Пока ТекСтрока <= ВсегоСтрок Цикл
МаксСтрок = 0;
Для й=ТекСтрока По ВсегоСтрок Цикл
ВремОбласть = ОбластьМакетаОсновнойТекст.ПолучитьОбласть(ТекСтрока,, й);
МассивПроверки = Новый Массив;
МассивПроверки.Добавить(ВремОбласть);
МассивПроверки.Добавить(ОбластьПодписьПодвал);
Если ТабличныйДокумент.ПроверитьВывод(МассивПроверки) Тогда
МаксСтрок = й - ТекСтрока + 1;
Иначе
Прервать;
КонецЕсли;
КонецЦикла;
//выводим промежуточную область и подвал
ПоследняяСтрока = ТекСтрока + МаксСтрок - 1;
ЧастьОснОбласть = ОбластьМакетаОсновнойТекст.ПолучитьОбласть(ТекСтрока,, ПоследняяСтрока);
ТабличныйДокумент.Вывести(ЧастьОснОбласть);
Если ПоследняяСтрока <> ВсегоСтрок Тогда
ДополнитьСтраницуТабличногоДокумента(ТабличныйДокумент, ОбластьСтрокаПропуска, ОбластьПодписьПодвал);
ТабличныйДокумент.Вывести(ОбластьПодписьПодвал);
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТекСтрока = ТекСтрока + МаксСтрок;
КонецЦикла;
.............
КонецПроцедуры
Функция ДополнитьСтраницуТабличногоДокумента(ТабличныйДокумент, СтрокаПропуска, ОбластьПодвала)
ДобавленоСтрок = 0;
// Создаём массив для проверки
ВыводимыеОбласти = Новый Массив;
ВыводимыеОбласти.Добавить(СтрокаПропуска);
ВыводимыеОбласти.Добавить(ОбластьПодвала);
// Заполняем пустоту
Пока ТабличныйДокумент.ПроверитьВывод(ВыводимыеОбласти) И ДобавленоСтрок < ТабличныйДокумент.ВысотаСтраницы
Цикл
ТабличныйДокумент.Вывести(СтрокаПропуска);
ДобавленоСтрок = ДобавленоСтрок + 1;
КонецЦикла;
Возврат ДобавленоСтрок;
КонецФункцииРазбор кода
- Инициализация:
Создаётся массивМассивОсновадля проверки вывода (данные + подвал). - Цикл по строкам:
ТекСтрока— текущая стартовая строка,ВсегоСтрок— общее количество строк (черезВысотаТаблицы). - Определение
МаксСтрок:
Внутренний цикл проверяет, сколько строк поместится на странице вместе с подвалом. Если не помещается — прерывается. - Вывод порции данных:
Формируется областьЧастьОснОбласть(отТекСтрокадоПоследняяСтрока), которая выводится. - Обработка страницы:
Если это не последняя страница:- заполняется остаток страницы пустыми строками (
ДополнитьСтраницу...); - выводится подвал;
- переходит на новую страницу.
- заполняется остаток страницы пустыми строками (
- Обновление
ТекСтрока:
Текущая позиция сдвигается наМаксСтрок, цикл повторяется.
Ключевые моменты
- Последняя страница: условие
Если ПоследняяСтрока <> ВсегоСтрокпредотвращает лишний разделитель в конце. - Функция
ДополнитьСтраницу...: заполняет страницу пустыми строками, чтобы подвал «прижался» вниз.
Когда это полезно
- Формирование печатных форм отчётов, накладных, счетов.
- Обеспечение читаемости документа: ключевые данные (подвал) всегда на виду, независимо от длины данных.
Комментарии
Добавить комментарий
Только авторизованные пользователи могут оставлять комментарии. Войдите или зарегистрируйтесь
Комментариев пока нет.