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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.08.2017, 11:15   #17  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
пока у меня получается следующая чудовищная конструкция:

но она:
1. работает через полный перебор объектов AOT
2. должна знать о подчиненных элементах (table.Extensions)

в общем - фигня какая-то.

Хочу отметить, что набор методов явно писался в переходные времена, когда еще не было решено что будет ключом - int Id или String Name.

Также, набор методов явно писало несколько абсолютно равнодушных и криворуких людей, которые проектировали под единственный сценарий использования - сначала загрузить все в память (в кэш-объект), потом работать только с этим объектом (стиль SysModelMetaData). Другие сценарии при программировании похоже даже не рассматривались. Либо я чего-то не понимаю.

Собственно отсюда и вопрос ветки:
Как правильно получить элементы AOT заданной модели? В X++? В SQL? в акс2012? в акс7? А extension?

X++:
    protected set getTableNamesFromModels()
    {
        boolean inModel(str modelDisplayName, str objname, System.Type type)
        {
            var models = Microsoft.Dynamics.Ax.Xpp.MetadataSupport::GetModelsOfMetadataArtifact(objName, type);
            var modelsEnumerator = models.getEnumerator();
            while (modelsEnumerator.moveNext())
            {
                Microsoft.Dynamics.AX.Metadata.MetaModel.ModelInfo modelInfo = modelsEnumerator.Current;
                if( ModelDisplayName == modelInfo.DisplayName )
                {
                    return true;
                }
            }

            return false;
        }

        set result = new set(Types::String);
        var modelName = 'Fleet Management Extension';

        var axTableType = new Microsoft.Dynamics.AX.Metadata.MetaModel.AxTable();
        var axTableExtType = new Microsoft.Dynamics.AX.Metadata.MetaModel.AxTableExtension();

        var t = Microsoft.Dynamics.Ax.Xpp.MetadataSupport::TableNames();  // Why Enumerator?
        while ( t.moveNext() )
        {
            var tname = t.get_current();

            if ( inModel(ModelName, tname, axTableType.GetType()) )
            {
                result.add(tname);
                continue;
            }

            var tExt = Microsoft.Dynamics.Ax.Xpp.MetadataSupport::GetTableExtensionNames(tname); // Why collection?
            var tExtEnum = tExt.GetEnumerator();
            while( tExtEnum.moveNext() )
            {
                var tExtName = tExtEnum.Get_Current();
                if ( inModel(ModelName, tExtName, axTableExtType.GetType()) )
                {
                    result.add(tExtName);
                    continue;
                }
            }
        }
        
        return result;
    }
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 10.08.2017 в 11:27.
За это сообщение автора поблагодарили: sukhanchik (5).
Теги
ax2012, ax7, модель

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Получить SQL-имя таблицы типа TempDB RVS DAX: Программирование 3 18.11.2014 11:50
Как получить Имя Амортизационной группы ОС (из модели учета НУ)? snow DAX: Программирование 2 09.08.2013 13:26
Dynamics AX: SQL Server, Heart of Dynamics AX Blog bot DAX Blogs 0 13.07.2007 18:00
Как получить значения полей (modifiedDate, modifiedTime, modifiedBy и др.) при работе с объектами AOT типа Map? LRA DAX: База знаний и проекты 15 02.04.2007 13:37
SQL: Physical Address Extension (PAE). Recoilme DAX: Администрирование 3 20.04.2006 10:18

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

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

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