首页 > 解决方案 > 如何在 D365 FO 上通过 x++ 代码添加 AOT 对象

问题描述

我有一个关于在 D365 FO 上通过 X++ 代码添加 AOT 对象的问题。目标是通过 x++ 代码自动创建安全职责,而不是手动创建

我实际上正在尝试使用以下代码,

public static void main (Args _args)
{
    #AOT
    str objectName  = 'MySpecTable' ;
    TreeNode    nodePath = TreeNode::findNode(#TablesPath);
    TreeNode    nodePath1;

   nodePath1 = nodePath.AOTfindChild(objectName);

    if(nodePath)
    {
        nodePath.AOTadd(objectName);
        //nodePath.AOTsave();
        info("Sec privilege well added");
    }
    else
    {
        nodePath.AOTadd(objectName);
        nodePath.AOTsave();
        info("Table well added");
    }
}

但我收到以下错误,

X++ 错误

有什么方法可以实现这个目标。能够通过代码添加它们。

谢谢

标签: axaptamicrosoft-dynamicsx++dynamics-365-operations

解决方案


这是不可能的,因为与以前的 AX 版本相比,代码和元数据在运行时动态解释,F&O 只执行预编译的程序集(就像任何其他 .NET 应用程序一样)。同样,您无法在正在运行的 .NET 程序集上创建 C# 类,您也无法在 Finance and Operations 应用程序中执行此操作。

必需的安全工件必须在 Visual Studio 中正确创建、编译并部署到运行时环境(UAT、PROD 或其他),然后安全配置本身(在它们之间或与用户之间链接这些工件)现在存储在数据库中,所以它可以直接在安全设置表单中完成。它也可以与标准表单中的数据实体一起导出和导入。

您可以做的是创建一个 Visual Studio 扩展来自动创建此类对象,以便可以正确编译和部署它们。


推荐阅读