Для некоторых отчетов необходимо, чтобы в конце страницы содержалась некоторая область, которая бы сообщала информацию о содержимом страницы. Это может быть, например, информация о сумме по странице, количестве строк на странице и т.п. Во встроенном языке 1С:Предприятия предусмотрены специальные средства для разбиения табличного документа на страницы. В данном разделе рассказывается, каким образом можно организовать постраничный вывод при выводе информации в табличный документ.
Метод табличного документа ПроверитьВывод()
Объект ТабличныйДокумент имеет метод ПроверитьВывод() , предназначенный для того, чтобы проверить, поместится ли список областей на текущую страницу. В случае если метод вернет значение Истина , вывод областей, переданных в метод, не приведет к созданию новой страницы, иначе, для того, чтобы вывести области, в табличном документе будет создана новая страница. Данный метод работает с учетом настроек печати документа, у которого вызывается метод.
Рассмотрим пример. Пусть нам необходимо создать отчет «Платежная ведомость». Требуется, чтобы на первой странице был заголовок, отображающий информацию о ведомости в целом, на остальных страницах — заголовок, содержащий только шапку таблицы ведомости. В подвалах страницы необходимо иметь информацию о сумме по странице. В подвале последней страницы необходимо иметь итоговую информацию по всей ведомости.
Для того чтобы реализовать подобный отчет нам потребуется использовать метод ПроверитьВывод() . Пример алгоритма отчета будет выглядеть так:
1. выводим в результирующий табличный документ область — заголовок первой страницы;
2. для каждой строки из ведомости:
2.1. проверяем, вмещается ли на текущую страницу область со строкой ведомости и область итога по странице;
2.2. если области помещаются на странице — выводим строку области;
2.3. иначе — выводим подвал страницы, выводим горизонтальный разделитель страницы, выводим шапку страницы, выводим строку ведомости;
3. выводим подвал отчета.
Ниже приведен пример того, как подобный алгоритм может быть реализован на встроенном языке 1С:Предприятия 8.0:
Метод табличного документа ПроверитьПрисоединение()
Метод табличного документа ПроверитьПрисоединение() работает аналогично методу ПроверитьВывод() , с тем отличием, что данный метод проверяет, изменится ли количество страниц по горизонтали при выводе в отчет областей при помощи метода Присоединить() .
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
Работа с табличным документом в языке 1С 8.3, 8.2 (в примерах)
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю). |
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Допустим, мы делаем внешнюю печатную форму для документа, в котором содержится табличная часть.
В табличной части две колонки: «Номенклатура»и «Количество». Позиций номенклатуры в табличной части может быть довольно много, поэтому при печати таблица растянется на несколько страниц. Нам нужно сделать так, чтобы на всех страницах к таблице добавлялась шапка с именами колонок.
Для выполнения задачи воспользуемся методом табличного документа ПроверитьВывод ( ) .
Метод проверяет, умещаются ли переданные табличные документы на страницу при печати. Параметр может иметь тип «Массив» или «Табличный документ». В параметре передаётся массив из проверяемых таблиц или табличный документ.
Возвращаемое значение метода: тип: Булево. Если умещаются – Истина, в противном случае – Ложь.
Итак, у нас есть макет с областями:
- ШапкаДокумента
- ШапкаТаблицыНоменклатура
- СтрокаТаблицыНоменклатура
- ПодвалДокумента
В модуле печатной формы находится процедура ЗаполнитьТабличныйДокумент ( ) . Назначение процедуры понятно из названия. У процедуры есть параметр ДанныеДляПечати , в котором передаётся результат запроса с данными печатаемого документа. Строки таблицы «Номенклатура» в табличном документе заполняются при обходе выборки из результата запроса.
При добавлении каждой новой строки в таблицу мы должны выяснить, помещается ли табличный документ на страницу. Для этого добавим области макета «ШапкаТаблицыНоменклатура» и «СтрокаТаблицыНоменклатура» в массив, который будем проверять с помощью метода ПроверитьВывод ( ) , и организуем добавление шапки таблицы в нужных нам местах.
В результате получаем шапку таблицы на каждой из печатаемых страниц, гле есть табличная часть «Номенклатура».