Страница 2 из 2

Re: ITypedList как BusinessObject

Добавлено: 20 дек 2013, 15:09
Teheran
Здравствуйте.

Верны ли мои ожидания в отношении рендеринга отчета?
Я регистрирую БО-последовательность с большим количеством элементов (сотни тысяч элементов). Мой БО реализует интерфейсы ITypedList и IEnumerable<object>. Я ожидаю того, что если я перед началом рендеринга зарегистрирую реальную последовательность, то она будет прочитана ровно один раз во время рендеринга отчета. (Cache All Data = TRUE; Number Of Pass = SINGLE; Report Cache Mode = ON)
Спасибо.

Re: ITypedList как BusinessObject

Добавлено: 24 дек 2013, 13:33
Ivan
Здравствуйте.
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 - дополнительные проходы по данным.

Т.е. один проход по данным гарантирован только в случае простого списка без сортировок/группировок и всяких дополнительных условий.

Спасибо.

Re: ITypedList как BusinessObject

Добавлено: 25 дек 2013, 13:57
Teheran
Здравствуйте.

Спасибо за подробный ответ.

Re: ITypedList как BusinessObject

Добавлено: 26 дек 2013, 10:44
Aleksey
Здравствуйте,

Всегда рады помочь.

Re: ITypedList как BusinessObject

Добавлено: 28 дек 2013, 02:07
Ivan
Здравствуйте.
1. Схема БО зарегистрированного через RegBusinessObject распознана неверно. (Дизайнер отображает все поля как string.)
Тот же БО зарегистрированный через RegData распознаётся верно.
Типы полей распознаются верно.
Неправильно отображалась картинка с обозначением поля, и только в WPF версии продукта.
Патч будет включен в следующий предрелизный билд.
2. Содержимое БО зарегистрированного через RegBusinessObject отображается неверно.
Тот же бизнес-объект зарегистрированный через RegData отображается верно.
Проблема решена.
Патч будет включен в следующий предрелизный билд.

Спасибо.

Re: ITypedList как BusinessObject

Добавлено: 28 фев 2014, 15:22
Teheran
Здравствуйте.

Я регистрирую здоровенную последовательность в качестве бизнес-объекта, которая целиком не влезает в память. Строю отчет без группировок и сортировок. Экспортирую его в csv. Ожидаю от движка единственного прохода по данным.
Ivan писал(а):Т.е. один проход по данным гарантирован только в случае простого списка без сортировок/группировок и всяких дополнительных условий.
В аттаче тест проверяющий это утверждение. Этот тест регистрирут 9 проходов по данным. Подскажите пожалуйста, что мне нужно сделать, чтоб добиться единственного прохода по данным.

Спасибо.

Re: ITypedList как BusinessObject

Добавлено: 03 мар 2014, 12:42
HighAley
Здравствуйте.

К сожалению, на данный момент наш движок не оптимизирован с целью уменьшения количества проходов.
Спасибо. за то, что обратили на это внимание. Мы проведём работу в этом направлении.
О сроках пока ничего сказать не можем, но обязательно сообщим о результатах.

Спасибо.