Dynamics AX Blog - Microsoft Dynamics AX (Axapta) - Seite 33

In den letzten Jahren, in denen ich mich fast hauptsächlich mit der Entwicklung im Umfeld von Microsoft Dynamics AX (vormals Axapta) beschäftigt habe, ist das eine oder andere Code-Fragment entstanden, von dem ich mir vorstellen könnte, daß es auch für andere AX-Entwickler ganz nützlich sein könnte. Aber auch Tips und Tricks zu dem mächtigen ERP-System werde ich in dieser Kategorie präsentieren.
RSS-Feed dieser KategorieFormular als Dialog verwenden
06.04.2012Microsoft Dynamics AX (Axapta)
Im AOT befinden sich einige tutorial-Objekte, die dem Entwickler dabei helfen können, die eine oder andere Anforderung zu lösen. Eine dieser Klassen ist die Klasse tutorial_RunbaseForm, die erklärt wie man statt einem Dialog ein eigens erstelltes Formular als Dialog verwendet. Auf Basis dieses Turorials habe ich in Dynamics AX 2012 eine Anforderung wie folgt gelöst: |
Event-Handling in Dynamics AX 2012
25.03.2012Microsoft Dynamics AX (Axapta)
Eine wichtige Neuerung von AX 2012 sind die sogenannten Event-Handler. Diese Event-Handler sind eine elegante Möglichkeit, die Funktionalität von AX 2012 zu erweitern, ohne dabei den Standardcode zu verändern. Dies soll vor allem spätere Releaseupdates von Dynamics AX 2012 erheblich erleichtern. Prinzipiell unterscheidet man dabei zwischen Event-Handler die vor (PRE) bzw. nach (POST) dem Originalcode ausgeführt werden sollen, wobei jede der beiden Varianten ihre eigenen Möglichkeiten bieten. Pre-Event-Handler können die Original-Parameter der auslösenden Methode verändern wogegen Post-Event-Handler den Rückgabewert der auslösenden Methode verändern können. Die folgenden drei Beispiele sollen die Verwendung dieser Event-Handler verdeutlichen. Beispiel 1: Es soll der Inhalt des Feldes Suchbegriff der Artikeldetails dahingehend geprüft werden, daß zumindest 5 Zeichen eingegeben wurden. |
Abfragen der aktiven Lagerungsdimensionen
16.03.2012Microsoft Dynamics AX (Axapta)
Um für einen Artikel über X++ zu ermitteln, ob eine bestimmte Lagerungsdimension verwendet wird, gibt es abhängig von der verwendeten AX-Version verschiedene Ansätze. In den beiden Beispielen wird ermittelt, ob die Dimension Palettennummer aktiv ist: Dynamics AX 2009 inventDimSetup::find(inventTable::find(_itemId).DimGroupId,
fieldnum(InventDim, wmsPalletId)).Active Dynamics AX 2012 EcoResDimensionGroupSetup::isInventoryDimensionActiveForItem( _itemId, fieldNum(InventDim, wmsPalletId)) |
Funktion num2expstr
10.03.2012Microsoft Dynamics AX (Axapta)
Vor kurzem lief mir eine Fehlermeldung in Dynamics AX über den Weg die vermuten lies, daß in einer Tabelle Werte mit mehr Nachkommastellen/Dezimalstellen gespeichert waren, als Dynamics AX dort erwartet hätte. Leider sieht man über den Table-Browser solche Nachkommastellen oft nicht, deshalb musste ich mir mit einem Job und der Funktion num2expstr helfen, letztere zeigt die Werte detailierter als z.B. der Table-Browser an. static void num2expstrTest(Args _args)
{ ledgerTrans ledgerTrans; while select ledgerTrans { info(strFmt("%1 %2", num2expstr(ledgerTrans.AmountMST), ledgerTrans.AmountMST)); } }
|
AX 2012: Relations, Surrogate Foreign Keys
02.03.2012Microsoft Dynamics AX (Axapta)
Mit dem Release von Dynamics AX 2012 konfrontiert Microsoft den erfahrenen AX-Entwickler mit zahlreichen Neuerungen. Einige davon betreffen das Herstellen von Beziehungen (Relations) zwischen Tabellen. Hatte man in AX 2009 noch die Möglichkeit, die Relations auf einem Extended Datatyp (EDT) festzulegen, so muss dies nun direkt auf den Tabellen erfolgen. Ausserdem sind die Tabellen nun meist so aufgebaut, daß Relations über die sogenannten Surrogate Foreign Keys erfolgen. |
AX 2012: Eigene Lookups mit Hilfe der Klasse SysLookupMultiSelectCtrl erstellen
21.02.2012Microsoft Dynamics AX (Axapta)
In AX 2012 gibt es über die Klasse SysLookupMultiSelectCtrl eine neue Möglichkeit, um bei einem Formularfeld, welches weder an eine DataSource noch an einen Extended Datatyp gebunden ist, dem Benutzer ein Lookup-Formular anzubieten. Diese Klasse hat gegenüber der Klasse SysTableLookup, die es schon in Dynamics AX 2009 gegeben hat, sowohl einige Vorteile aber auch ein paar Nachteile: Vorteile
Nachteile
|
|
|
|
|
|
|
Ist eine sogenannte installations-spezifische ID, d.h. ein und dasselbe Objekt kann in unterschiedlichen Umgebungen eine andere ID aufweisen.
Die ID wird u.a. zum Zeitpunkt des Importes eines Model per AXUTIL vergeben Somit ist die ID aus Entwicklersicht zu vernachlässigen.
Ein Model-File enthält z.B. keine IDs! Auch per Export/Import-Funktion erstellte Exportfiles mit Daten enthalten keine IDs (lediglich GUIDs)
Ist nur bei "alten" Objekten gesetzt, die es schon in früheren Versionen von Dynamics AX gab. Bei neuen Elementen wird dieses LegacyID nicht mehr vergeben.
Somit ist diese LegacyID für einen Entwickler nicht relevant.
Ist eine GUID, die beim Erstellen eines Elementes zugewiesen wird und nicht mehr verändert wird.
Diese dient dazu, ein Objekt eindeutig zu identifizieren, weil die ID in unterschiedlichen Umgebungen (Entwicklungsumgebung vs. Produktivumgebung) ja eine andere sein kann.
Angenommen in AX7 würde eine in AX 2012 bereits vorhandene Klasse umbenannt werden, könnte sie weder über die ID noch über den Namen als das selbe Objekt erkannt werden, deshalb wurde diese GUID eingeführt.
Bei Tests innerhalb einer Windows-Domäne habe ich festgestellt, daß die Origin auch beim Import von Models/XPOs mit neuen Objekten von der Quell- in die Zielumgebung übernommen wird (hingegen sich die ID verändert hat).
Wichtig: Über die Funktion Export/Import erstellte Export-Dateien enthalten GUIDs, keine Ids (im Gegensatz zu z.B. AX 2009)
Ein Must-Read zu dem Thema ist freilich: http://blogs.msdn.com/b/mfp/archive/2011/07/11/the-solution-to-the-element-id-problem.aspx