|
21.10.2010, 18:45 | #1 |
Участник
|
Почему в отчетах не делают progress bar-ов?
В AOT-е только 3 стандартных отчета, использующих progress bar(ax2009). Почему в отчетах не делают progress bar-ов? Предполагается, что вся логика выполняется в классе, где собственно и должен быть градусник, а отчет сам по себе быстро выводит данные, поэтому progress тут не нужен?(хотя, это далеко не всегда так)
Последний раз редактировалось IKA; 21.10.2010 в 18:59. |
|
21.10.2010, 20:07 | #2 |
Banned
|
Потому что для ускорения (?) ядро AX не делает запроса на число записей перед тем, как начать выводить их на экран.
|
|
21.10.2010, 21:21 | #3 |
Участник
|
Если логика в классах, то все немного сложнее чем озвучено выше.
|
|
22.10.2010, 13:17 | #4 |
Участник
|
Цитата:
нет не только прогресс-бара, нет и общего числа страниц. (в отчете нельзя вывести "2 страница, всего 32"). отчеты - сложная штука. и запросы внутри могут быть очень сложными и вариативными. запрос общего числа страниц (записей) перед тем, как выводить - может привести к серьезным тормозам. Если обратите внимание, то отчет начинает показываться пользователю сразу как построена страница. не дожидаясь завершения. сравните с той же 1С, где перед показом отчета пользователю, платформа что-то делает внутри себя... и только после завершения генерации показывает страницы отчета. |
|
22.10.2010, 13:42 | #5 |
Участник
|
Справедливости ради. Для отображения количества страниц можно использовать встроенный display-метод pagesTotal(). Оговорюсь только, что посчитать количество страниц заранее (до отображения отчёта на экране) с помощью него действительно нельзя. Видимо, также для повышения производительности.
|
|
22.10.2010, 14:16 | #6 |
Модератор
|
|
|
22.10.2010, 14:25 | #7 |
MCTS
|
Цитата:
Например отчет CustTransList (Customer transactions) в AX2009 строится секунд 30 на демо данных пока не отобразится на экране, зато отобразившись он сразу позволяет перейти на последнюю 195-ю страницу. Последний раз редактировалось PavelX; 22.10.2010 в 14:28. Причина: добавил пример |
|
|
За это сообщение автора поблагодарили: mazzy (10). |
22.10.2010, 14:27 | #8 |
Участник
|
Цитата:
испортили Аксапточку... тогда Progress Bar нужен. |
|
22.10.2010, 16:06 | #9 |
Гость
|
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
22.10.2010, 13:07 | #10 |
MCP
|
Цитата:
Сообщение от IKA
В AOT-е только 3 стандартных отчета, использующих progress bar(ax2009). Почему в отчетах не делают progress bar-ов? Предполагается, что вся логика выполняется в классе, где собственно и должен быть градусник, а отчет сам по себе быстро выводит данные, поэтому progress тут не нужен?(хотя, это далеко не всегда так)
X++: public abstract class RunBaseReport extends RunBaseBatch { SysReportRun reportRun; SysQueryRun queryRun; Args callerArgs; ... } X++: public abstract class RunBaseBatch extends RunBase implements Batchable X++: public abstract class Runbase extends Object implements SysSaveable, SysRunable { boolean getLastCalled; boolean inGetSaveLast; boolean inCheckClose; boolean inPrompt; boolean isSwappedFromServer; boolean dialogCanceled; boolean inPromptUnpack; RunBaseDialogModify dialogModify; RunbaseProgress progress; SysSign sysSign; #macrolib.AviFiles #if.never #define.CurrentVersion(1) #define.version1(1) #localmacro.CurrentList #endmacro #endif } |
|
22.10.2010, 13:16 | #11 |
Модератор
|
Дело в архитектуре, Вы правы. Пусть АОС шуршит с данными, а на клиента передаются результаты. Не думаю, что стоит добавлять синхронизацию этих процессов, чтобы побыстрее у АОСа запросить "ну что там, скоро еще"?
Хотя, если отчет на клиенте, это приемлемо... Не сильно затормозит создание отчета. С Уважением, Георгий |
|
|
За это сообщение автора поблагодарили: kornix (1). |
22.10.2010, 15:12 | #12 |
Модератор
|
Progress Bug...
|
|