Вопрос к
belugin
А не пополнить ли класс
SYS_ExpressionQueryBuilder методом formula(), позволяющим вставлять арифметические выражения в запрос
X++:
SYS_ExpressionDataSourceBuilder formula(str _formula)
{
;
dataSource.addRange( fieldname2id(dataSource.table(), "RecId") ).value('('+_formula+'))');
return this;
}
а к нему ещё и макрос SYS_ExpressionQueryBuilder
X++:
// Created by GRR on 07.02.2008 for SYS_ExpressionQueryBuilder
#localMacro.const
strFmt('%1 * RecId/RecId')
#endmacro
Данный макрос, кроме всего, будет ещё и полезен любителям сравнений на ноль и на прочие константы
арифметические операции в условие Where
Например
X++:
#macrolib.SYS_ExpressionQueryBuilder
;
new DEV_QueryBrowser().run(
SYS_ExpressionQueryBuilder::construct()
.dataSource(tableNum(Table1))
.formula(
strfmt("%1 + %2*10 - %3 - %4 == %5", //f2 + 10*f4 - f5 - 3 == 0
fieldStr(Table1, Field2),
fieldStr(Table1, Field4),
fieldStr(Table1, Field5),
#const(3),
#const(0))
)
.run()
.query());