Dynamics AX Blog - Dynamics AX 2012 - aot
RSS-Feed dieser Version
Namen der Shared Projects nach einem String durchsuchenUm sich alle (Shared-)Projekte ausgeben zu lassen, die einen bestimmten Text im Namen tragen, kann man den folgenden Code verwenden. static void searchProjectName(Args _args) { ProjectNode projectNode; #AOTExport projectNode = infolog.projectRootNode(); projectNode = projectNode.AOTfindChild(#expProjectShared); projectNode = projectNode.AOTfirstChild(); while(projectNode) { setPrefix(projectNode.name()); if(strScan(projectNode.name(), "BR_", 0, 60)) { info(projectNode.name()); } projectNode = projectNode.AOTnextSibling(); } } |
Favoriten in Entwicklungsumgebung auflistenMit Hilfe des hier gezeigten Jobs kann man die Favoriten eines Benutzers auslesen und sich ausgeben lassen. static void listFavoritesOfCurrentUser(Args _args) { TreeNode treeNode; TreeNodeIterator iterator; TreeNode newTreeNode; int level; #AOT void loopChilds(TreeNode _treeNode) { level++; while(_treeNode) { info(strRep(" ", level-1) + any2str(SysLabel::labelId2String2(_treeNode.AOTname(), Global::currentUserLanguage()))); loopChilds(_treeNode.AOTfirstChild()); level--; _treeNode = _treeNode.AOTnextSibling(); } } treeNode = infolog.userNode(); iterator = treeNode.AOTiterator(); treeNode = iterator.next(); if (treeNode) { treeNode = treeNode.AOTfirstChild(); if (treeNode) { setPrefix(treeNode.AOTname()); loopChilds(treeNode.AOTfirstChild()); } } } |
Geänderte Objekte innerhalb eines Layers ausgeben, die noch nicht zur Versionskontrolle hinzugefügt wurdenMithilfe der SysModel*-Tabellen kann man in Dynamics AX den AOT nach bestimmten Objekten bzw. deren Eigenschaften durchsuchen. Ein Beispiel dazu habe ich bereits hier gepostet. |
Geänderte Objekte innerhalb eines Layers ausgebenUm den AOT nach bestimmten Objekten zu durchsuchen, kann man in AX die TreeNode-Klasse verwende. Einige Beispiele dazu habe ich hier ja auch schon in der Vergangenheit gepostet. |
Alle Tabellen ermitteln, bei denen eine bestimmte Eigenschaft gesetzt istDer hier vorgestellte Job gibt über das Infolog alle Tabellen aus, bei welchen eine bestimmte Eigenschaft - im Beispiel wird die Property ModifiedBy abgefragt - static void findTablesWithSpecificProperty(Args _args) { TreeNode treeNodeTables; TreeNode treeNode; str prop; str properties; #aot #Properties; treeNodeTables = TreeNode::findNode(#TablesPath + #AOTRootPath); treeNodeTables = treeNodeTables.AOTfirstChild(); while(treeNodeTables) { properties = treeNodeTables.AOTgetProperties(); prop = Global::findProperty(properties,#PropertyModifiedBy); if(prop == "yes") { info(treeNodeTables.AOTname()); } treeNodeTables = treeNodeTables.AOTnextSibling(); } } |
Objekte per Code zu einem Projekt hinzufügenNachstehend ein kurzer Job, mit dessen Hilfe man AOT-Elemente zu einem bestehenden Shared Project hinzufügen kann. static void AddNodeToSharedProject(Args _args)
{ projectNode projectNode; TreeNode treeNode; #AOT #AOTExport projectNode = infolog.projectRootNode(); projectNode = projectNode.AOTfindChild(#expProjectShared); projectNode = projectNode.AOTfindChild('MyProject'); // Add objects treenode = TreeNode::findNode(#TablesPath+'\\'+tableid2name(tablenum(CustGroup))); projectNode.addNode(treenode); treenode = TreeNode::findNode(#TablesPath+'\\'+tableid2name(tablenum(VendGroup))); projectNode.addNode(treenode); treenode = TreeNode::findNode(#ClassesPath+'\\'+classStr(PriceDisc)); projectNode.addNode(treenode); } Das geänderte Projekt sieht beispielsweise wie folgt aus: |
|
|
|
|
|
|
Mit Hilfe des hier gezeigten Jobs kann man per Code ein Shared Project erstellen, Objekte hinzufügen und diese dabei in Gruppen je Objekttyp einordnen lassen.
Auf die gleiche Art & Weise kann man natürlich auch ein Private Project erstellen, einfach die Vorkommnisse von Shared durch Private ersetzen.
Das erstellte Projekt sieht wie folgt aus: