AX2012 R2
Обновляю цену на строке закупки
X++:
purchLine.PurchPrice = MyPrice;
purchLine.LineAmount = purchLine.calcLineAmount();
purchLine.update()
Заметили, что при выполении этого кода, сообщения пропадают из инфолога.
При отладке наткнулась на сообщение:
"Cannot create a record in Relationship between the purchase order line and the inventory transactions originator (InventTransOriginPurchLine). Inventory transactions originator: SomeInvTransNum123, SomeInvTransNum123. The record already exists"
Которое потом "исчезает".
Далее вышла на волшебный метод InventTransOriginPurchLine-> writeOriginOwnerRelationship()
Где написано следующее :
X++:
catch (Exception::DuplicateKeyException)
{
if (xSession::lastDuplicateKeyViolatingTable() == inventTransOriginPurchLine)
{
update_recordset inventTransOriginPurchLine
setting InventTransOrigin = _inventTransOriginId
where inventTransOriginPurchLine.PurchLineInventTransId == _purchLineInventTransId
&& inventTransOriginPurchLine.PurchLineDataAreaId == _purchLineDataAreaId
&& inventTransOriginPurchLine.InventTransOrigin != _inventTransOriginId;
}
else
{
throw Exception::DuplicateKeyException;
}
infolog.clear(logCount);
}
То есть, вроде как, вставка дубликата обрабатывается как штатаная ситуация ... вот только лог-то затирается при этом!
Вот вопрос : обновление цены на purchLine неправильно реализовано, или все так и должно быть, и надо просто смириться?