Есть класс InventSumOpenTransact\setValueQty()
В нём код
X++:
while select forcePlaceholders forceSelectOrder forceNestedLoop inventTrans
index hint OpenItemIdx
where inventTrans.itemId == itemId &&
inventTrans.valueOpen == InventTransOpen::Yes &&
inventTrans.statusReceipt >= StatusReceipt::None &&
inventTrans.statusReceipt <= StatusReceipt::Purchased &&
inventTrans.statusIssue >= StatusIssue::None &&
inventTrans.statusIssue <= StatusIssue::Sold &&
inventTrans.dateFinancial <= perDate
#inventDimJoin(inventTrans.inventDimId,inventDim,inventDimCriteria,inventDimParm,dimIdIdx)
{
this.add(inventTrans);
}
Он выдаёт мне не правильное значение inventTrans.CostAmountPosted
Если делаю убираю force*, правильное значение
X++:
while select inventTrans
index hint OpenItemIdx
where inventTrans.itemId == itemId &&
inventTrans.valueOpen == InventTransOpen::Yes &&
inventTrans.statusReceipt >= StatusReceipt::None &&
inventTrans.statusReceipt <= StatusReceipt::Purchased &&
inventTrans.statusIssue >= StatusIssue::None &&
inventTrans.statusIssue <= StatusIssue::Sold &&
inventTrans.dateFinancial <= perDate
#inventDimJoin(inventTrans.inventDimId,inventDim,inventDimCriteria,inventDimParm,dimIdIdx)
{
this.add(inventTrans);
}
Если делаю так, тоже правильно
X++:
inventTrans.disableCache(true);
while select forcePlaceholders forceSelectOrder forceNestedLoop inventTrans
index hint OpenItemIdx
where inventTrans.itemId == itemId &&
inventTrans.valueOpen == InventTransOpen::Yes &&
inventTrans.statusReceipt >= StatusReceipt::None &&
inventTrans.statusReceipt <= StatusReceipt::Purchased &&
inventTrans.statusIssue >= StatusIssue::None &&
inventTrans.statusIssue <= StatusIssue::Sold &&
inventTrans.dateFinancial <= perDate
#inventDimJoin(inventTrans.inventDimId,inventDim,inventDimCriteria,inventDimParm,dimIdIdx)
{
this.add(inventTrans);
}
Один раз уже с этим сталкивался.
Только тогда не обратил внимание что это из-за force*
Код был мой и за результаты был уверен спокойно поставил inventTrans.disableCache(true) и всё ок.
Может кто-то обяснит почему с использованием force* могут данные не актуальные вернуться. Может на Oracle какие-нибудь дополнительные настройки поставить, чтоб правильно запрос отрабатывал.