20.09.2019, 20:50 | #1 |
Участник
|
AX2012 CU13 MCRHoldCodeTrans добавлен в отдельной транзакции
добрый вечер!
какая-то странная проблема, наверное связанная с областью видимости транзакций, но... 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(); } } |
|
20.09.2019, 23:08 | #2 |
Участник
|
дело, похоже, в MCRHoldCodeTrans.insert(), который паровозом выполняет
X++: salesTable.mcrOrderStopped = NoYes::Yes; |
|