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

```1c
    Процедура ПроверкаВыводаОбластей(ТабДок,Область,ОбластьНомер = Неопределено,ОбластьПустая = Неопределено, НомерСтраницы = Неопределено,ПоследняяСтраница = Ложь)

    МассивОбластей = Новый Массив;
    МассивОбластей.Очистить();
    МассивОбластей.Добавить(Область);

    Если ОбластьНомер = Неопределено Тогда
    Иначе
    МассивОбластей.Добавить(ОбластьНомер);
    КонецЕсли;

    //Не пометилось на страницу переносим на следующую
    Если Не ТабДок.ПроверитьВывод(МассивОбластей) Тогда

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

    //Разрыв страницы
    ТабДок.ВывестиГоризонтальныйРазделительСтраниц();

    ТабДок.Вывести(Область);

    Если ПоследняяСтраница = Истина Тогда
    ВывестиНомер(ТабДок,ОбластьНомер,ОбластьПустая,НомерСтраницы);
    КонецЕсли;

    Иначе

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

    КонецЕсли;

    КонецПроцедуры
```

```1c
    Процедура ВывестиНомер(ТабДок,ОбластьНомер,ОбластьПустая,НомерСтраницы)

    МассивОбластей = Новый Массив;
    МассивОбластей.Очистить();
    МассивОбластей.Добавить(ОбластьПустая);
    МассивОбластей.Добавить(ОбластьНомер);

    Для Сч = 1 По 1000 Цикл

    //Непометилось на страницу переносим на следующию
    Если Не ТабДок.ПроверитьВывод(МассивОбластей) Тогда

    ОбластьНомер.Параметры.НомерСтраницы = НомерСтраницы;
    ТабДок.Вывести(ОбластьНомер);
    НомерСтраницы = НомерСтраницы + 1;

    Прервать;

    Иначе
    ТабДок.Вывести(ОбластьПустая);
    КонецЕсли;

    КонецЦикла;

    КонецПроцедуры
```
---
Область одна строка и соответственно, если она не помещается целиком на странице, то переносится целиком область.
Что бы это исправить, область надо разбить на несколько строк. Достаточно пограничные области разбить на строки.
---
Имеете ввиду не переносить область, а пусть принтер сам определит как разделить?

```1c
    Если Не ТабДок.ПроверитьВывод(МассивОбластей) Тогда // либо здесь поставить просто ложь

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

    //Разрыв страницы
    ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); //либо законектить эту строку.

    ТабДок.Вывести(Область);

    Если ПоследняяСтраница = Истина Тогда
    ВывестиНомер(ТабДок,ОбластьНомер,ОбластьПустая,НомерСтраницы);
    КонецЕсли;

    Иначе

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

    КонецЕсли;
```

Зависит от того какой результат нужен.
---
Делал так, все равно пустое место на страницах остается. А нужно чтобы построчно все заполнялось до конца листа
---
Вы полный скрин покажите как получается. А то по белому пространству не понятно что происходит. И покажите сам макет.
Может там область одна строка
---
Область одна строка и соответственно, если она не помещается целиком на странице, то переносится целиком область.
Что бы это исправить, область надо разбить на несколько строк. Достаточно пограничные области разбить на строки.
---
думал что все таки как то по-другому можно сделать, спасибо
---
Необходимые области разбивать на отдельные строки. Но не в самом макете, а прямо программно.

```1c
    &НаКлиенте
    Процедура Сформировать(Команда)

    ТабДок = ПолучитьТабДокНаСервере();
    ТабДок.Показать();

    КонецПроцедуры

    &НаСервере
    Функция ПолучитьТабДокНаСервере()

    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");

    ТабДок = Новый ТабличныйДокумент;
    Макет = ОбработкаОбъект.ПолучитьМакет("Макет");

    БольшаяОбласть = Макет.ПолучитьОбласть("БольшаяОбласть");
    Для СчСтрок = 1 По БольшаяОбласть.ВысотаТаблицы Цикл
    МаленькаяОбласть = БольшаяОбласть.ПолучитьОбласть(СчСтрок, 1, СчСтрок, БольшаяОбласть.ШиринаТаблицы);
    ТабДок.Вывести(МаленькаяОбласть);
    КонецЦикла;

    Возврат ТабДок;

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

Можно даже отдельную процедуру нарисовать - ВывестиОбластьПострочно(ТабДок, ОбластьВывода)...
---
И это работает если большая область всего одна строка, просто с переносом текста?
Так как у автора именно такая ситуация, а вы предлагаете способ, где многострочная область разбивается на несколько областей.
Но перевод на другую страницу (когда отдается на откуп принтеру) идет не по областям, а по строкам.
---
Конечно нет. То, что я написал - это разбиение многострочных областей на однострочные. Под строкой мы понимаем строку табличного документа, а не строку текста.
Если у вас огромный текст внутри одной ячейки области - вас ничем не спасти. Кроме использования в качестве макетов файлы Word. Но и там есть свои ограничения, которые не всегда вписываются в логику прикладной задачи.