Логика следующая:
1) в цикле разбиваем большую область "тело" на подобласти, через символ перенос строки.
2) если полученная подстрока умещается на страницу вместе с колонтитулом,- то выводим эту подстроку.
3) если не помещается заполняем свободное место пустой строкой, выводим колонтитул и разрыв страницы.
4) берем следующую область, например "тело2" и делаем вышеперечисленные операции.
//Получаем макет, всё как обычно.
Табдок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
ОбластьКолонтитулВерх = Макет.ПолучитьОбласть("ВерхнийКолонтитул");
ОбластьКолонтитулНиз = Макет.ПолучитьОбласть("НижнийКолонтитул");
//Получаем область текст и она же будет у нас пустая область.
//Для сдвига нижнего колонтитула в самый конец страницы при необходимости.
ОбластьПустая = Макет.ПолучитьОбласть("Текст");
ОбластьТекст = Макет.ПолучитьОбласть("Текст");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); //Заполнение - шаблон.
ОбластьТело = Макет.ПолучитьОбласть("Тело"); //Заполнение - шаблон или текст по желанию, у меня текст.
//В макете не видно этой области (реквизиты сторон).
ОбластьРеквизиты = Макет.ПолучитьОбласть("Реквизиты");
//Заполняем и выводим все как обычно, эти области у нас точно влезут.
Табдок.Вывести(ОбластьКолонтитулВерх);
ОбластьШапка.Параметры.Заполнить(Выборка);
Табдок.Вывести(ОбластьШапка);
//Из области тело получаем непосредственно ячейку с нашим текстом.
ТелоТела = ОбластьТело.Области.Тело;
//Открываем цикл от начала текста до окончания.
//Поскольку ячейка у нас по всей ширине области второй цикл по горизонтали нам не нужен.
//При необходимости открой второй цикл по горизонтали.
Для СчВерт = ТелоТела.Верх По ТелоТела.Низ Цикл
//Получили ячейку и текст из неё.
Ячейка = ОбластьТело.Область(СчВерт,0,СчВерт,0);
Текст = Ячейка.Текст;
Если ЗначениеЗаполнено(Текст) Тогда
//РЗ - это результат запроса выборки в которой хранятся данные для заполнения параметров.
//Подменяем текст ячейки заполняя параметры в квадратных скобках данными из выборки.
Для Каждого Колонка Из РЗ.Колонки Цикл
Текст = СтрЗаменить(Текст,"[" + Колонка.Имя + "]",Выборка[Колонка.Имя])
КонецЦикла;
//Разделяем текст в массив подстрок, в моем случае через перенос строки.
//Так мы разобьем большую ячейку с длинным текстом на более мелкие составляющие.
Масс = СтрРазделить(Текст, Символы.ПС, Ложь);
//Идем циклом по полученному массиву подстрок.
Для Каждого Стр Из Масс Цикл
//Присваиваем подстроку в параметр области текст.
//Изменяем шрифт на случай заголовков (по необходимости и другие свойства ячейки).
ОбластьТекст.Параметры.Текст = Стр;
ОбластьТекст.Области.Текст.Шрифт = Ячейка.Шрифт;
//Добавляем подстроку и нижний колонтитул в массив чтобы проверить влазят ли они на страницу.
Массив = Новый Массив;
Массив.Добавить(ОбластьТекст);
Массив.Добавить(ОбластьКолонтитулНиз);
//Если влазят, выводим ТОЛЬКО ПОДСТРОКУ на страницу
Если Табдок.ПроверитьВывод(Массив) Тогда
Табдок.Вывести(ОбластьТекст);
Иначе
//Если не влазят проверяем нужно ли сдвигать нижний колонтитул ниже по странице (в самый конец).
//Для этого проверяем умещаются ли пустая область и нижний колонтитул.
//Можно вынести в отдельную процедуру.
Массив = Новый Массив;
Массив.Добавить(ОбластьПустая);
Массив.Добавить(ОбластьКолонтитулНиз);
Пока Табдок.ПроверитьВывод(Массив) Цикл
//В циклы добавляем пустую область до тех пор пока она влазит вместе с нижним колонтитулом
Табдок.Вывести(ОбластьПустая);
КонецЦикла;
//После выводим нижний колонтитул, разделитель страниц, верхний колонтитул, и оставшуюся подстроку.
Табдок.Вывести(ОбластьКолонтитулНиз);
Табдок.ВывестиГоризонтальныйРазделительСтраниц();
Табдок.Вывести(ОбластьКолонтитулВерх);
Табдок.Вывести(ОбластьТекст);
КонецЕсли;
КонецЦикла;
Иначе
//Если попалась область без текста (разделитель параграфов) просто её выводим.
ОбластьТекст.Параметры.Текст = "";
Табдок.Вывести(ОбластьТекст);
КонецЕсли;
КонецЦикла;
//Заполняем следующие области параметрами, и при необходимости повторяем выше изложенный цикл.
ЗаполнитьЗначенияСвойств(ОбластьРеквизиты.Параметры,Выборка);
Если Табдок.ПроверитьВывод(ОбластьРеквизиты) Тогда
Табдок.Вывести(ОбластьРеквизиты);
Иначе
//...
КонецЕсли;