|
|
#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 |
|
|
|