Есть такой метод класса в Ax2012
\Classes\GoodsInRouteUpdate_RU\postMarkupTax
В самом его конце есть цикл, который, если убрать не существенные в данном вопросе детали, выглядит примерно так
X++:
while select forupdate taxTrans
where taxTrans.InventTransId == inventTransId
&& taxTrans.Voucher == custInvoiceJour.LedgerVoucher
&& taxTrans.TransDate == custInvoiceJour.InvoiceDate
join forUpdate taxTrans_RU
where taxTrans_RU.TaxTrans == taxTrans.RecId
(...)
{
(...)
taxTrans_RU = taxTrans.taxTrans_RU(); // Зачем?
// "масло-масленое", но в пакетном режиме считает, что нет опции forupdate
//taxTrans_RU.selectForUpdate(true);
taxTrans_RU.GoodsInRouteToDelivery_RU = NoYes::No;
taxTrans_RU.GoodsInRouteId_RU = goodsInRouteJour.GoodsInRouteId;
taxTrans_RU.update();
}
Проблема заключается в том, что в пакетном режиме получаю ошибку о том, что для taxTrans_RU не указана опция forupdate (транзакция открыта в вызвавшем методе). Пока вышел из положения, добавив taxTrans_RU.selectForUpdate(true). Однако меня смущает собственно вызов
taxTrans_RU = taxTrans.taxTrans_RU();
Зачем? Есть в этом некий "тайный смысл"? Ну, и собственно, а почему в пакетном режиме полученная запись не имеет forupdate?