Цитата:
Сообщение от
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 не затрагивая кода.