Перейти к содержанию

Советы по оптимизации отчетов

Материал из Химсофт Вики
Версия от 02:47, 20 февраля 2026; Sidminik (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Большие и/или сложные отчеты (100+ страниц или более 10 минут генерации) требуют оптимизации состава и настроек перед использованием на практике, иначе, отчет не сделается за приемлемое время.

Для этого требуется комплексно оценить имеющиеся ресурсы и внести оптимизирующие правки.

Оптимизация памяти

Компонент Проблема Решение
Изображения Большое потребление памяти при экспорте в RTF/TIFF, особенно при повторении Ограничьте большие изображения в форматах RTF/TIFF

Примечание: PDF/Excel/HTML хранят дубликаты один раз (лучше для памяти, медленнее обработка)

Подотчеты Каждый экземпляр потребляет память (умножается в повторяющихся секциях) Минимизируйте подотчеты в секциях Detail

Лучшая практика: Создавайте экземпляры в событии ReportStart (один раз) вместо события Format (для каждого экземпляра)

CacheToDisk Большие отчеты потребляют чрезмерную память
  • Установите Document.CacheToDisk = True

Важно: Используйте свойство CacheToDiskLocation для физического пути (избегайте ограничений размера IsolatedStorage)

  • Параметр влияет только на экспорт в PDF
Колонтитулы Подсчет страниц/итоги в заголовках задерживают рендеринг и снижают эффективность CacheToDisk
  • Избегайте итогов в секциях заголовков
  • Групповые итоги в заголовках групп = минимальное влияние
  • Итоги отчета в заголовке отчета = значительное влияние

Оптимизация скорости

Фактор Влияние Рекомендация
Изображения Обнаружение дубликатов замедляет обработку (даже при экономии памяти) Минимизируйте повторяющиеся изображения на страницах
Колонтитулы Заголовки с итогами/подсчетом страниц задерживают рендеринг По возможности размещайте итоги в нижних колонтитулах
CacheToDisk Значительно увеличивает время загрузки
  • Используйте только для очень больших отчетов

Установите в False для отчетов <100 страниц (может увеличить использование памяти)

SQL-запросы со звездой «SELECT *…» возвращает ненужные данные Используйте конкретные имена столбцов; консультируйтесь с администратором БД по оптимизации запросов
SQL-запросы сложной формы Замедляется работа с БД Консультируйтесь с администратором БД

Оптимизация печати

Элемент Соображение Действие
Виртуальный принтер Различия в окружениях (веб-приложения) Используйте виртуальный принтер, когда окружение генерации ≠ окружению просмотра/печати
Элементы линий Не сплошной LineStyle увеличивает размер спула
  • Сохраняйте LineStyle = Solid (по умолчанию)
  • Избегайте Dash, Dot и т.д. для границ