通过labelid查找fieldId

时间:2018-04-16 11:00:35

标签: axapta x++ dynamics-ax-2012-r2

我想询问是否可以通过该字段的labelId找到特定表的fieldId。

先谢谢

2 个答案:

答案 0 :(得分:3)

使用交叉参考。通过界面:

  1. 工具\标签\标签编辑器
  2. Find what字段
  3. 中输入LabelID
  4. 点击Used by按钮
  5. 在列表中查找表格,地图或视图
  6. 您之前可以生成交叉引用(工具\交叉引用\定期\更新)

    Used by

答案 1 :(得分:2)

可能的解决方案之一:

static void FindTableFieldsByLabel(Args _args)
{
    TableId         tableId     = tableNum(AccountingDistribution);
    str             findLabel   = literalStr('@SYS132687');
    SysDictTable    dictTable;
    SysDictField    dictField;
    FieldId         fieldId;

    dictTable   = new SysDictTable(tableId);
    fieldId     = dictTable.fieldNext(0);

    while (fieldId)
    {
        dictField = dictTable.fieldObject(fieldId);

        if (dictField.isSql() && !dictField.isSystem()
            && dictField.labelLabel() == findLabel)
        {
            info(strFmt('Field name: %1', dictField.name()));
        }

        fieldId = dictTable.fieldNext(fieldId);
    }

    info('Job completed');
}

如果要忽略扩展数据类型而不是表字段上设置的标签,也可以使用dictField.labelDefined()