Использование InventDim.Update(true); inventDim.Insert(True); в данном случаи мне кажется неправильным, так как новая аналитика может уже существовать
Лучше поступить так
PHP код:
InventDim oldInventDim, newInventDim;
;
// Для каждой строки закупки получаем
oldInventDim = InventDim::find(purchLine.InventDimId);
// Изменяем ГТД
oldInventDim.InventGtdId_RU = "ГТД"
// создаем или находим аналитику
newInventDim = InventDim::findOrCreate(oldInventDim);
// изменяем строку закупки
purchLine.InventDimId = newInventDim.InventDimId
purchLine.update();
Еще интересно посмотреть, что будет со складскими проводками и остатками по старой и новой аналитикам