AX允许将字段组(例如,维度)定义为扩展数据类型中的数组。如何获取数组元素信息,例如标签和基本类型?
代码:
tID = dict.tableName2Id('CustTable');
counter = 0;
dt = new DictTable(tID);
if (dt)
{
counter = dt.fieldNext(counter);
while (counter)
{
df = dt.fieldObject(counter);
arrSize = df.arraySize();
if (df && arrSize > 1)
{
// Field group, get array elements and types ??
}
counter = dt.fieldNext(counter);
}
}
提前致谢。
答案 0 :(得分:2)
我不确定字段组的含义,但Array的每个成员都属于同一类型。
df.type();
或
df.TypeId()
取决于您要查找的“类型”。
获取标签传递数组元素的编号
for(i=i;i<=arrSize;i++)
{
print df.label(i);
}
异常这在msdn http://msdn.microsoft.com/en-us/library/aa556779(v=ax.50).aspx
中有详细记载答案 1 :(得分:1)
我在Ax2012工作,我需要一个转换字段组来设置的解决方案。 我希望能有所帮助。
private Set fieldGroupToSet(TableId _tableId, FieldGroupName _fieldGroupName)
{
Set retSet;
DictTable dTable;
DictField dField;
DictFieldGroup dFieldGroup;
int fieldId;
int counter;
int fieldCnt;
;
dTable = new DictTable(_tableId);
retSet = new Set(Types::String);
if (dTable)
{
for(counter = 1; counter <= dTable.fieldGroupCnt(); counter++)
{
if(_fieldGroupName == dTable.fieldGroup(counter))
{
dFieldGroup = new DictFieldGroup(_tableId, _fieldGroupName);
if(dFieldGroup)
{
for (fieldCnt=1; fieldCnt <= dFieldGroup.numberOfFields(); fieldCnt++)
{
fieldId = dFieldGroup.field(fieldCnt);
dField = new DictField(_tableId, FieldId);
if(dField)
{
retSet.add(dField.name());
}
}
}
}
}
}
return retSet;
}