1

Dynamics AX 2009 での UtilElements と UtilIdElements のクエリで問題が発生しています。

スクリーンショット#1sysは、レイヤー、sypglsglpおよびに存在するクラス SalesFormLetter を示していcupます。ただし、次のコードを実行すると、オブジェクトが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::ClassStaticMethodまたはのような他の要素タイプが関係してい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はクラスを強調するために少し浮気しています。クラス自体は変更されませんが、そのメソッドの1つは変更されます。

于 2011-05-26T06:55:25.477 に答える