Уважаемые господа и товарищи!
Имеем: DAX 4.0 SP2 на MS SQL Server 2000 Dev
А также примерно такой код (упрощённо) в классе ReqTransPoMarkFirm:
X++:
void run();
...
ttsbegin;
...
this.create();
...
ttscommit;
...
В свою очередь в create:
X++:
select firstonly forupdate reqTrans
index hint refIdx
where ...
Далее в недрах класса, после многих преобразований, однако всё в рамках этого же вызова create в какой то момент происходит обновление выбранной здесь записи:
X++:
void updateFirmedReqTrans(...
...
_reqTrans.InventTransId = _InventTransId;
_reqTrans.RefType = _refType;
_reqTrans.RefId = _refId;
_reqTrans.IsForecastPurch = NoYes::No;
_reqTrans.update();
...
И вот тут возникает стандартная ошибка "Операция не может быть завершена, так как запись не выбиралась для обновления. Используйте TTSBEGIN/TTSCOMMIT наряду с выражением FORUPDATE."
Мало того, попытка тупо в этом месте заменить вызов _reqTrans.update() на:
X++:
ttsbegin;
reqTransBuf = ReqTrans::findRecId(_reqTrans.RecId, true);
reqTransBuf.data(_reqTrans);
reqTransBuf.update();
ttscommit;
ситуацию нисколько не изменяет.
Не подскажете ли, что может вызвать такое странное поведение и какой криминал стоит поискать в преобразованиях, производимых в этом классе между выбором записи и её обновлением?
Заранее благодарен всем ответившим.