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

```1c
    Процедура КнопкаСформироватьНажатие(Кнопка)
    ТабДокумент = Новый ТабличныйДокумент;

    Макет = ЭтотОбъект.ПолучитьМакет("Акт");
    Загаловок = Макет.ПолучитьОбласть("Заголовок");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    Основа = Макет.ПолучитьОбласть("Основа");
    Реквезиты = Макет.ПолучитьОбласть("Реквезиты");
    Название = Макет.ПолучитьОбласть("Название");
    ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");
    Дир = Макет.ПолучитьОбласть("Дир");
    Исполнитель = Макет.ПолучитьОбласть("Исполнитель");

    ТабДокумент.Вывести(Название);
    ТабДокумент.Вывести(Реквезиты);
    Загаловок.Параметры.Контрагент = Контрагент;
    ТабДокумент.Вывести(Загаловок);
    ТабДокумент.Вывести(Шапка);
    ТабДокумент.Вывести(Основа);

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | РеализацияТоваровУслуг.Номер,
    | РеализацияТоваровУслуг.Дата,
    | РеализацияТоваровУслуг.Контрагент КАК Контрагент,
    | РеализацияТоваровУслуг.Организация КАК Организация
    |ИЗ
    | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    | РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    | И РеализацияТоваровУслуг.Контрагент = &Контрагент
    | И РеализацияТоваровУслуг.Организация = &Организация";

    Запрос.УстановитьПараметр("ДатаНачала", НачалоПериода);
    Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(КонецПериода));
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("Контрагент", Контрагент);

    Результат = Запрос.Выполнить();

    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() цикл
    Основа.Параметры.Заполнить(Выборка);
    Основа.Параметры.ДатаДокумент = Формат(Выборка.Дата,"ДЛФ=DD");
    Основа.Параметры.Номер = Выборка.Номер;
    ТабДокумент.Вывести(Основа);

    КонецЦикла;
    ТабДокумент.Вывести(Дир);
    ТабДокумент.Вывести(Исполнитель);
    Подвал = ТабДокумент.Вывести(ОбластьМакетаПодвал);
    ТабДокумент.ПовторятьПриПечатиСтроки = ТабДокумент.Область("Подвал");

    ТабДокумент.ОтображатьСетку = Ложь;
    ТабДокумент.Защита = Ложь;
    ТабДокумент.ТолькоПросмотр = Ложь;
    ТабДокумент.Показать();
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
```
---
Приблизительно так

