вот джобик для ясности (возможно будет понятней):
X++:
Query query = new Query();
QueryBuildDataSource qbds1, qbds2, qbds3;
;
qbds1 = query.addDataSource(tableNum(SalesTable));
qbds1.fetchMode(QueryFetchMode::One2One);
qbds2 = qbds1.addDataSource(tableNum(CustTable));
qbds2.fetchMode(QueryFetchMode::One2One);
qbds3 = qbds2.addDataSource(tableNum(SalesLine));
qbds3.fetchMode(QueryFetchMode::One2One);
qbds1.addRange(fieldNum(SalesTable, SalesId)).value(SysQuery::valueNotEmptyString());
qbds2.addRange(fieldNum(CustTable, AccountNum)).value(QueryValue('Тест'));
qbds3.addRange(fieldNum(SalesLine, ItemId)).value(QueryValue('Товар'));
info(qbds1.toString());