如何查询对象 UtilElements 和 UtilIdElements 以获取正确的结果?

发布于 2024-11-10 08:27:48 字数 1422 浏览 0 评论 0原文

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

屏幕截图 #1 显示 syssyp 层中存在 SalesFormLetter 类、glsglpcup。但是,当我运行以下代码时,输​​出显示该对象仅存在于 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:

SalesFormLetter

屏幕截图 #2:

输出

I am having issues with querying UtilElements and UtilIdElements in Dynamics AX 2009.

Screenshot #1 shows the class SalesFormLetter being present in the layers sys, syp, gls, glp and cup. However, when I run the following the code the output displays that the object exists only in the sys layer. Output of this code is given in screenshot #2.

Am I doing something wrong in this code? I would like to know all the layers in which a given object is present.

Thanks in advance.

    #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));
    }

Screenshot #1:

SalesFormLetter

Screenshot #2:

Output

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

习惯成性 2024-11-17 08:27:48

还涉及其他元素类型,例如 UtilElementType::ClassStaticMethodUtilElementType::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 有点作弊以突出显示该类。类本身没有改变,但它的方法之一改变了。

There are other element types involved like UtilElementType::ClassStaticMethod or UtilElementType::ClassInstanceMethod. Try running this:

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));
    }
}

Actually the AOT is cheating a little to highlight the class. The class itself is not changed, but one of its methods is.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文