Постраничный вывод в табличный документ (1cv8)
Источник: http://its.1c.ru/db/metod81#content:2155585875:1
Постраничный вывод в табличный документ
Для некоторых отчетов необходимо, чтобы в конце страницы содержалась некоторая область, которая бы сообщала информацию о содержимом страницы. Это может быть, например, информация о сумме по странице, количестве строк на странице и т.п. Во встроенном языке 1С:Предприятия предусмотрены специальные средства для разбиения табличного документа на страницы. В данном разделе рассказывается, каким образом можно организовать постраничный вывод при выводе информации в табличный документ.
Метод табличного документа ПроверитьВывод()
Объект ТабличныйДокумент имеет метод ПроверитьВывод(), предназначенный для того, чтобы проверить, поместится ли список областей на текущую страницу. В случае если метод вернет значение Истина, вывод областей, переданных в метод, не приведет к созданию новой страницы, иначе, для того, чтобы вывести области, в табличном документе будет создана новая страница. Данный метод работает с учетом настроек печати документа, у которого вызывается метод.
Рассмотрим пример. Пусть нам необходимо создать отчет "Платежная ведомость". Требуется, чтобы на первой странице был заголовок, отображающий информацию о ведомости в целом, на остальных страницах - заголовок, содержащий только шапку таблицы ведомости. В подвалах страницы необходимо иметь информацию о сумме по странице. В подвале последней страницы необходимо иметь итоговую информацию по всей ведомости.
Для того чтобы реализовать подобный отчет нам потребуется использовать метод ПроверитьВывод(). Пример алгоритма отчета будет выглядеть так:
- выводим в результирующий табличный документ область - заголовок первой страницы;
- для каждой строки из ведомости:
- проверяем, вмещается ли на текущую страницу область со строкой ведомости и область итога по странице;
- если области помещаются на странице - выводим строку области;
- иначе - выводим подвал страницы, выводим горизонтальный разделитель страницы, выводим шапку страницы, выводим строку ведомости;
- выводим подвал отчета.
Ниже приведен пример того, как подобный алгоритм может быть реализован на встроенном языке 1С:Предприятия 8.0:
СтрокаСПодвалом = Новый Массив; // создадим массив для проверки вывода
СтрокаСПодвалом.Добавить(ОбластьДетальныхЗаписей);
СтрокаСПодвалом.Добавить(ПодвалСтраницы);
ИтогПоСтранице = 0;
ТабДок.Вывести(ОбластьЗаголовок); // выведем заголовок отчета
ТабДок.Вывести(ОбластьШапкаТаблицы); // выведем шапку страницы
Пока ВыборкаДетали.Следующий() Цикл // по всем строкам, которые необходимо вывести
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали); // заполним параметры области табличного докуента
Если Не ТабДок.ПроверитьВывод(СтрокаСПодвалом) Тогда
// Строка с итогом не вмещается.
ПодвалСтраницы.Параметры.Сумма = ИтогПоСтранице; // установим итог по странице
ТабДок.Вывести(ПодвалСтраницы); // выведем итог по странице
ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); // начнем новую страницу
ТабДок.Вывести(ОбластьШапкаТаблицы); // выведем шапку страницы
ИтогПоСтранице = 0; // сбросим текущую сумму по странице
КонецЕсли;
ТабДок.Вывести(ОбластьДетальныхЗаписей); // выведем очередную строку
ИтогПоСтранице = ИтогПоСтранице + ВыборкаДетали.Сумма; // увеличим итог по странице
КонецЦикла;
ПодвалСтраницы.Параметры.Сумма = ИтогПоСтранице; // установим итог по странице
ТабДок.Вывести(ПодвалСтраницы); // выведем итог по странице
ТабДок.Вывести(ОбластьПодвал); // выведем подвал отчета
Метод табличного документа ПроверитьПрисоединение()
Метод табличного документа ПроверитьПрисоединение() работает аналогично методу ПроверитьВывод(), с тем отличием, что данный метод проверяет, изменится ли количество страниц по горизонтали при выводе в отчет областей при помощи метода Присоединить().