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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.06.2018, 13:13   #1  
yevol is offline
yevol
Участник
 
7 / 10 (1) +
Регистрация: 29.11.2017
TreeNode AOTgetProperty («Model») возвращает разные значения для клиента и сервера
Всем привет!

Суть проблемы: создается экземпляр объекта TreeNode. Содержит структуру (свойство) Model. На клиенте структура заполняется значением "Foundation". На сервере заполняется значением "19". Таким образом при вызове метода AOTgetProperty («Model») на клиенте получаем значение "Foundation", на сервере "19". (значения приведены для примера, "19" по сути отображает ID модели в таблице SysModelManifest).

Пример кода:

TreeNode treeNode;
ModelName modelNameRet;

treeNode = TreeNode::findNode(@"\Data Dictionary\Base Enums\ABC");

modelNameRet = parentTreeNode.AOTgetProperty("Model");

info(modelNameRet);
Старый 22.06.2018, 13:33   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Если 19 соответствует идентификатору модели Foundation то это полбеды.
А иначе катастрофа.
Старый 25.06.2018, 13:07   #3  
yevol is offline
yevol
Участник
 
7 / 10 (1) +
Регистрация: 29.11.2017
Нашел два решения задачи.
1. Использовать конструкцию SysModelStore::modelId2Name(treeNode.AOTGetModel());
treeNode.AOTGetModel() - возвращает ModelId
2. Использовать запрос:

SysModelElement sysModelElement;
SysModelElementData sysModelElementData;
utilModels utilModels;


select sysModelElement
where sysModelElement.Name == "ABC"
join sysModelElementData
where sysModelElement.RecId == sysModelElementData.ModelElement
join Name from utilModels
where utilModels.Id == sysModelElementData.ModelId;

info (utilModels.Name);

Второе решение мне не подошло, так как сильно замедляет выполнение кода (в моем случае в 3~ раза)
Старый 27.06.2018, 07:31   #4  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Таблица системная, возможно для использования индекса не хватает поля ElementType. Думаю, метод treeNode.AOTGetModel() все равно использует запрос, однако информация кэшируется, и в первый раз все равно будет работать медленно. Также как при открытии ветки в АОТ. Первый вариант предпочтительнее, как с точки зрения производительности, так и с т.з. понимания кода другими людьми.
__________________
// no comments

Последний раз редактировалось dech; 27.06.2018 в 08:54.
Теги
aotgetproperty, ax 2012 r3, client, model, server, treenode

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
daxmusings: PSA: AX7 Build Failure on Generate Packages / Model Export Blog bot DAX Blogs 0 01.11.2017 09:11
palleagermark: New "Retail" model in "July 2017" creating backwards compatibility issues Blog bot DAX Blogs 5 13.07.2017 12:53
stoneridgesoftware: Version Control in Dynamics AX: Ensure that code changes are being made in model tied to version control Blog bot DAX Blogs 0 11.04.2017 20:13
В поле BuildNum таблицы SysUserLog (Журнал работы пользователей) пишется версия не клиента а сервера S.Kuskov DAX: Программирование 2 28.03.2012 13:27
dynamics-ax: Kees Hertogh: The Benefits of a Model Driven Layered Architecture Blog bot DAX Blogs 0 30.03.2011 01:14
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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