Показать сообщение отдельно
Старый 06.01.2012, 14:27   #6  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Хочу предостеречь тех, кто решит добавить поле InventLicationId в таблицу InventSum.

В ранней версии (3,0) делали такое. Это давало (наверное) какие то улучшения по производительности некоторых "самописных" отчетов, едва заметные.

Но с переходом на ax2009 всплыла такая особенность. Дело в том, что для определения (например) остатков номенклатуры внутри транзакции в новых версиях Ax используются данные из двух таблиц
- InventSum
- InventSumDelta

Поэтому делая запрос лишь к InventSum (из собственно написанного кода) внутри транзакции можно получить искаженные данные.

Это конечно, не относится к работе отчетов, которые будут работать нормально.

Но попытка получить остатки по номенклатуре (например при резервировании) делая прямой запрос к inventSum вернет ошибочный результат, если этот запрос делается в транзакции, в которой по данной номенклатуре были изменения в количестве...

Вывод:
Использовать стандартные классы inventOnHand, тогда проблем не будет.

В общем от поля InventLicationId пришлось отказаться.
При этом потери скорости работы старых отчетов не заметно...
За это сообщение автора поблагодарили: Logger (6), Bega (5).