Кстати, да, если делать отдельный ttsbegin/ttscommit для каждой записи, все вроде работает. Я, наверное, на этом и остановлюсь.
X++:
Table1 table1Loop;
Table1 table1;
int i;
;
while select table1Loop
{
i++;
ttsbegin;
table1 = Table1::findRec(table1Loop.RecId, true);
table1.Field1 = strfmt("Blah %1", i);
table1.doupdate();
ttscommit;
}
Но мне почему-то казалось, что групповое обновление записей (скажем, 500 или 1000 в одной транзакции) на больших объемах даст ощутимый прирост производительности. Я не прав?
И вот такой вот код уже не работает:
X++:
Table1 table1Loop;
Table1 table1;
int bulk = 5000; // 5;
int i;
;
ttsbegin;
while select table1Loop
{
i++;
table1 = Table1::findRec(table1Loop.RecId, true);
table1.Field1 = strfmt("Blah %1", i);
table1.doupdate();
if (i mod bulk == 0)
{
ttscommit;
ttsbegin;
}
}
Та же проблема, которую я первоначально описал.