X++:
q = this.queryRun().query();
qbd = q.dataSourceTable(tableNum(CustInvoiceTrans));
qbds = qbd.addDataSource(tableNum(InventPackagingUnit));
qbds.joinMode(JoinMode::InnerJoin);
qbds.addLink(fieldnum(CustInvoiceTrans, ItemId), fieldnum(InventPackagingUnit, ItemRelation));
qbds.addSelectionField(fieldNum(CustInvoiceTrans, Qty), SelectionField::Sum);
qbds.addRange(fieldNum(InventPackagingUnit, ItemCode)).value(Enum2Str(TableGroupAll::Table));
qbds1 = qbds.addDataSource(tableNum(InventPackagingUnitMaterial));
qbds1.joinMode(JoinMode::InnerJoin);
qbds1.addLink(fieldnum(InventPackagingUnit, RecId), fieldnum(InventPackagingUnitMaterial, PackingUnitRecId));
qbds2 = qbds1.addDataSource(tableNum(InventPackagingMaterialCode));
qbds2.addSelectionField(fieldNum(InventPackagingMaterialCode,PackMaterialCode));
qbds2.addLink(fieldnum(InventPackagingUnitMaterial, PackMaterialCode), fieldnum(InventPackagingMaterialCode, PackMaterialCode));
qbds2.joinMode(JoinMode::ExistsJoin);
qbds2.fetchmode(queryfetchmode::one2one);
qbds2.orderMode(OrderMode::GroupBy);
qbds2.addSortField(fieldNum(InventPackagingMaterialCode, PackMaterialCode));
Вполне понимаю нежелание тестировать запрос. Я этим займусь. Кстати, GroupBy у меня в запросе уже есть. Но итог прежний, независимо от вида Join