может быть как то так:
X++:
static void Job2(Args _args)
{
Query query;
QueryRun queryRun;
QueryBuildDataSource qbdsSalesTable;
QueryBuildDataSource qbdsCustTable;
QueryBuildDataSource qbdsSalesLine;
QueryBuildRange queryBuildRange;
QueryBuildLink queryBuildLink, queryBuildLink1;
salestable salestable;
;
query = new Query();
qbdsSalesTable = query.addDataSource(tablenum(SalesTable));
queryBuildRange = qbdsSalesTable.addRange(fieldnum(SalesTable, SalesStatus));
queryBuildRange.value( queryvalue(salesstatus::Backorder) );
qbdsCustTable = qbdsSalesTable.addDataSource(tablenum(CustTable));
qbdsSalesLine = qbdsSalesTable.addDataSource(tablenum(SalesLine));
//qbdsCustTable.joinMode( 2 );
//qbdsSalesLine.joinMode( 2 );
qbdsSalesLine.fetchMode( QueryFetchMode::One2One );
qbdsCustTable.fetchMode( QueryFetchMode::One2One );
queryBuildLink = qbdsSalesLine.addLink(fieldnum(SalesTable, salesid),fieldnum(salesline, salesid));
queryBuildLink1 = qbdsCustTable.addLink(fieldnum(SalesTable, custaccount),fieldnum(custtable, accountnum));
queryRun = new QueryRun(query);
while (queryRun.next())
{
salestable = queryRun.get(tablenum(Salestable));
info (strfmt("salesid %1 - %2", salestable.salesid, salestable.RecId));
}
}