Печать отчёта

Отзывов (2)FavoriteLoadingВ закладки

СКД формирует данные такого типа (блок)

Группировка

Детальная запись 1

Детальная запись 2

….

Детальная запись N

Итог

и Далее…

Если просто выводить на печать, то данные могут “разрываться”, а это плохо, нужно чтобы на странице этот один блок не разрывался, хотя таких блоков на странице может быть сколько угодно (1-3), вывожу программно, понимаю, что надо просто выводить гориз. раздел. страниц, но как мне отслеживать данные одного блока и проверять их влазят или нет, есть идеи??

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

2 Коммент.

  1. При реализации данной задачи пользовался следующим способом:
    1. При начале работы создал два табличных документа – основной и временный
    2. Переменную для фиксирования фактического количества старниц
    3. После вывода очередной строки блока проверяю основной табдок функцией КоличествоСтраниц() на то, больше ли она фактического количества страниц.
    4. Если больше – тогда Основной приравниваю тестовому, вывожу разрыв страницы и потом вывожу текущую строку, так же в тестовый нужно вывести разрыв страницы.
    5. В тестовый табдок текущую строку вывожу только после этой проверки;

    На месте я думаю разберетесь как и куда :)
    Если нет – могу привести фрагменты кода

  2. Сделал без скд, конечно работает не совсем уж быстро и способ не из оптимальных, но зато так как надо!

    //Код
    Пока ВыборкаАвтомобиль.Следующий() Цикл

    ОбластьАвтомобиль.Параметры.Заполнить(ВыборкаАвтомобиль);
    ОбластьАвтомобиль.Параметры[“ПериодОтчёта”] = ФОРМАТ(Дата,”ДФ=’ММММ гггг'”);
    ОбластьПодвалТаблицы.Параметры.Заполнить(ВыборкаАвтомобиль);

    // Массив областей карточки, для проверки вывода.
    Вывод = Новый Массив();
    Вывод.Добавить(ОбластьАвтомобиль);

    ВыборкаДетальныеЗаписи = ВыборкаАвтомобиль.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть(“Детали”);
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    Вывод.Добавить(ОбластьДетальныхЗаписей);
    КонецЦикла;

    Вывод.Добавить(ОбластьПодвалТаблицы);

    Если Не ТабДок.ПроверитьВывод(Вывод) Тогда
    ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;

    парам = 1;
    Для каждого Элемент Из Вывод Цикл
    Если парам=1 или парам=Вывод.Количество() Тогда
    ТабДок.Вывести(Элемент, ВыборкаАвтомобиль.Уровень());
    Иначе
    ТабДок.Вывести(Элемент, ВыборкаДетальныеЗаписи.Уровень());
    КонецЕсли;
    парам=парам+1;
    КонецЦикла;

    КонецЦикла;
    //Код

Трекбеки/Пинги

  1. gene - "http://en.visors.ru/?p=3936&lol= north@bwgxs3.jump">.... спс :!:...
  2. willard - :neutral:... спс за инфу :P...
  3. joseph - :cool:... сэнкс за инфу :twisted:...

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

RSSКомментарии в RSS

Авторизация

Логин:
Пароль:
Регистрация

Архивы

Закладки

  • Your favorites will be here.