Каталог решений - Ликбез 7.7: нумерация страниц отчета

Ликбез 7.7: нумерация страниц отчета

Ликбез 7.7: нумерация страниц отчета

В наличии

"Колонтитулы" без колонтитулов.

Категория:

Описание

Предположим, нам требуется распечатать ОЧЕНЬ длинную таблицу значений.  На каждой странице сверху нужны заголовки колонок, а снизу — некие колонтитулы, содержащие, например, номера страниц. Задача распространенная, но где взять эти номера?

Можно, конечно, применить Формекс и считать высоту строк. А можно и штатными средствами. Примерно, так:

 

Процедура Напечатать()
       Таб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);
       Таб.Показать("");
КонецПроцедуры

 

Сэкономили строчку на странице…

has been added to your cart:
Оформление заказа