AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.01.2004, 21:05   #25  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
посмотрите, поиграйтесь orderMode(0) или orderMode(1) для обеих таблиц.

Обратите внимание, какие параметры и когда передаются между клиентом и сервером. Обратите внимание, как соптимизировали трафик в 3.0.

Что мешало в старой версии? В старой версии жутко мешал qbds.sortClear().

В целом был взят метод Максима. Единственно, что было исправлено в его методе, ставим Count(RecID) не только в первой таблице, но и во всех остальных.

Что получаем?
countTotal всегда достаточно быстро возвращает ОБЩЕЕ количество ЗАПИСЕЙ.
countLoops всегда достаточно быстро возвращает количество ГРУППИРОВОК.

интересно поведение countLoops, когда начинаете играться с OrderMode в проверочном примере. (для того, чтобы получить полную картину, раскоментарьте метод info в CountPrim)

Так, если оба OrderMode = 0, то CountLoop = 4110. Правильно все количество записей, вычисляется на сервере, сама Аксапта получает управление только один раз.

Если OrderMode = 1,0, то CountLoop = 5. Это количетсво группировок по типам счетов. Все правильно. У меня есть проводки по всем типам счетов, кроме загловков, итогов.

Если OrderMode = 0,1, то CountLoop = 116. Это количество различных дат в таблице финансовых проводок.

Если же OrderMode = 1,1, то CountLoop = 272. Это количество дат внутри каждого типа счета.

Т.е. можно теперь можно делать следующее (причем progress bar будет работать правильно для любого запроса!)
Код:
SysOperationProgress progress = new SysOperationProgress();

progress.setTotal(SysQuery::countLoops(qr));
while( qr.next() ){
     // ...do somthing...
     progress.incCount();
}
Посмотрите, пожалуйста. Если замечаний нет, то положим в FAQ.

wamr, я правильно понял идею насчет loops?
__________________
полезное на axForum, github, vk, coub.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:15.