16.07.2019, 10:01 | #1 |
Участник
|
ax 2009. Вопрос. При открытии формы фильтр AND + OR
Вначале при открытии формы надо было сделать фильтр по нескольким условиям с И. Сделал так:
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'); } Сделал так, но не работает: 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) )); |
|
02.08.2019, 14:51 | #2 |
Участник
|
Попробуй написать :
X++: qbr.value(strFmt('(((%1.Status < %2) && (%3) && (%1.IncludeIn == "%4")) || (%1.Checked == "%5"))', qbds.name(), queryValue('11'), getTypeOfLineSalesRange(qbds.name(), typeOfLineSales), queryValue(NoYes::Yes), queryValue(NoYes::Yes) )); |
|