добрый вечер!
какая-то странная проблема, наверное связанная с областью видимости транзакций, но...
AX2012 CU13
Надо при выполнеии определенных условий во время разноски накладной поставить ордер на Hold (добавить в MCRHoldCodeTrans). Потом по сюжету идет throw error.
После этого идет откат транзакции, и добавленный обычным способом холд откатывается.
Чтобы холд остался, добавляю его в MCRHoldCodeTrans в отдельной транзакцией. Добавляется и виден в форме по книпке "functions/order holds" после отката, но кнопки на форме не блокируются. F5 не помогает.
Если к имеющемуся в форме я добавляю еще один такой же вручную, кнопки блокируются. Удаляю только что добавленный - кнопки все равно блокируются, то есть первый холд начинает работать.
Подскажите в чем проблема и почему первый холд не работает поначалу, хотя виден, потому что временное (надеюсь!) помутнение рассудка не позволяет увидеть решение.
Добавляю так:
X++:
static void holdSalesOrder(SalesId _salesId, MCRHoldCode _holdCode)
{
MCRHoldCodeTrans holdtrans;
UserConnection connection ;
select firstonly RecId from holdtrans
where holdtrans.InventRefId == _salesId
&& holdtrans.mcrCleared == NoYes::No
&& holdtrans.mcrHoldCode == _holdCode;
if(!holdtrans.RecId)
{
connection = new UserConnection();
holdtrans.setConnection(connection);
connection.ttsbegin();
holdtrans.InventRefId = _salesId;
holdtrans.mcrHoldCode = _holdCode;
if (holdtrans.validateWrite())
{
holdtrans.insert();
}
connection.ttscommit();
connection.finalize();
}
}