Показать сообщение отдельно
Старый 13.08.2015, 18:13   #1  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,709 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
модификация taxTrans_RU в пакетном режиме в классе GoodsInRouteUpdate_RU
Есть такой метод класса в 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?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...