在AX中,每一种数据类型都有对应的ID, 系统也提供了很多函数用于在类型名字,标签(label)以及值之间转换。
以枚举类型ABC为例:
Type | Name | ID | Label | Value |
Base Enum | ABC | 1 | Category |
|
Element | None |
| None | 0 |
| A |
| A | 1 |
| B |
| B | 2 |
| C |
| C | 3 |
方法名 | 描述 | 例子 |
EnumName2ID | 通过Enum Name获取ID | Int EnumName2ID(“ABC”) 结果:1 |
enumid2name | 通过Enum ID获取Name | Identifiername enumid2name(1) 结果:ABC |
enumid2pname | 通过Enum ID获取Label | Identifiername enumid2pname(1) 结果:Category |
enum2symbol | 通过Enum Name和Element的Value获取Element的Name | Str enum2symbol(EnumName2ID("ABC"),1) 结果:A |
enum2value | 通过枚举值获取对应Element的label | Str enum2value(ABC::A) 结果:A |
Enum2int | 通过枚举值获取对应Element的value | Int enum2int(ABC::A) 结果:1 |
以类型Dimension为例:
Type Name | ArrayIndex | Name | Label | ID |
Dimension | 1 | Dimension | Department | 132 |
| 2 | Cost center | Cost center | 132 |
| 3 | Purpose | Purpose | 132 |
方法名 | 描述 | 例子 |
extendedTypeName2Id | 通过Type Name获取ID | extendedTypeId extendedTypeName2Id (“Dimension”) 结果:132 |
ExtendedTypeId2name | 通过ID获取Type Name | identifiername ExtendedTypeId2name(132) 结果:Dimension |
extendedTypeId2pname | 通过ID获取Label | identifiername extendedTypeId2pname(132) 结果:Department |
extendedTypeId2Type | 通过Id获取Type | Types extendedTypeId2Type(132) 结果:Types::String |
以SalesTable中的Dimension为例:
Field Name | Id | Label |
Dimension | 23 | Department |
ExtendedDataType | ArrayIndex | Name | Label | ID | extId in table |
Dimension | 1 | Dimension | Department | 132 | 65559 |
| 2 | Cost center | Cost center | 132 | 131095 |
| 3 | Purpose | Purpose | 132 | 196631 |
Dimension本是是一个字符串数组的类型,当在SalesTable中加入一个Dimension类型的字段时,这个字段的ID是23. 由于这个字段是一个数组,对应每一个元素,对于表SalesTable都有唯一的extendedId,这个extendedID和ExtendedDataType上的ID是无关的。ExtendedId是按这样的原则构成的:
前16位 | 后16位 |
ArrayIndex | Field ID in table |
ExtendedId一般是32位的,前16位的值是该元素在数组中的Index,后16位是该元素所在字段(即这个数组)在表中的ID。以Dimension的第一个元素为例,前16位的值是:1,后16位的值是23,整个32位数的值是65559.
ExtendedId会在 SysQueryForm, 系统标准的使用Excel导入导出数据时被用到(当然还有很多其他地方也会用到),所以了解ExtendedIid的构成是很有必要的。
(在以下表格中,字段指Dimension,元素指Dimension中的数组元素)
方法名 | 描述 | 例子 |
FieldExt2Id | 通过extendedID获取字段的ID | fieldId FieldExt2Id(65559) fieldId FieldExt2Id(131095) fieldId FieldExt2Id(196631) 结果:23 |
FieldExt2Idx | 通过extendedID获取元素的Index | int FieldExt2Idx(65559) 结果:1 int FieldExt2Idx(131095) 结果:2 int FieldExt2Idx(196631) 结果:3 |
FieldId2Ext | 通过字段的ID和元素的index获取元素的extendedId | fieldId FieldId2Ext(23, 1) 结果:65559 fieldId FieldId2Ext(23, 2) 结果:131095 fieldId FieldId2Ext(23, 3) 结果:196631 |
FieldLabelValue | 查看字段的label,第三个参数只是一个显示的作用,返回的结果是: 字段的label : 第三个参数 | str FieldLabelValue(tablenum(SalesTable), fieldnum(SalesTable,Dimension), ’anything’) 结果:Department:anything |
Fieldnum | 通过表名和字段名获取字段ID | fielded fieldnum(SalesTable,Dimension) 结果:23 |