Программирование 1с программист

30.11.2010

ПроверитьВывод

Filed under: Макеты — Метки: , , — Мозг @ 13:18

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

Рассмотрим конкретный пример: «Необходимо при выводе данных на печать, при условии что печать занимает более чем одну страницу, на каждой странице в «подвале» выводить определенный макет (служебные данные, подпись, даты и т.д.) »

Для начала рисуем макет:

  • В макете есть шапка
  • Строка вывода (в строках выводим данные отчета)
  • Подвал (выводится один раз или несколько при условии что на печать идет более одной страницы)

 макет печати конфигуратора

Условности

ТаблицаДанных – таблица значений содержащая данные к выводу на печать
ЗаполнитьПараметры() – процедура заполняющая параметры области вывода конкретной области

Код процедуры вывода

Процедура Печать()
 ДокументПечати = Новый ТабличныйДокумент;
// говорим программе что у нас нет отступов
ДокументПечати.ПолеСверху = 0;
ДокументПечати.ПолеСлева   = 0;
ДокументПечати.ПолеСнизу   = 0;
ДокументПечати.ПолеСправа = 0;

ДокументПечати.ОтображатьГруппировки = Ложь;
ДокументПечати.ОтображатьЗаголовки = Ложь;
ДокументПечати.ОтображатьСетку = Ложь;

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

ЗаполнитьПараметры
(ОбластьШапки);
МассивОбластей.Добавить(ОбластьШапки);
// подвал я добавляю сразу чтобы при расчете возможности вывода учитывался и он
МассивОбластей.Добавить(ОбластьПодвала);
Для каждого СтрокаТЗ из ТаблицаДанных Цикл
// заполняем параметры вывода
ЗаполнитьПараметры(ОбластьСтроки);
// Проверяем вывод, умещается ли на одном листе
Если НЕ ДокументПечати.ПроверитьВывод(МассивОбластей) Тогда
// Если вывод невозможен то выводим разделитель страниц и подвал
ДокументПечати.Вывести(ОбластьПодвала);
// разделяем горизонтально страницу
ДокументПечати.ВывестиГоризонтальныйРазделительСтраниц();
// выводим строку
ДокументПечати.Вывести(ОбластьСтроки);
КонецЕсли;
// очищаем массив областей проверки и добавляем в него подвал
МассивОбластей.Очистить();
МассивОбластей.Добавить(ОбластьПодвала);
КонецЦикла;
// И на последок выводи подвал
ДокументПечати.Вывести(ОбластьПодвала);
ДокументПечати.Показать();

КонецПроцедуры

Код процедуры думаю прост для понимания, остановлюсь на некоторых моментах

  • Вначале я произвожу подготовку вывода данных на печать и получаю области макета.
  • В цикле обхода по данным происходит вывод строк и проверка на умещаемость данных на странице
     

Каждый раз после проверки того умещаются ли области из массива областей в табличной документе я очищаю массив. Делаю это для того чтобы в массиве не оказалось «лишних» областей. Т.е. тех областей по которым уже произведен вывод, т.е. их уже проверять на возможность вывода не нужно. И конечно же после каждой очистки массива я добавляю в него «Подвал», дабы зарезервировать место под подвал.

1 комментарий »

  1. Подскажите, как применить данный массив областей для проверки вывода на печать,
    если у меня есть 2 области ОбластьШапки и ОбластьСтроки, данные в которые подставляются на основании
    обхода цикла Выборка.Следующий() из справочника контрагенты.
    я не могу понять, что в моем случае входит в таблицу данных

    Есть процедура ЗаполнитьПараметры(ОбластьШапки, ОбластьСтроки)

    Комментарий by kulkrise — 01.11.2013 @ 14:02

RSS-лента комментариев к этой записи. TrackBack URL

Оставить комментарий

Для отправки комментария вы должны авторизоваться.

Powered by WordPress