Shared Project mit X++ erstellen II

In einem früheren Beitrag habe ich ja hier schon einen Job veröffentlicht, mit dessen Hilfe man sich per X++ ein Shared Project erstellen kann. Basierend auf der neu entdeckten Funktion selectMultiple habe ich diesen nun etwas erweitert, der Benutzer hat mit dessen Hilfe nun die Möglichkeit, ein Shared Project zu erstellen und dabei für die aktuell benötigten Datentypen eigene Gruppenknoten innerhalb dieses Projektes zu erstellen.

static void CreateSharedProjectUsingSelectMultiple(Args _args)
{
    DictEnum            DictEnum;
    container           conValues;
    container           conSelectedValues;
    container           conSelectMultiple;
    int                 i;
    projectNode         projectNode;
    projectGroupNode    projectGroupNode;
    projectNode         myProjectNode;
    treeNodeName        nameOfProject;
    groupNodeType       groupNodeType;
    treeNodeName        groupNodeName;
    dialog              dialog;
    dialogField         dfProjectName;
    #AOTExport
    ;
    // Create dialog
    dialog = new dialog();
    dfProjectName = dialog.addFieldValue(typeId(treeNodeName), "NameOfproject", "Name of project");
    if( !dialog.run())
    {
        return;
    }
    nameOfProject = dfProjectName.value() ? dfProjectName.value() : "Unknown";
    
    // Add available values to container
    DictEnum = new DictEnum(enumName2Id(identifierStr(GroupNodeType)));
    for(i=1;i<DictEnum.values();i++)
    {
        conValues = conIns(conValues, conLen(conValues)+1, [DictEnum.index2Label(i), i, false]);
    }
   
    // Call selectMultiple
    conSelectMultiple = selectMultiple("Please select", "Please select the needed project-groups", conValues);
    conSelectedValues = conPeek(conSelectMultiple, 2);
    if( !conPeek(conSelectMultiple, 1))
    {
        return;
    }

    // Create shared project
    projectNode    = infolog.projectRootNode();
    projectNode    = projectNode.AOTfindChild(#expProjectShared);
    myProjectNode  = projectNode.AOTfindChild(nameOfProject);

    if( !myProjectNode)
    {
        myProjectNode = projectNode.AOTadd(nameOfProject);
        myProjectNode.AOTsave();
    }

    myProjectNode     = myProjectNode.getRunNode();

    if(conPeek(conSelectMultiple, 1))
    {
        for (i=1; i<=conLen(conSelectedValues); i++)
        {
           
            groupNodeName = DictEnum.index2Label(conPeek(conSelectedValues, i));
            projectGroupNode = myProjectNode.AOTfindChild(groupNodeName);
            if( !projectGroupNode)
            {
                myProjectNode.AOTadd(groupNodeName);
                projectGroupNode = myProjectNode.AOTfindChild(groupNodeName);
                projectGroupNode.projectGroupType(DictEnum.name2Value(groupNodeName));
                myProjectNode.AOTsave();
            }
        }
    }

    projectGroupNode.AOTsave();

    myProjectNode.AOTsave();
    myProjectNode.AOTrefresh();
    myProjectNode.AOTrun();
}

Obiger Code funktioniert meines Wissens nach in Dynamics AX 4.0 und Dynamics AX 2009.

 

 

Dieser Beitrag bezieht sich auf die Versionen:
Dynamics AX 4.0, Dynamics AX 2009

Kommentar hinzufügen
 
 

 

 
 
 
Beiträge des aktuellen Monats
März 2021
MoDiMiDoFrSaSo
1234567
891011121314
15161718192021
22232425262728
293031 
 
© 2006-2021 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu