1

我在 Dynamics AX 2009 中查询 UtilElements 和 UtilIdElements 时遇到问题。

屏幕截图#1显示了 SalesFormLetter 类出现在图层syssypglsglpcup。但是,当我运行以下代码时,输​​出显示该对象仅存在于sys图层中。此代码的输出在屏幕截图#2中给出。

我在这段代码中做错了吗?我想知道给定对象所在的所有层。

提前致谢。

    #AOT

    UtilElements        utilElements;
    UtilIdElements      utilIdElements;
    ;

    info('Querying UtilElements...');

    while
        select      utilElements
        where       utilElements.name       == 'SalesFormLetter'
        &&          utilElements.recordType == UtilElementType::Class
    {
        info('Layer: ' + enum2str(utilElements.utilLevel) + 
                ', Object type: ' + enum2str(utilElements.recordType));
    }


    info('Querying UtilIdElements...');

    while
        select      utilIdElements
        where       utilIdElements.name         == 'SalesFormLetter'
        &&          utilIdElements.recordType   == UtilElementType::Class
    {
        info('Layer: ' + enum2str(utilIdElements.utilLevel) + 
                ', Object type: ' + enum2str(utilIdElements.recordType));
    }

截图#1:

销售表格信

截图#2:

输出

4

1 回答 1

2

还涉及其他元素类型,例如UtilElementType::ClassStaticMethodor UtilElementType::ClassInstanceMethod。尝试运行这个:

static void UtilElementTest(Args _args)
{
    UtilElements        utilElements;
    ;
    setPrefix('Querying UtilElements...');
    while select utilElements
        where utilElements.parentId == classNum(SalesFormLetter)
        // && utilElements.recordType == UtilElementType::ClassInstanceMethod
           && utilElements.utilLevel != UtilEntryLevel::sys
    {
        info('Name: ' + utilElements.name +
             ', Layer: ' + enum2str(utilElements.utilLevel) +
             ', Object type: ' + enum2str(utilElements.recordType));
    }
}

实际上,AOT 有点作弊以突出课程。类本身没有改变,但它的方法之一是。

于 2011-05-26T06:55:25.477 回答