```1c
    Процедура КнопкаСформироватьНажатие(Кнопка)
    ТабДокумент = Новый ТабличныйДокумент;

    Макет = ЭтотОбъект.ПолучитьМакет("Акт");
    Загаловок = Макет.ПолучитьОбласть("Заголовок");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    Основа = Макет.ПолучитьОбласть("Основа");
    Реквезиты = Макет.ПолучитьОбласть("Реквезиты");
    Название = Макет.ПолучитьОбласть("Название");
    ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");
    Дир = Макет.ПолучитьОбласть("Дир");
    Исполнитель = Макет.ПолучитьОбласть("Исполнитель");

    // Массив с двумя строками - для разбиения на страницы.
    ВыводимыеОбласти = Новый Массив();
    ВыводимыеОбласти.Добавить(Основа);
    ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);

    ТабДокумент.Вывести(Название);
    ТабДокумент.Вывести(Реквезиты);
    Загаловок.Параметры.Контрагент = Контрагент;
    ТабДокумент.Вывести(Загаловок);
    ТабДокумент.Вывести(Шапка);
    ТабДокумент.Вывести(Основа);

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | РеализацияТоваровУслуг.Номер,
    | РеализацияТоваровУслуг.Дата,
    | РеализацияТоваровУслуг.Контрагент КАК Контрагент,
    | РеализацияТоваровУслуг.Организация КАК Организация
    |ИЗ
    | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    | РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    | И РеализацияТоваровУслуг.Контрагент = &Контрагент
    | И РеализацияТоваровУслуг.Организация = &Организация";

    Запрос.УстановитьПараметр("ДатаНачала", НачалоПериода);
    Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(КонецПериода));
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("Контрагент", Контрагент);

    Результат = Запрос.Выполнить();

    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() цикл
    Основа.Параметры.Заполнить(Выборка);
    Основа.Параметры.ДатаДокумент = Формат(Выборка.Дата,"ДЛФ=DD");
    Основа.Параметры.Номер = Выборка.Номер;

    // Проверим, уместятся ли на листе Основа+Подвал; если нет, то выведем только подвал
    ВывестиПодвалЛиста = Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
    Если ВывестиПодвалЛиста Тогда
    ТабличныйДокумент.Вывести(ОбластьМакетаПодвал);
    КонецЕсли;

    ТабДокумент.Вывести(Основа);

    КонецЦикла;
    ТабДокумент.Вывести(Дир);
    ТабДокумент.Вывести(Исполнитель);
    Подвал = ТабДокумент.Вывести(ОбластьМакетаПодвал);
    // Это не нужно ТабДокумент.ПовторятьПриПечатиСтроки = ТабДокумент.Область("Подвал");

    ТабДокумент.ОтображатьСетку = Ложь;
    ТабДокумент.Защита = Ложь;
    ТабДокумент.ТолькоПросмотр = Ложь;
    ТабДокумент.Показать();
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();

    КонецПроцедуры
```
---
Попробуй выводить используя метод ПроверитьВывод() и добавлять на каждую страницу вначале "Подвал"
---
Приблизительно так

```1c
    Процедура КнопкаСформироватьНажатие(Кнопка)
    ТабДокумент = Новый ТабличныйДокумент;

    Макет = ЭтотОбъект.ПолучитьМакет("Акт");
    Загаловок = Макет.ПолучитьОбласть("Заголовок");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    Основа = Макет.ПолучитьОбласть("Основа");
    Реквезиты = Макет.ПолучитьОбласть("Реквезиты");
    Название = Макет.ПолучитьОбласть("Название");
    ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");
    Дир = Макет.ПолучитьОбласть("Дир");
    Исполнитель = Макет.ПолучитьОбласть("Исполнитель");

    // Массив с двумя строками - для разбиения на страницы.
    ВыводимыеОбласти = Новый Массив();
    ВыводимыеОбласти.Добавить(Основа);
    ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);

    ТабДокумент.Вывести(Название);
    ТабДокумент.Вывести(Реквезиты);
    Загаловок.Параметры.Контрагент = Контрагент;
    ТабДокумент.Вывести(Загаловок);
    ТабДокумент.Вывести(Шапка);
    ТабДокумент.Вывести(Основа);

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | РеализацияТоваровУслуг.Номер,
    | РеализацияТоваровУслуг.Дата,
    | РеализацияТоваровУслуг.Контрагент КАК Контрагент,
    | РеализацияТоваровУслуг.Организация КАК Организация
    |ИЗ
    | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    | РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    | И РеализацияТоваровУслуг.Контрагент = &Контрагент
    | И РеализацияТоваровУслуг.Организация = &Организация";

    Запрос.УстановитьПараметр("ДатаНачала", НачалоПериода);
    Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(КонецПериода));
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("Контрагент", Контрагент);

    Результат = Запрос.Выполнить();

    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() цикл
    Основа.Параметры.Заполнить(Выборка);
    Основа.Параметры.ДатаДокумент = Формат(Выборка.Дата,"ДЛФ=DD");
    Основа.Параметры.Номер = Выборка.Номер;

    // Проверим, уместятся ли на листе Основа+Подвал; если нет, то выведем только подвал
    ВывестиПодвалЛиста = Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
    Если ВывестиПодвалЛиста Тогда
    ТабличныйДокумент.Вывести(ОбластьМакетаПодвал);
    КонецЕсли;

    ТабДокумент.Вывести(Основа);

    КонецЦикла;
    ТабДокумент.Вывести(Дир);
    ТабДокумент.Вывести(Исполнитель);
    Подвал = ТабДокумент.Вывести(ОбластьМакетаПодвал);
    // Это не нужно ТабДокумент.ПовторятьПриПечатиСтроки = ТабДокумент.Область("Подвал");

    ТабДокумент.ОтображатьСетку = Ложь;
    ТабДокумент.Защита = Ложь;
    ТабДокумент.ТолькоПросмотр = Ложь;
    ТабДокумент.Показать();
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();

    КонецПроцедуры
```
---
Спасибо сработало!!! Не подскажите еще один момент, как сделать что бы подвал внизу страницы печатался?
---
Так он и так внизу печатается (по крайней мере должен). Или нужно, чтобы в самом низу было?
---
он внизу печатается на 1 листе, а на втором он печатает не в конце а где заканчивается "отчет" например по середине
---
Вот такую штуку можно провернуть

