确定字段是否为系统字段

时间:2012-04-17 13:52:48

标签: axapta dynamics-ax-2009 x++

我想知道是否有一种聪明/简短的方法来确定表中的字段是否是从系统生成的。我只有TableNum和FieldNum作为变量(没有硬编码,只有动态值),我希望能够写出这样的东西(伪代码):

if( Sys::isSystemField(tableId, fieldId) )
{
    //...
} 

而不是:

//...
str fieldName;
//...
;
//...

fieldName = dictTable.fieldName(fieldId);

if(fieldName == "modifiedDateTime"
    || fieldName == "DEL_ModifiedTime"
    || fieldName == "modifiedBy"
    || //etc...)
{

//...

如果没有办法做我正在寻找的事情,我将会写这个。希望有人能提供帮助,遗憾的是我在文档中找不到任何相关信息。

干杯

1 个答案:

答案 0 :(得分:3)

使用isSysId全局方法。

例如,在Global::buf2buf

中使用
static void buf2Buf(Common _from, Common  _to)
{
    DictTable   dictTable = new DictTable(_from.TableId);
    fieldId     fieldId   = dictTable.fieldNext(0);
    while (fieldId && ! isSysId(fieldId))
    {
        _to.(fieldId)   = _from.(fieldId);
        fieldId         = dictTable.fieldNext(fieldId);
    }
}