Как найти имя таблицы по ID в Dynamics AX

Каждая таблица в AOT имеет идентификатор, как я могу узнать имя таблицы с идентификатором?

Ответ 1

Взгляд на SQL dictironary - действительно правильный метод. Найдите строку с полем FieldId равным 0. Используя TSQL, это будет указывать имя таблицы для tableid 505

select NAME 
  from SQLDICTIONARY
 where TABLEID = 505
   and FIELDID = 0

Ответ 2

Из X ++ используйте функцию tableId2Name.

В графическом интерфейсе выберите Инструменты/Средства разработки/Объекты приложения/Объекты приложения и фильтр для типа recordType TableInternalHeader и parentId идентификатора таблицы, который вы ищете.

Или в AOT, щелкните правой кнопкой мыши на таблицах и выберите "Найти". На вкладке "Имя и местоположение" установите "Искать во все узлы". На вкладке "Свойства" нажмите "Выделено" рядом с идентификатором и введите идентификатор таблицы в поле "Диапазон".

Ответ 3

Я не знаю, если это ваш ответ, если вы хотите дать TableName своим идентификатором, вы можете использовать метод: str tableId2Name (int _tableid)

Например: Если у YourTable есть ID: 123456; метод использования

       tableId2PName(123456) 

вернет имя str YourTable.

info(strFmt("%1" , tableId2PName(123456))); -> VideoStamp the name.

Я использовал информацию в https://msdn.microsoft.com/en-us/library/aa498759.aspx

Я надеюсь на полезные, приветствия!

Ответ 4

В AOT перейдите к Системной документации node. В таблицах node найдите SqlDictionary и откройте его в браузере таблицы. Отфильтруйте столбец TabId с вашим идентификатором.

Ответ 5

В AOT перейдите к Системной документации node. В таблицах node найдите SqlDictionary и щелкните правой кнопкой мыши и откройте его в браузере таблицы. Отфильтруйте столбец TabId с вашим идентификатором и fieldid == 0, его имя даст вам имя таблицы.

Ответ 6

Если вам нужно имя системной таблицы AX, вы можете использовать метод tableId2name или DictTable.name.

Если вам нужно имя таблицы SQL, вы используете метод DictTable.name с первым аргументом DbBackend::Sql

Пример:

print new DictTable(tableNum(DirPartyTable)).name(DbBackend::Sql);
print new DictTable(tableNum(OMOperatingUnit)).name(DbBackend::Sql);
pause;

// result:
// DIRPARTYTABLE
// DIRPARTYTABLE

Ответ 7

Или вы можете попробовать:

select  Name, AxId
from MicrosoftDynamicsAX_model.dbo.ModelElement (nolock) 
where ElementType = 44
order by AxId