Что вы точно упустили, так это QueryFetchMode
X++:
QueryBuildDataSource qbds1, qbds2, qbds3, qbds4, qbds5;
Query query = new Query();
qbds1 = query.addDataSource(tableNum(InventJournalTrans));
qbds2 = qbds1.addDataSource(tableNum(InventDim));
qbds2.addLink(fieldNum(InventJournalTrans, InventDimId), fieldNum(InventDim, InventDimId));
qbds2.fetchMode(QueryFetchMode::One2One);
qbds3 = qbds2.addDataSource(tableNum(InventLocation));
qbds3.addLink(fieldNum(InventDim, InventLocationId), fieldNum(InventLocation, InventLocationId));
qbds3.addRange(fieldNum(InventLocation, InventLocationId)).value('?');
qbds3.fetchMode(QueryFetchMode::One2One);
qbds4 = qbds1.addDataSource(tableNum(InventDim));
qbds4.addLink(fieldNum(InventJournalTrans, ToInventDimId), fieldNum(InventDim, InventDimId));
qbds4.fetchMode(QueryFetchMode::One2One);
qbds5 = qbds4.addDataSource(tableNum(InventLocation));
qbds5.addLink(fieldNum(InventDim, InventLocationId), fieldNum(InventLocation, InventLocationId));
qbds5.addRange(fieldNum(InventLocation, InventLocationId)).value('?');
qbds5.fetchMode(QueryFetchMode::One2One);
info(query.dataSourceNo(1).toString());
Но я бы не советовал дальше еще расширять этот запрос, потому что после определенного числа источников и FetchMode не спасет.