Создание складской аналитики в MS Dynamics AX 2012

На одном из проектов мне довелось столкнуться с этим, задача как оказалось довольно трудоемкая и интересная. Для внедрения аналитики потребовалось большое количество изменений кода, а именно добавление новой аналитики в код, также встретится очень интересный момент если добавляемая аналитика является продуктовой. Теперь обо всем этом поподробнее.

Первое что нужно сделать это создать расширенный тип и справочник значений аналитики. Дальше нужно добавить в таблицу InventDim нашу аналитику и обязательно добавить поле в группу полей InventoryDimensions для того чтобы настраивалось отображение аналитики на формах. Так же нужно добавить аналитику в одну из трех групп полей ProductDimensions, StorageDimensions или TrackingDimensions в зависимости от того к какой группе относится аналитика. В DAX 2012 на таблице InventDim изменился уникальный индекс DimIdx в него добавлено поле SHA1Hash. Чтобы включить новую аналитику в уникальный ключ ее нужно проиндексировать и записать в поле SHA1Hash. Для того чтобы проиндексировать нашу аналитику на таблице InventDim нужно добавить обработку аналитики в метод hashKey, пример кода указан в самом методе. Дальше добавляем новое поле в таблицу InventDimParm. Поле типа перечисление на основе расширенного типа NoYesId и также обязательно добавляем новое поле в группы полей View и FixedView для настройки отображения аналитик на формах.

Теперь самая трудоемкая часть нашей работы. Открываем AOT и выполняем поиск макроса #InventDimDevelop во всех ветках. Поиск длится около 2-3 часов, за это время можно сделать много полезного и интересного но не в AX (= К сожалению макрос #InventDimDevelop отмечен не во всех методах где нужно выполнить добавление аналитики, но таких методов не так много и в основном они будут обнаружены в ходе тестирования и работы в AX. Например, если аналитика относится к группе аналитик отслеживания, то нужно обязательно добавить аналитику в код метода isDimFieldIdTrackingDimension таблицы EcoResTrackingDimensionGroup, если аналитика относится к группе аналитик хранения, то нужно обязательно добавить аналитику в код метода isDimFieldIdStorageDimension таблицы EcoResStorageDimensionGroup.

После того как поправили код нужно поправить отображение аналитик на формах, в основном используются группы полей, но есть места где приходится выводить аналитики на форму.

Теперь, когда все изменения выполнены нужно выполнить глобальную компиляцию приложения с последующим полным созданием CIL.

Теперь перейдем от рутинной работы к более интересной. При добавлении новой продуктовой аналитики я столкнулся с очень интересной ситуацией, а именно, в заказах на продажу, как и на покупку есть кнопка добавления продуктов в строки заказа. При нажатии на нее открывается форма добавления продуктов, на этой форме в группе доступные продукты есть возможность добавления вариантов. Форма выбора выглядит следующим образом:

На рисунке, я отметил место вывода продуктовой аналитики «Конфигурация», для вывода этих аналитик используется .NET контрол MatrixPivot в котором зашито максимальное количество столбцов, Карл! т.е. 4 столбца с аналитиками могут отображаться на этой форме, для четырех продуктовых аналитик и не аналитикой больше. Чтобы решить эту довольно интересную проблему нужно «вскрыть» dll с контролом Microsoft.Dynamics.Retail.MatrixPivotGrid.dll которая находится в папке Bin. В dll находим класс Matrix и в методе InitializeComponent указываем новое количество столбцов

и добавляем столбцы

после внесения изменений dll нужно откомпилировать, откомпилированную dll нужно зарегистрировать в DAX, вот, пожалуй, и все! Повстречавшись с подобным я уже ничему не удивлюсь в этом буржуйском решении (=

Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar