|
![]() |
#1 |
Участник
|
Это не косяк, а так спроектировано. Если сразу добавлять запись (пусть и с пустыми остатками) в InventSum одновременно с созданием InventSumDelta, то можно нарваться на блокировки/конфликт уникального ключа. А InventSumDelta как раз и делали, чтобы этого избежать.
|
|
![]() |
#2 |
Участник
|
Подождите, причём тут внесение записи в InventSum? Мне было непонятно, почему InventSumDelta не обрабатывается в классе InventDimOnHand.
|
|
![]() |
#3 |
Administrator
|
Цитата:
someOne имел в виду, что надо быть аккуратным, когда не используется InventDimOnHand, а остатки выбираются прямыми запросами к InventSum/InventSumDelta. Кстати, в AX 2012 R3 появились View (InventSumAggrDeltaView и InventSumUnionDeltaPhysicalQty), в которых InventSum и InventSumDelta уже связаны. Идея была в том, чтобы читать остатки из этих View, и не заморачиваться с классами InventOnhand. Идея, вероятно, была неплохая, но реализация подкачала: во View забыли добавить TTSId, и теперь любые запросы к ним блокируют и InventSum, и InventSumDelta целиком. Используются эти View в новом Warehouse Management. В блогах и на форумах есть несколько статей, в которых люди пытаются что-то шаманить с индексами на InventSumDelta, чтобы блокировки уменьшить, но корень проблемы в том, что InventSumDelta просто неправильно используется в стандартном коде.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
За это сообщение автора поблагодарили: Logger (10). |
![]() |
#4 |
Участник
|
Цитата:
Цитата:
(у меня в отношении этого были опасения по блокировкам и они подтвердились ![]() Вы видите способ штатными средствами аксапты (без редактирования вьюхи в SQL) достичь заявленной цели ? Цитата:
Ого ! А как же правильно тогда ? Что там не так ? |
|
![]() |
#5 |
Участник
|
Подождите, причём тут InventOnhand?
Я говорил про InventDimOnHand, и, по крайней мере, в той версии Ax2009, в которой я натолкнулся на проблему, записи InventSumDelta с "новыми" InventDimId не обрабатывались. Поэтому я и спрашивал, не исправлено ли это в каких-то обновлениях. Цитата:
Обновления --- запросто, а вот чтение оттуда без hint-ов, по идее, блокироваться не должно. Ссылками не поделитесь? |
|
![]() |
#6 |
Moderator
|
Цитата:
Сообщение от Maxim Gorbunov
![]() Обрабатывается. См. InventOnhand.addInventSumDelta().
someOne имел в виду, что надо быть аккуратным, когда не используется InventDimOnHand, а остатки выбираются прямыми запросами к InventSum/InventSumDelta. Кстати, в AX 2012 R3 появились View (InventSumAggrDeltaView и InventSumUnionDeltaPhysicalQty), в которых InventSum и InventSumDelta уже связаны. Идея была в том, чтобы читать остатки из этих View, и не заморачиваться с классами InventOnhand. Идея, вероятно, была неплохая, но реализация подкачала: во View забыли добавить TTSId, и теперь любые запросы к ним блокируют и InventSum, и InventSumDelta целиком. Используются эти View в новом Warehouse Management. В блогах и на форумах есть несколько статей, в которых люди пытаются что-то шаманить с индексами на InventSumDelta, чтобы блокировки уменьшить, но корень проблемы в том, что InventSumDelta просто неправильно используется в стандартном коде. |
|
|
За это сообщение автора поблагодарили: Logger (3). |
Теги |
ax2009, inventsumaggrdeltaview, inventsumdelta, inventsumuniondeltaphysicalqty, как правильно, остатки, транзакции |
|
|