![]() |
#13 |
злыдень
|
Цитата:
Сообщение от mazzy
![]() Более правильный код:
X++: SysProgressOperation progress; ; select count(recid) from custCollectionLetterTrans where custCollectionLetterTrans.CollectionLetterNum == this.CollectionLetterNum && custCollectionLetterTrans.AccountNum == this.AccountNum && custCollectionLetterTrans.CollectionLetterIssued; progress = SysProgressOperation::newGeneral('','',custCollectionLetterTrans.recid); while select * from custCollectionLetterTrans where custCollectionLetterTrans.CollectionLetterNum == this.CollectionLetterNum && custCollectionLetterTrans.AccountNum == this.AccountNum && custCollectionLetterTrans.CollectionLetterIssued { ttsbegin; custTrans = CustTrans::find(custCollectionLetterTrans.CustTransId, true); custTrans.CollectionLetterCode = custCollectionLetterTrans.CollectionLetterCode; custTrans.update(); ttscommit; progress.inccount(); } ... Представьте простую ситуацию, Вы разносите накладную из 100 строк. каждая строка обрабатывается в отдельной транзакции. На строке 87 возникает исключительная ситуация , товара недостаточно на складе, а предыдущие 86 строк уже списали товар.... Помедитируйте на тему зачем вообще нужны транзакции, как они работают и что такое целостность данных Буквально пару дней назад думал убью долго и подробно объяснял 3 одинэсникам почему, например, импорт документа из аксапты надо облачать в транзакзию, а не обрабатывать построчно как они привыкли. То ли это 1с разрушает моск, то ли просто так совпало
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
Теги |
recordset, update_recordset, ax2009 |
|
|