```1c
    // Дополняет табличный документ переданной строкой до конца страницы так,
    // чтобы на странице уместился указанный подвал.
    //
    // Параметры:
    // ТабДокумент - ТабличныйДокумент - дополняемый табличный документ.
    // Строка - ТабличныйДокумент - строка, которой дополняется документ.
    // Подвал - Массив, ТабличныйДокумент - подвал, которым должна закончиться страница.
    //
    // Возвращаемое значение:
    // Число - количество добавленных строк.
    //
    Функция ДополнитьСтраницуТабличногоДокумента(ТабличныйДокумент, Строка, Подвал = Неопределено) Экспорт

    ДобавленоСтрок = 0;

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

    Пока ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабличныйДокумент, ВыводимыеОбласти, Ложь) И ДобавленоСтрок < ТабличныйДокумент.ВысотаСтраницы Цикл
    ТабличныйДокумент.Вывести(Строка);
    ДобавленоСтрок = ДобавленоСтрок + 1;
    КонецЦикла;

    Возврат ДобавленоСтрок

    КонецФункции
```

В параметр Строка передать область табдока, которой будет заполнено пустое место.
---
у меня УПП обычные формы, пройдет такой вариант?
---
Ничего не должно помешать. В крайнем случае заимствовать недостающие процедуры ОбщегоНазначенияКлиентСервер.ДополнитьМассив, ОбщегоНазначения.ПроверитьВыводТабличногоДокумента из БСП 3.1
---
это делать после процедуры? или в модуле объекта?
---
Это надо сделать после вывода всех областей "Основа", т.е. сразу после цикла.
---
Делаю как вы сказали, почему то выдает ошибки
1. {ВнешнийОтчет.АктСдачиПриемкиПоДоговоруПодряда.Форма.Форма_Групповая.Форма(65,4)}: Ожидается ключевое слово 'КонецПроцедуры' ('EndProcedure')
   <<?>>Функция ДополнитьСтраницуТабличногоДокумента(ТабличныйДокумент, Строка, Подвал = Неопределено) Экспорт (Проверка: Толстый клиент (обычное приложение))

2.{ВнешнийОтчет.АктСдачиПриемкиПоДоговоруПодряда.Форма.Форма_Групповая.Форма(98,59)}: Обнаружено логическое завершение исходного текста модуля
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();<<?>> (Проверка: Толстый клиент (обычное приложение))

