Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Постраничный вывод в табличный документ          
Batchir Подменю пользователя
сообщение 09.02.09, 17:10
Сообщение #1

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Для некоторых отчетов необходимо, чтобы в конце страницы содержалась некоторая область, которая бы сообщала информацию о содержимом страницы. Это может быть, например, информация о сумме по странице, количестве строк на странице и т.п. Во встроенном языке 1С:Предприятия предусмотрены специальные средства для разбиения табличного документа на страницы. В данном разделе рассказывается, каким образом можно организовать постраничный вывод при выводе информации в табличный документ.

Метод табличного документа ПроверитьВывод()

Объект ТабличныйДокумент имеет метод ПроверитьВывод(), предназначенный для того, чтобы проверить, поместится ли список областей на текущую страницу. В случае если метод вернет значение Истина, вывод областей, переданных в метод, не приведет к созданию новой страницы, иначе, для того, чтобы вывести области, в табличном документе будет создана новая страница. Данный метод работает с учетом настроек печати документа, у которого вызывается метод. 

Рассмотрим пример. Пусть нам необходимо создать отчет "Платежная ведомость". Требуется, чтобы на первой странице был заголовок, отображающий информацию о ведомости в целом, на остальных страницах - заголовок, содержащий только шапку таблицы ведомости. В подвалах страницы необходимо иметь информацию о сумме по странице. В подвале последней страницы необходимо иметь итоговую информацию по всей ведомости.

Для того чтобы реализовать подобный отчет нам потребуется использовать метод ПроверитьВывод(). Пример алгоритма отчета будет выглядеть так:

1. выводим в результирующий табличный документ область - заголовок первой страницы;
2. для каждой строки из ведомости:

2.1. проверяем, вмещается ли на текущую страницу область со строкой ведомости и область итога по странице;
2.2. если области помещаются на странице - выводим строку области;
2.3. иначе - выводим подвал страницы, выводим горизонтальный разделитель страницы, выводим шапку страницы, выводим строку ведомости;
3. выводим подвал отчета. 

Ниже приведен пример того, как подобный алгоритм может быть реализован на встроенном языке 1С:Предприятия 8:




СтрокаСПодвалом = Новый Массив; // создадим массив для проверки вывода 
СтрокаСПодвалом.Добавить(ОбластьДетальныхЗаписей); 
СтрокаСПодвалом.Добавить(ПодвалСтраницы); 

ИтогПоСтранице = 0;

ТабДок.Вывести(ОбластьЗаголовок); // выведем заголовок отчета 
ТабДок.Вывести(ОбластьШапкаТаблицы); // выведем шапку страницы 

Пока ВыборкаДетали.Следующий() Цикл // по всем строкам, которые необходимо вывести 

  ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали); // заполним параметры области табличного докуента 

  Если Не ТабДок.ПроверитьВывод(СтрокаСПодвалом) Тогда 

  // Строка с итогом не вмещается. 
  ПодвалСтраницы.Параметры.Сумма = ИтогПоСтранице; // установим итог по странице 
  ТабДок.Вывести(ПодвалСтраницы); // выведем итог по странице 
  ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); // начнем новую страницу 
  ТабДок.Вывести(ОбластьШапкаТаблицы); // выведем шапку страницы 
  ИтогПоСтранице = 0; // сбросим текущую сумму по странице 

  КонецЕсли; 

  ТабДок.Вывести(ОбластьДетальныхЗаписей); // выведем очередную строку 

  ИтогПоСтранице = ИтогПоСтранице + ВыборкаДетали.Сумма; // увеличим итог по странице 

КонецЦикла; 

ПодвалСтраницы.Параметры.Сумма = ИтогПоСтранице; // установим итог по странице 
ТабДок.Вывести(ПодвалСтраницы); // выведем итог по странице 

ТабДок.Вывести(ОбластьПодвал); // выведем подвал отчета



Метод табличного документа ПроверитьПрисоединение()


Метод табличного документа ПроверитьПрисоединение() работает аналогично методу ПроверитьВывод(), с тем отличием, что данный метод проверяет, изменится ли количество страниц по горизонтали при выводе в отчет областей при помощи метода Присоединить(). 

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 24.04.24, 18:24
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!