![]() |
#3 |
Banned
|
class VendAccountQueryBuilder
VendTable что per company join c DirPartyTable что cross-company X++: public void initialize() { DataAreaId company; VendAccount vendAccount; DirPartyName vendName; Query vendAccountQuery; QueryBuildDataSource vendAccountQbds; QueryBuildDataSource dirPartyTableQbds; company = this.getArgs().parmCompany(); vendAccount = this.getArgs().parmVendAccount(); vendName = this.getArgs().parmVendName(); vendAccountQuery = new query(); if(!company) { //Company cannot be empty throw AifFault::Fault("@SYS4007574", #NoSuchCompany); } vendAccountQuery.allowCrossCompany(true); vendAccountQuery.addCompanyRange(SysQuery::value(company)); vendAccountQbds = vendAccountQuery.addDataSource(tableNum(VendTable)); vendAccountQbds.orderMode(OrderMode::OrderBy); vendAccountQbds.addSelectionField(fieldNum(VendTable, AccountNum)); vendAccountQbds.addSortField(fieldNum(VendTable, AccountNum)); if (vendAccount) { vendAccountQbds.addRange(fieldNum(VendTable,AccountNum)).value(vendAccount); } dirPartyTableQbds = vendAccountQbds.addDataSource(tableNum(DirPartyTable)); dirPartyTableQbds.relations(true); dirPartyTableQbds.addSelectionField(fieldNum(DirPartyTable, Name)); if (vendName) { dirPartyTableQbds.addRange(fieldNum(DirPartyTable, Name)).value(vendName); } query = vendAccountQuery; queryRun = new QueryRun(query); } |
|