Показать сообщение отдельно
Старый 15.03.2019, 15:28   #12  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,651 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Конкретно для строк закупок проблема связана с модулем хранения версий закупок. Всякие PurchTableVersion, PurchTableHistory, PurchLineHistory...

Там может получиться так, что при обновлении первой строки закупки будет установлен признак IsModified для всех остальных строк этой же закупки. В результате и получаем конфликт обновления

Т.е., во-первых, ошибка "плавающая". Может быть, а может не быть. Во-вторых, первая строка всегда обновляется корректно. Проблема возникает при обновлении второй строки. Точнее, той порции строк, которые Axapta считывает "за раз" в свой кеш. И тут только reread() помогает

PS: Посмотрел, где же я на это натыкался. Ситуация обратная. Признак IsModifed снимается у всех строк вот в этом методе

\Classes\VersioningPurchaseOrder\archivePurchLine

Соответственно, можно во все циклы по PurchLine добавлять условие

X++:
        if (purchLine.IsModified)
        {
            purchLine.reread();
        }
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...

Последний раз редактировалось Владимир Максимов; 15.03.2019 в 15:55.