Композитный отчёт с большим кол-вом листов

отредактировано 21:46 Раздел: FastReport 4.0
Здравствуйте!

Ситуация следующая - в конце месяца пользователям надо печатать пачку разнотипных платёжных документов по всем контрагентам.
Есть реестр документов, где пользователь выбирает нужные или сразу все записи для печати.
Документы разного типа- счета-фактуры, платёжные требования и т.д.
Да ещё и с индивидуальными настройками по количеству экземпляров (1-2-3).

И вот это всё юзеры хотят распечатать "одним кликом".

Первое, что пришло в голову - сделать композитный отчёт.
Но 100, 200, 300 листов формируются ещё приемлемое время, а дальше начинают тормоза, и вставка каждого документа происходит всё большее время. При объёме в 500 документов и в среднем по 2 экземпляра на документ получается около 1000 листов.
Дождаться, пока сформируется такой отчёт мне не удалось :)

Наверняка многим приходилось сталкиваться с такой ситуацией, кто-как боролся с ней?
Что ещё можно придумать?


Комментарии

  • отредактировано 21:46
    К сожалению, оптимизировать это нельзя, это связано с внутренней архитектурой FR.
    При формировании отчета из одного шаблона, сам шаблон используется как словарь для объектов построенного отчета, что уменьшает время доступа к объектам в XML.
    При формировании композиторного отчета, в словарь попадает только одни из отчетов, остальные записываются как есть , т.е. на каждый объект будет записываться все его св-ва(в случае со словарем объект хранит только, ссылку на исходный объект в словаре и некоторые св-ва) .
  • gpigpi
    отредактировано 21:46
    Попробуйте формировать отчёт в одном экземпляре TfrxReport, а сформированные страницы добавлять во второй TfrxReport
  • отредактировано 21:46
    gpi написал: »
    Попробуйте формировать отчёт в одном экземпляре TfrxReport, а сформированные страницы добавлять во второй TfrxReport
    Подскажите, как перебросить сформированные страницы из одного TfrxReport в другой?
  • gpigpi
    отредактировано 21:46
    frxReport1.PreviewPages.AddFrom(frxReport2);
  • отредактировано November 2008
    gpi написал: »
    frxReport1.PreviewPages.AddFrom(frxReport2);
    Спасибо. Стало значительно быстрее! 1500 страниц "прожевало" в лёгкую!

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

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.