Показать сообщение отдельно
Старый 19.03.2007, 17:58   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
X++:
     Query q=new Query();   
     //while select sum(SalesQty) from SPLJLH
     QueryBuildDataSource ds = q.addDataSource(tableNum(SPLJLH));
;
        //group by ModifDate
     ds.OrderMode(OrderMode::GroupBy);
     ds.addSortField(fieldNum(SPLJLH, ModifDate));
     ds.addSelectionField(fieldNum(SPLJLH, SalesQty), SelectionField::Sum);
        //where SPLJLH.EmplId == it.value()
     ds.addRange(fieldNum(SPLJLH, EmplID)).value(queryValue(it.value()));
Категорически против такого варианта - нахлебался в русской функциональности.
Он правилен, но чертовски трудномодифицируемый и трудноапгрейдируемый.

Создайте Query в AOT с датасорсом, группировками и прочими параметрами. Можно мышкой и drag'n'drop'ом
В коде напишите две строчки как написал Delfins.

X++:
Query q=new Query(querystr(mySuperEmplQuery));  

// 2 строчки от Delfins
range = sysquery::findorcreaterange(q,...);
range.value(it.value());
Можете написать в одну строчку, если отлаживать не надо
X++:
sysquery::findorcreaterange(new Query(querystr(mySuperEmplQuery)),...).value(it.value());
//
Но только не надо генерить кучу кода, пожалуйста.

Max, давай советовать минимальное программирование?

PS Кроме того, подход с созданием Query в AOT позволяет разделить задачу оптимизации производительности между кодером и администратором. Администратор может исправить Query не затрагивая кода.
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: belugin (14).