05.06.2018, 13:41 | #8 |
Участник
|
Цитата:
Причина 1: Это фича (особенность) хранения данных MS SQL. 1. Если в запросе явным образом не указана опция Order By, то, в общем случае, порядок следования записей в выборке будет произвольным Да, как правило, этот порядок будет совпадать с кластерным индексом. Но именно "как правило". Это именно "совпадение". Не гарантия 2. При внесении изменений в данные таблицы возможно (опять же, не обязательно. Возможно) перестроение индексов вообще и кластерных индексов в частности Из этого следует, что, в общем случае, если внутри цикла выполняется изменение данных той таблицы, по которой выборка и выполняется, то возможно, что одна и та же запись таблицы внутри цикла while select может быть выбрана несколько раз Для проверки этого предположения, выведите в infolog значения всех записей, которые попали в выборку и посмотрите, не повторяется ли одно и то же значение RecId несколько раз На самом деле, такая ситуация является скорее исключением, чем правилом. Т.е. случается достаточно редко. Просто это надо иметь в виду. "Лечится" это двумя способами 1. Регулярное обновление (перестроение) индексов базы данных 2. Включение в цикл While select опции order By. Но! Обязательно по тем полям, которые не будет изменяться внутри цикла. В данном случае можно по RecId Причина 2: Запись действительно была обновлена Это зависит от версии Axapta и сделанных изменений. Дело в том, что doUpdate() не гарантирует того, что никакие сопутствующие методы не будут выполнены. Она лишь гарантирует, что не будет выполнен табличный метод Update(). Но изменения в запись могут быть внесены и другими методами. И вот в этом случае изменится значение RecVersion и Axapta посчитает, что запись была изменена другим процессом. В этом случае и требуется перезапрос Reread() Посмотрите, нет ли у Вас на таблице CustTrans каких-либо связанных событий на методе update.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: iiipoizone (1). |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|