Цитата:
Сообщение от
mazzy
...Но record.selectForUpdate() у меня всегда возвращает false.
Как сделать так, чтобы полученную из getByKey можно было обновить методом update, не выполняя повторного поиска.
Я правильно понимаю, что начав использовать UnitOfWork, мы должны использовать только его? Ну, или выполнять повторный поиск в базе?
Может что-то типа такого
\Classes\InventCostItemDim\updateInventTrans
X++:
protected void updateInventTrans(InventTrans _inventTrans)
{
if (_inventTrans.RecId)
{
_inventTrans.skipTTSCheck(true); // !!!
this.updateCostAmountStd(_inventTrans);
_inventTrans.update(); // !!!
}
this.updateInventTransMap(_inventTrans);
}
В закрытии склада буфер доставали из мапа, т.е. никакого курсора с ним не связано, просто структура в памяти с полями. И процитированным способом он успешно обновлялся в БД без перевыбора записи. Но, если мне не изменяет память при заполнении мапа с InventTrans, запись выбиралась forUpdate c наложением блокировки в БД.
Хотя возможно для UnitOfWork возможен другой подход.