Насколько я понимаю, связано это с генерацией и вставкой значения RecId.
Т.е. сначала сохраняются записи во временную таблицу - получается кол-во записей для вставки (при этом, recId присваивается увеличивающее значение, начиная с единицы).
Затем, выделяется нужный диапазон в systemSequences
Далее, происходит вставка в целевую таблицу, RecId присваивается значение из временной таблицы + смещение
Если делать это все через прямую вставку в таблицу, то посчитать кол-во записей перед вставкой все равно придется, но между расчетом и вставкой пройдет какое-то время, за которое могут быть вставлены новая записи в исходную таблицу, соответствующие поисковому запросу. И значение в systemSequences разъедется с реальным в таблице.
Что бы этого избежать, придется запускать сериализуемую транзакцию, которая очень легко может заблокировать всю исходную таблицу на момент операции (да и не сталкивался я в DAX с использованием таких транзакций)
__________________
Axapta v.3.0 sp5 kr2
|