Предположим, нам требуется распечатать ОЧЕНЬ длинную таблицу значений. На каждой странице сверху нужны заголовки колонок, а снизу - некие колонтитулы, содержащие, например, номера страниц. Задача распространенная, но где взять эти номера?
Можно, конечно, применить Формекс и считать высоту строк. А можно и штатными средствами. Примерно, так:
Процедура Напечатать()
Таб1 = СоздатьОбъект("Таблица");
Таб1.ИсходнаяТаблица("Таблица");
Таб1.ПовторятьПриПечатиСтроки(14,15); //Это заголовки колонок
Таб1.ВывестиСекцию("Шапка");
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Таб.ПовторятьПриПечатиСтроки(14,15);
Таб.ВывестиСекцию("Шапка");
КолСтрПред = 1;
ТЗ.ВыбратьСтроки();
Таб1.ВывестиСекцию("Колонтитул"); //Таб1 на 1 строку длинней
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
Таб1.ВывестиСекцию("Строчка"); //Теперь на 2
Если Таб1.КоличествоСтраниц() > КолСтрПред Тогда
Таб.ВывестиСекцию("Колонтитул"); //На 1
Таб1.ВывестиСекцию("Строчка"); //Опять на 2
КолСтрПред = КолСтрПред+1;
КонецЕсли;
Таб.ВывестиСекцию("Строчка"); //Опять на 1
КонецЦикла;
Таб.ВывестиСекцию("Колонтитул");
Таб.ТолькоПросмотр(1);
Таб.Показать("");
КонецПроцедуры
Разумеется, секции таблицы Строчка и Колонтитул должны иметь одинаковую высоту. Кроме того, релизы платформы до 25 включительно НЕ поддерживают метод таблиц КоличествоСтраниц.
Примечание. Если в колонтитуле нужны только номера страниц и/или текст/шаблоны, то лучше пользоваться колонтитулами из свойств таблицы, задаваемых в конфигураторе - этого должно хватить.
Ну а теперь задача еще реальней. Как быть, ести места для колонтитула просто нет? Номер страницы требуется на полях последней строки?
Тогда так:
Процедура Напечатать()
Таб1 = СоздатьОбъект("Таблица");
Таб1.ИсходнаяТаблица("Таблица");
Таб1.ПовторятьПриПечатиСтроки(14,15); //Это заголовки колонок
Таб1.ВывестиСекцию("Шапка");
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Таб.ПовторятьПриПечатиСтроки(14,15);
Таб.ВывестиСекцию("Шапка");
КолСтрПред = 1;
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
Таб1.ВывестиСекцию("Строчка");
Если Таб1.КоличествоСтраниц() > КолСтрПред Тогда
Таб.ПрисоединитьСекцию("Строчка|Номер");
КолСтрПред = КолСтрПред+1;
КонецЕсли;
Таб.ВывестиСекцию("Строчка|Основная");
КонецЦикла;
Таб.ПрисоединитьСекцию(" Строчка|Номер ");
Таб.ТолькоПросмотр(1);
Таб.Показать("");
КонецПроцедуры
Сэкономили строчку на странице...