работаю в системе 4.6c
если использовать TABLE (а не LOOP), то высота у строк в самом деле может быть разной, но это можно решить.
я делаю так:
1. беру те поля, которые могут отличаться по длине (типа кр.текста), и модулем Z_SPLIT_WORDS разбиваю его во внутреннюю таблицу.
2. считаю, кол-во строк в этой таблице; если текстовых полей несколько, беру макс.значение.
поэтому количество строк на листе с грехом пополам, но можно посчитать вручную. если кол-во превышает некоторый лимит, то последняя строка должна быть перенесена на отдельный лист - это делается, как уже сказали, с помощью COMMAND.
нюанс в том, что COMMAND внутри TABLE отработать не может, поэтому нужно разделить TABLE на 2 части - в первой хранится вся таблица за исключением посл.строки, во второй - последняя строка.
с учетом этой особенности, алгоритм будет таким:
1. выводим 1 часть таблицы, по пути анализируя - а хватит ли нам места для вывода текста после таблицы?
2. если решаем что не хватит, то выставляем флаг;
3а. после вывода 1 части смотрим: если флаг выставлен, то запускаем COMMAND с переходом на новую страницу.
3б если не выставлен - значит текст после таблицы не разорвется, и последнюю строку можно вывести сразу после таблицы, - поэтому перехода COMMAND не делаем.
4. выводим последнюю строку таблицы вместе с подитогом, и тем текстом, который нужно неразрывно вывести с последней строкой таблицы.
подитоги выводятся в футере 1 части таблицы внизу каждой страницы.
при этом нужно обязательно проследить, чтобы в конце вывода не вывелось 2 подитога - от 1й части, и от 2й.
минус метода OlegDm заключается в том, что в папке внутри TABLE нельзя поместить шаблон (будет ругаться), и свойство неразрывности поэтому задать нельзя.
если бы то что выводится после таблицы в самом деле умещалось бы в 1 строку, то наверное это и сработало бы.
минус использования LOOP в том, что там нужно задавать максимальную высоту ячейки, чтобы ничего не обрезалось, соответственно выглядеть будет плохо.
|
|