AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.11.2019, 07:41   #1  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Добавление полей из InventDim в InventSum
Увидел сегодня твит Ивана по поводу WMS
Нажмите на изображение для увеличения
Название: InventSimFields.jpg
Просмотров: 361
Размер:	264.7 Кб
ID:	12448
Довольно нужная штука для многих клиентов 2009/2012, но реализованно только в D365FO
Технически я так понимаю сделано на триггерах
X++:
    /// CREATE TRIGGER INVENTSUMUPDATETRIGGER ON dbo.INVENTSUM
    /// AFTER UPDATE
    /// AS
    /// BEGIN
    ///     UPDATE INVENTSUM
    ///     SET INVENTSUM.CONFIGID = INVENTDIM.CONFIGID,
Вопрос
Кто-нибудь пробовал делать подобное для 2012?
Как лучше реализовать эти триггеры в 2012?(куда их вообще надо добавить чтобы они не удалялись при синхронизации)
За это сообщение автора поблагодарили: Logger (3), boomer (1).
Старый 14.11.2019, 09:23   #2  
Masel is offline
Masel
Участник
 
39 / 537 (18) +++++++
Регистрация: 19.09.2007
Был один кейс, когда в компании была включена партия и какие-то еще аналитики, которые не использовались, но отказаться от них было сложно уже. В большинстве запросов использовался только склад. Нужно было оптимизировать запросы. Там я добавлял склад в InventSum. Для заполнения можно поправить класс InventUpdateOnhand, ничего сложного. Эффект положительный был от этого. Общей универсальной доработки я не делал.
С триггерами я так понимаю будут дополнительные запросы на обновление. При правке InventUpdateOnhand не будет, т.к. правится сам запрос вставки в таблицу.
За это сообщение автора поблагодарили: Logger (3).
Старый 14.11.2019, 09:59   #3  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Мне кажется для этого триггеры не обязательны, достаточно заполнять в InventSum поля аналитики при вставке записи. Из примера мне непонятно - зачем триггер вызывается при каждом обновлении InventSum ?
Старый 14.11.2019, 10:40   #4  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от Alexius Посмотреть сообщение
Мне кажется для этого триггеры не обязательны, достаточно заполнять в InventSum поля аналитики при вставке записи. Из примера мне непонятно - зачем триггер вызывается при каждом обновлении InventSum ?
Ну InventSum все равно через SQL обновляется, там что-то сходу непонятно куда добавлять InventDim, подозреваю что решили что через тригер безопастнее, он вообще простой получился. То что он вызывается всегда думаю из этих же соображений, оверхед не очень большой
Плюс если делать в АХ, код не будет отрабатывать при использовании doUpdate(), а есть любители писать так

Последний раз редактировалось trud; 14.11.2019 в 10:45.
Старый 14.11.2019, 10:59   #5  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Я имел в виду, что достаточно заполнить дополнительное поле аналитики только при вставке, она происходит без прямых скулевых запросов. Далее штатный функционал не меняет значение InventSum.InventDimId и набор аналитик в самом InventDim. Постоянное обновление этого поля избыточно.

PS. В АХ и без этого достаточно выполняется бестолковых микро-запросиков, на которых в сумме тратиться куча ресурсов.
За это сообщение автора поблагодарили: trud (2).
Старый 14.11.2019, 12:43   #6  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от trud Посмотреть сообщение
Вопрос
Кто-нибудь пробовал делать подобное для 2012?
Как лучше реализовать эти триггеры в 2012?(куда их вообще надо добавить чтобы они не удалялись при синхронизации)
Я делал в ax3 / Ax2009 для InventLocationId.
Триггеры можно не трогать. Правил код в аксапте.
Ускорение работы очень понравилось.

А вы какие еще выгоды от такой денормализации видите?
Старый 14.11.2019, 13:13   #7  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,909 / 5730 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от Logger Посмотреть сообщение
Я делал в ax3 / Ax2009 для InventLocationId.
Триггеры можно не трогать. Правил код в аксапте.
Ускорение работы очень понравилось.

А вы какие еще выгоды от такой денормализации видите?
[TROLLFACE]
с денормализацией можно бороться
А потом можно бороться с нормализацией - как в этой теме например, или при обновлении наследования таблиц между DAX2012RTM и DAX2012R2.
Жду когда они inventTransId обратно в inventTrans продублируют. По большому счету - ни для чего другого таблица inventTransOrigin и ее родственники не используются.
[/TROLLFACE]
За это сообщение автора поблагодарили: Logger (3), boomer (1).
Теги
d365 for operations, d365fo, inventdim, inventsum, inventupdateonhand, performance, wms, денормализация

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX 2012 R3, SQL 2012, InventSum+InventDim оптимизация skycap DAX: Администрирование 12 11.02.2019 18:34
emeadaxsupport: Key Clean up Features for InventSum and InventDim Tables Blog bot DAX Blogs 0 11.05.2016 16:11
16 и более полей в InventDim Ievgenii DAX: Функционал 12 13.10.2011 13:56
lookup для ItemId iz InventTable + InventDim + InventSum stalker25 DAX: Программирование 6 20.07.2009 15:50
Ошибка при разноске складских движений Starling DAX: Администрирование 9 12.10.2007 14:21

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:45.