Вначале при открытии формы надо было сделать фильтр по нескольким условиям с И. Сделал так:
X++:
void init()
{;
super();
qbds = this.query().dataSourceTable(tablenum(SalesQuotationLine));
findOrCreateRange_W(qbds, fieldnum(SalesQuotationLine,Status)).value('<11');
findOrCreateRange_W(qbds, fieldnum(SalesQuotationLine,IncludeIn)).value(SysQuery::value(1));
findOrCreateRange_W(qbds, fieldnum(SalesQuotationLine,TypeOfLineSales)).value('05, 10, 15, 20, 25, 30');
}
Теперь надо добавить ещё одно условие, но через ИЛИ (то что вверху или SalesQuotationLine.Checked == Yes)
Сделал так, но не работает:
X++:
str getTypeOfLineSalesRange(str _tableN, container _con)
{
int cnt, conLength;
str ret;
;
conLength = conLen(_con);
for (cnt = 1; cnt <= conLength; cnt++)
{
if(ret != "")
{
ret += " || ";
}
ret += strFmt("(%1.TypeOfLineSales == %2)", _tableN, conPeek(_con, cnt));
}
return ret;
}
;
typeOfLineSales = [05, 10, 15, 20, 25, 30];
qbr = qbds.addRange(fieldNum(SalesQuotationLine, DataAreaId));
qbr.value(strFmt('(((%1.Status < %2) && (%3) && (%1.IncludeIn == %4)) || (%1.Checked == %5))',
qbds.name(),
queryValue('11'),
getTypeOfLineSalesRange(qbds.name(), typeOfLineSales),
queryValue(1),
queryValue(1)
));
Как правильно?