Мне нужно присвоить новые значения полю PurchLine.PurchReceivedNow , код приблизительно такой:
X++:
ttsBegin;
while select forupdate purchLine
order by Confirmeddlv
where purchLine.PurchId == purchId &&
purchLine.ItemId == itemId &&
purchLine.PurchStatus == PurchStatus::Backorder &&
(!purchLine.IsDeleted)
exists join InventDim
where lalala
{
// purchLine.reread();
if (receivedQty >= purchLine.RemainPurchPhysical)
{
purchLine.PurchReceivedNow = purchLine.RemainPurchPhysical;
receivedQty -= purchLine.RemainPurchPhysical;
}
else
{
purchLine.PurchReceivedNow = receivedQty;
receivedQty = 0;
}
purchLine.setInventReceivedNow();
purchLine.Tax1099Amount = 0;
purchLine.Tax1099StateAmount = 0;
if (purchLine.validateWrite())
{
purchLine.update();
}
else
{
throw error('my error');
}
}
Вопрос: Если убрать reread, то система валится с updateConflict. Не могу понять, что делаю не так. По идее код корректно должен работать и без него. Нашла ссылку на похожую проблему вот
тут . Что приводит к updateconflict?
Ax2012 R2