Здравствуйте.
Teheran писал(а):Верны ли мои ожидания в отношении рендеринга отчета?
Я регистрирую БО-последовательность с большим количеством элементов (сотни тысяч элементов). Мой БО реализует интерфейсы ITypedList и IEnumerable<object>. Я ожидаю того, что если я перед началом рендеринга зарегистрирую реальную последовательность, то она будет прочитана ровно один раз во время рендеринга отчета. (Cache All Data = TRUE; Number Of Pass = SINGLE; Report Cache Mode = ON)
1. Если вы делаете RegData() - ваш бизнес-объект будет полностью преобразован в dataset в памяти, поэтому при построении отчета обращений к исходному бизнес-объекту уже не будет.
Если делаете RegBusinessObject() - запоминается только ссылка на бизнес-объект, обращение к данным происходит по необходимости.
2. Cache All Data = TRUE; - влияет на data sources (все таблицы создаются в одном dataset), не влияет на бизнес-объекты.
Number Of Pass = SINGLE; - каждый проход - полная обработка данных.
Report Cache Mode = ON; - никак не влияет на обращение к данным.
3. Применение сортировки датабэнда - дополнительный проход по всем данным текущего источника данных, и создаётся временный массив для хранения отсортированных строк данных.
Применение группировки - это дополнительная сортировка по выражению группировки, плюс проверки границ групп.
Master-detail отчет - сколько master-записей - столько проходов будет по источнику данных detail-бэнда.
Агрегатные функции Totals - дополнительные проходы по данным.
Т.е. один проход по данным гарантирован только в случае простого списка без сортировок/группировок и всяких дополнительных условий.
Спасибо.