Dynamics AX Blog - Beiträge vom 1 November 2009
Geänderte oder neue Methoden von Tabellen auflisten
01.11.2009Microsoft Dynamics AX (Axapta)
Im folgenden findet ihr einen Job, der in einer adaptierten AX 2009er-Applikation alle Tabellenmethoden auflistet, die entweder erstellt wurden oder gegenüber dem Standard verändert wurden.
static void ListChangedOrCreatedTableMethods(Args _args)
{
SysDictTable SysDictTable;
treeNode treeNode;
treeNode treeNodeBase;
treeNode treeNodeCustom;
treeNode treeNodeTables;
UtilEntryLevel CurrentUtilEntryLevel;
#AOT
;
treeNodeTables = TreeNode::findNode(#TablesPath + #AOTRootPath);
treeNodeTables = treeNodeTables.AOTfirstChild();
setPrefix('List changed/created tablemethods');
while(treeNodeTables)
{
SysDictTable = SysDictTable::newTableId(tableName2Id(treeNodeTables.treeNodeName()));
setPrefix(SysDictTable.name());
treeNode = TreeNode::findNode(#TablesPath + #AOTRootPath + SysDictTable.name() + #AOTRootPath + "Methods");
treeNode = treeNode.AOTfirstChild();
while(treeNode)
{
treeNodeBase = null;
treeNodeCustom = null;
// Partner
if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::bup);
if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::bus);
// Solutions
if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::sl3);
if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::sl2);
if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::sl1);
// Hotfix
if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::hfx);
// Microsoft
if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::glp);
if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::gls);
if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::syp);
if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::sys);
// Custom layers
if( !treeNodeCustom) { treeNodeCustom = treeNode.getNodeInLayer(UtilEntryLevel::vap); CurrentUtilEntryLevel = UtilEntryLevel::vap; }
if( !treeNodeCustom) { treeNodeCustom = treeNode.getNodeInLayer(UtilEntryLevel::var); CurrentUtilEntryLevel = UtilEntryLevel::var; }
if( !treeNodeCustom) { treeNodeCustom = treeNode.getNodeInLayer(UtilEntryLevel::cup); CurrentUtilEntryLevel = UtilEntryLevel::cup; }
if( !treeNodeCustom) { treeNodeCustom = treeNode.getNodeInLayer(UtilEntryLevel::cus); CurrentUtilEntryLevel = UtilEntryLevel::cus; }
if( !treeNodeCustom) { treeNodeCustom = treeNode.getNodeInLayer(UtilEntryLevel::usp); CurrentUtilEntryLevel = UtilEntryLevel::usp; }
if( !treeNodeCustom) { treeNodeCustom = treeNode.getNodeInLayer(UtilEntryLevel::usr); CurrentUtilEntryLevel = UtilEntryLevel::usr; }
// Changed methods
if(treeNodeBase)
{
if( treeNodeBase.AOTgetSource() != treeNode.AOTgetSource())
{
warning(strFmt( "Method '%1' was changed in layer '%2'.",
treeNode.treeNodeName(),
enum2str(CurrentUtilEntryLevel)));
}
}
// New created methods
if( !treeNodeBase)
{
info(strFmt( "Method '%1' was created in layer '%2'.",
treeNode.treeNodeName(),
enum2str(CurrentUtilEntryLevel)));
}
treeNode = treeNode.AOTnextSibling();
}
treeNodeTables = treeNodeTables.AOTnextSibling();
}
}
Ein ähnlicher Job der prinzipiell das Gleiche erledigt, allerdings für alle Klassenmethoden, ist hier zu finden. |
|
|
|
|
|
|

Im folgenden findet ihr einen Job, der in einer adaptierten Applikation alle Methoden von Klassen auflistet, die entweder erstellt wurden oder gegenüber dem Standard verändert wurden.
static void ListChangedOrCreatedClassesMethods(Args _args) { SysDictClass SysDictClass; treeNode treeNode; treeNode treeNodeBase; treeNode treeNodeCustom; treeNode treeNodeClasses; UtilEntryLevel CurrentUtilEntryLevel; #AOT ; treeNodeClasses = TreeNode::findNode(#ClassesPath + #AOTRootPath); treeNodeClasses = treeNodeClasses.AOTfirstChild(); SysDictClass = new SysDictClass((treeNodeClasses.applObjectId())); setPrefix('List changed/created classes'); while(treeNodeClasses) { SysDictClass = new SysDictClass((treeNodeClasses.applObjectId())); setPrefix(SysDictClass.name()); treeNode = TreeNode::findNode(#ClassesPath + #AOTRootPath + SysDictClass.name() + #AOTRootPath); treeNode = treeNode.AOTfirstChild(); while(treeNode) { treeNodeBase = null; treeNodeCustom = null; // Partner if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::bup); if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::bus); // Solutions if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::sl3); if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::sl2); if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::sl1); // Hotfix if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::hfx); // Microsoft if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::glp); if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::gls); if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::syp); if( !treeNodeBase) treeNodeBase = treeNode.getNodeInLayer(UtilEntryLevel::sys); // Custom layers if( !treeNodeCustom) { treeNodeCustom = treeNode.getNodeInLayer(UtilEntryLevel::vap); CurrentUtilEntryLevel = UtilEntryLevel::vap; } if( !treeNodeCustom) { treeNodeCustom = treeNode.getNodeInLayer(UtilEntryLevel::var); CurrentUtilEntryLevel = UtilEntryLevel::var; } if( !treeNodeCustom) { treeNodeCustom = treeNode.getNodeInLayer(UtilEntryLevel::cup); CurrentUtilEntryLevel = UtilEntryLevel::cup; } if( !treeNodeCustom) { treeNodeCustom = treeNode.getNodeInLayer(UtilEntryLevel::cus); CurrentUtilEntryLevel = UtilEntryLevel::cus; } if( !treeNodeCustom) { treeNodeCustom = treeNode.getNodeInLayer(UtilEntryLevel::usp); CurrentUtilEntryLevel = UtilEntryLevel::usp; } if( !treeNodeCustom) { treeNodeCustom = treeNode.getNodeInLayer(UtilEntryLevel::usr); CurrentUtilEntryLevel = UtilEntryLevel::usr; } // Changed methods if(treeNodeBase) { if( treeNodeBase.AOTgetSource() != treeNode.AOTgetSource()) { warning(strFmt( "Method '%1' was changed in layer '%2'.", treeNode.treeNodeName(), enum2str(CurrentUtilEntryLevel))); } } // New created methods if( !treeNodeBase) { info(strFmt( "Method '%1' was created in layer '%2'.", treeNode.treeNodeName(), enum2str(CurrentUtilEntryLevel))); } treeNode = treeNode.AOTnextSibling(); } treeNodeClasses = treeNodeClasses.AOTnextSibling(); } }Ein ähnlicher Job der prinzipiell das Gleiche erledigt, allerdings für alle Tabellenmethoden, ist hier zu finden.