05.04.2011, 16:30 | #1 |
Участник
|
Модификация огромного количества (сотни тысяч) записей в Axapta 3.0 SP4
Давненько я с Аксаптой 3.0 не работал.
Мне необходимо модифицировать огромное количество записей в ряде таблиц в третьей Аксапте. В одной таблице может быть, скажем, 700 000 записей. Разумеется, одной транзакцией этого делать нельзя. Код у меня наподобие следующего: X++: Table1 table1; int bulk = 5000; // 5; int i; ; ttsbegin; while select forupdate table1 { i++; table1.Field1 = strfmt("Blah %1", i); table1.doupdate(); if (i mod bulk == 0) { ttscommit; ttsbegin; } } ttscommit; Что за дела? Я уже пытался использовать и while select и SelectForUpdate отдельно, и дополнительную переменную Table1 (одну для цикла, одну для find forupdate), и Query, и UserConnection, и вместо внешних ttsbegin/ttscommit использовать только внутренние, и чего я только не пытался - везде свои грабли. Чувствую, следующим шагом буду ориентироваться на диапазон RecId и просто делать кучу отдельных циклов по каждой таблице. У кого-то есть идеи что вообще происходит? На всякий случай - все это происходит в классе унаследованном от RunBaseBatch (но не в пакетной обработке). |
|