а какая у Вас версия аксапты?
просто у меня Ax 3.0 SP3, джобик:
X++:
Query query;
QueryBuildDataSource qbdsInventSum, qbdsInventTrans;
;
query = new Query();
qbdsInventSum = query.addDataSource(tableNum(InventSum));
qbdsInventSum.addSortIndex(indexnum(InventSum, DimIdIdx));
qbdsInventSum.indexIsHint(true);
qbdsInventSum.addRange(fieldNum(InventSum, PhysicalInvent)).value(QueryValue('!= 0'));
qbdsInventTrans = qbdsInventSum.addDataSource(tableNum(InventTrans));
qbdsInventTrans.addLink(fieldNum(InventTrans, InventDimId), fieldNum(InventSum, InventDimId));
qbdsInventTrans.addLink(fieldNum(InventTrans, ItemId), fieldNum(InventSum, ItemId));
qbdsInventTrans.addSortIndex(indexNum(InventTrans, DimIdIdx));
qbdsInventTrans.indexIsHint(true);
qbdsInventTrans.addRange(fieldNum(InventTrans, DatePhysical)).value(SysQuery::range(dateNull(), dateMax()));
qbdsInventTrans.joinMode(JoinMode::NoExistsJoin);
info(qbdsInventSum.toString());
собрал вот такой запрос:
Цитата:
SELECT INDEXISHINT * FROM InventSum USING INDEX DimIdIdx WHERE ((!PhysicalInvent= 0)) NOTEXISTS JOIN INDEXISHINT * FROM InventTrans USING INDEX DimIdIdx WHERE InventSum.InventDimId = InventTrans.inventDimId AND InventSum.ItemId = InventTrans.ItemId AND ((DatePhysical<=31.12.2153))
как видно подставилось то что нужно, NOTEXISTS