Показать сообщение отдельно
Старый 02.12.2014, 12:27   #1  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Это фича, или я что-то не так делаю?
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 неправильно реализовано, или все так и должно быть, и надо просто смириться?

Последний раз редактировалось IKA; 02.12.2014 в 12:34.