Quantcast
Channel: Microsoft Dynamics AX Forum - Recent Threads
Viewing all articles
Browse latest Browse all 72043

Dynamically add new AOT element on Runtime

$
0
0

Is it allowed to add new AOT element during runtime in AX 2012 R3? I'm trying to add a new menu items on the SalesTableListPage Form when a certain table is updated. I have this new table and every data on the table has its own menu item on the AOT. So when you add  a record on the new table a new menu item is also created dynamically on the AOT. I actually have the code for this but it only works when I run the script on the Job in development workspace. But when I placed the script on the method of the table I got the below error. 

Below is my actual code.

Before running the code I add this Menubutton to make sure that the path exist.

[MenuButton:NewGroupMenu]

under

(#FormsDesignPath,"SalesTableListPage") + "\\[ActionPane:ActionPane]\\[ActionPaneTab:SalesOrder]\\[ButtonGroup:NewGroup]\\

static void insert()
{

    #AOT
    TreeNode    treeMenuItem;
    TreeNode    treeDisplayMenu;
    str         newDisplayMenuProp;
    str         menuItemName;

    TreeNode    treeSalesTableListPage;
    TreeNode    treeNewGroupMenu;
    TreeNode    treeNodeNewMenuItem;
    
    TreeNode    treeDisPlayMenuDrop;
    str         newTreeNodeMenuItemProp;
    ;

    
    /*Add new Menu Item Display to AOT*/

    menuItemName        = 'MES_SalesTableForNewTEST';
    treeMenuItem        = TreeNode::findNode(#MenuItemsDisplayPath);

    treeMenuItem.AOTadd(menuItemName);

    treeDisplaymenu     = TreeNode::findNode(#MenuItemsDisplayPath + "\\" + menuItemName);

    newDisplayMenuProp  = treeDisplaymenu.AOTgetProperties();

    if (treeDisplayMenu)
    {

        /*Set property of the new Menu Item*/
        
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'Label',"@SYS114628");
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'HelpText',"@SYS27579");
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'ObjectType','Form');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'Object','SalesTable');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'Parameters','TEST');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'EnumTypeParameter','FormOpenMode');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'EnumParameter','ForNew');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'ReadPermissions','Auto');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'UpdatePermissions','Auto');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'CreatePermissions','Auto');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'CorrectPermissions','Auto');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'DeletePermissions','Auto');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'LinkedPermissionType','Auto');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'RunOn','Called from');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'ConfigurationKey','LogisticsBasic');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'ExtendedDataSecurity','No');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'ViewUserLicense','Functional');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'MaintainUserLicense','Functional');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'MultiSelect','No');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'WebSecureTransaction','No');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'ImageLocation','File');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'DisabledImageLocation','File');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'WebMenuItemName','EPSalesTableCreate');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'OpenMode','Auto');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'CopyCallerQuery','Auto');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'FormViewOption','Auto');
        newDisplayMenuProp = setProperty(newDisplayMenuProp,'NeedsRecord','No');
        /*End property*/

        treeDisPlayMenu.AOTsetProperties(newDisplayMenuProp);

        treeDisplayMenu.AOTsave();
    }

    /*End AOT Add*/

    /*Add Menu Item to SalesOrder Edit List Page*/

    treeSalesTableListPage = TreeNode::findNode(#FormsPath + "\\SalesTableListPage");
    treeNewGroupMenu = TreeNode::findNode(strFmt(#FormsDesignPath,"SalesTableListPage") + "\\[ActionPane:ActionPane]\\[ActionPaneTab:SalesOrder]\\[ButtonGroup:NewGroup]\\[MenuButton:NewGroupMenu]");
    treeDisPlayMenuDrop = TreeNode::findNode(#MenuItemsDisplayPath + "\\" + menuItemName);
    
    if(treeNewGroupMenu)
    {
        treeNewGroupMenu.AOTDrop(treeDisplaymenu);
        treeNodeNewMenuItem = TreeNode::findNode(strFmt(#FormsDesignPath,"SalesTableListPage") + "\\[ActionPane:ActionPane]\\[ActionPaneTab:SalesOrder]\\[ButtonGroup:NewGroup]\\[MenuButton:NewGroupMenu]\\MenuItemButton:" + menuItemName);
        newTreeNodeMenuItemProp  = treeNodeNewMenuItem.AOTgetProperties();

        newTreeNodeMenuItemProp = setProperty(newTreeNodeMenuItemProp,'Name',menuItemName);
        newTreeNodeMenuItemProp = setProperty(newTreeNodeMenuItemProp,'Type','MenuFunctionButton');
        newTreeNodeMenuItemProp = setProperty(newTreeNodeMenuItemProp,'AutoDeclaration','Yes');
        newTreeNodeMenuItemProp = setProperty(newTreeNodeMenuItemProp,'Text','TEST');
        newTreeNodeMenuItemProp = setProperty(newTreeNodeMenuItemProp,'NormalImage','10874');
        newTreeNodeMenuItemProp = setProperty(newTreeNodeMenuItemProp,'ImageLocation','EmbeddedResource');
        newTreeNodeMenuItemProp = setProperty(newTreeNodeMenuItemProp,'ShowShortCut','No');
        newTreeNodeMenuItemProp = setProperty(newTreeNodeMenuItemProp,'MultiSelect','Yes');
        newTreeNodeMenuItemProp = setProperty(newTreeNodeMenuItemProp,'Big','Yes');
        newTreeNodeMenuItemProp = setProperty(newTreeNodeMenuItemProp,'Primary','Yes');
        newTreeNodeMenuItemProp = setProperty(newTreeNodeMenuItemProp,'DataSource','SalesTable');
        newTreeNodeMenuItemProp = setProperty(newTreeNodeMenuItemProp,'OpenMode','New');
        newTreeNodeMenuItemProp = setProperty(newTreeNodeMenuItemProp,'CopyCallerQuery','Yes');

        treeNodeNewMenuItem.AOTsetProperties(newTreeNodeMenuItemProp);
        treeSalesTableListPage.AOTsave();

    }

    /*End SalesTable ListPage*/

}

Viewing all articles
Browse latest Browse all 72043

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>