```1c
    Процедура КнопкаСформироватьНажатие(Кнопка)
    ТабДокумент = Новый ТабличныйДокумент;

    Макет = ЭтотОбъект.ПолучитьМакет("Акт");
    Загаловок = Макет.ПолучитьОбласть("Заголовок");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    Основа = Макет.ПолучитьОбласть("Основа");
    Реквезиты = Макет.ПолучитьОбласть("Реквезиты");
    Название = Макет.ПолучитьОбласть("Название");
    ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");
    Дир = Макет.ПолучитьОбласть("Дир");
    Исполнитель = Макет.ПолучитьОбласть("Исполнитель");

    // Массив с двумя строками - для разбиения на страницы.
    ВыводимыеОбласти = Новый Массив();
    ВыводимыеОбласти.Добавить(Основа);
    ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);

    ТабДокумент.Вывести(Название);
    ТабДокумент.Вывести(Реквезиты);
    Загаловок.Параметры.Контрагент = Контрагент;
    ТабДокумент.Вывести(Загаловок);
    ТабДокумент.Вывести(Шапка);
    ТабДокумент.Вывести(Основа);

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | РеализацияТоваровУслуг.Номер,
    | РеализацияТоваровУслуг.Дата,
    | РеализацияТоваровУслуг.Контрагент КАК Контрагент,
    | РеализацияТоваровУслуг.Организация КАК Организация
    |ИЗ
    | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    | РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    | И РеализацияТоваровУслуг.Контрагент = &Контрагент
    | И РеализацияТоваровУслуг.Организация = &Организация";

    Запрос.УстановитьПараметр("ДатаНачала", НачалоПериода);
    Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(КонецПериода));
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("Контрагент", Контрагент);

    Результат = Запрос.Выполнить();

    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() цикл
    Основа.Параметры.Заполнить(Выборка);
    Основа.Параметры.ДатаДокумент = Формат(Выборка.Дата,"ДЛФ=DD");
    Основа.Параметры.Номер = Выборка.Номер;

    // Проверим, уместятся ли на листе Основа+Подвал; если нет, то выведем только подвал
    ВывестиПодвалЛиста = Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
    Если ВывестиПодвалЛиста Тогда
    ТабДокумент.Вывести(ОбластьМакетаПодвал);
    КонецЕсли;

    ТабДокумент.Вывести(Основа);

    КонецЦикла;
    Функция ДополнитьСтраницуТабличногоДокумента(ТабличныйДокумент, Строка, Подвал = Неопределено) Экспорт

    ДобавленоСтрок = 0;

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

    Пока ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабличныйДокумент, ВыводимыеОбласти, Ложь) И ДобавленоСтрок < ТабличныйДокумент.ВысотаСтраницы Цикл
    ТабличныйДокумент.Вывести(Строка);
    ДобавленоСтрок = ДобавленоСтрок + 1;
    КонецЦикла;

    Возврат ДобавленоСтрок

    КонецФункции

    ТабДокумент.Вывести(Дир);
    ТабДокумент.Вывести(Исполнитель);
    Подвал = ТабДокумент.Вывести(ОбластьМакетаПодвал);
    // Это не нужно ТабДокумент.ПовторятьПриПечатиСтроки = ТабДокумент.Область("Подвал");

    ТабДокумент.ОтображатьСетку = Ложь;
    ТабДокумент.Защита = Ложь;
    ТабДокумент.ТолькоПросмотр = Ложь;
    ТабДокумент.Показать();
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
```
---
Как всё запущено. Функцию из тела процедуры вынесите и вызывайте.
---
```1c
    Пока Выборка.Следующий() цикл
    Основа.Параметры.Заполнить(Выборка);
    Основа.Параметры.ДатаДокумент = Формат(Выборка.Дата,"ДЛФ=DD");
    Основа.Параметры.Номер = Выборка.Номер;

    // Проверим, уместятся ли на листе Основа+Подвал; если нет, то выведем только подвал
    ВывестиПодвалЛиста = Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
    Если ВывестиПодвалЛиста Тогда
    ТабДокумент.Вывести(ОбластьМакетаПодвал);
    КонецЕсли;

    ТабДокумент.Вывести(Основа);

    КонецЦикла;

    ДополнитьСтраницуТабличногоДокумента(ТабДокумент, Основа, ОбластьМакетаПодвал);

    ТабДокумент.Вывести(Дир);
    ТабДокумент.Вывести(Исполнитель);
```
---
Спасибо
---
Пожалуйста
---
попробовал не получается, даже если отчет вмещается на один лист то он подвал тоже сразу послу реестра документов печатает