Dynamics AX Blog - Dynamics AX 2009 - Beiträge von 2012

RSS-Feed dieser Version
Erweitern von Dynamics AX um neue Icons
26.08.2012Microsoft Dynamics AX (Axapta)
Es ist allerdings nicht möglich, diese Embedded Ressources um eigene Icons/Bilder zu erweitern. |
Voucher/Beleg in Dynamics AX 2009 prüfenVor kurzem musste ich in Dynamics AX 2009 eine Belegnummer (Voucher) per Code auf evtl. vorhandene Duplikate prüfen. Die folgende Methode ist dafür sehr hilfreich: ledgerParameters::checkDuplicate(_voucher, _date); |
Formular 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: |
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)) |
Eigenes Lookup-Formular mit Hilfe der Klasse SysTableLookup gestalten
20.02.2012Microsoft Dynamics AX (Axapta)
Ab und an kommt man als Entwickler in die Verlegenheit, ein Formularfeld, welches weder an eine Datenquelle (DataSource) oder einen Extended Datatyp gebunden ist, um ein Lookup-Formular zu erweitern. Dafür stellt Dynamics AX die Klasse SysTableLookup zur Seite, die man in die lookup-Methode des jeweiligen Feldes einbinden kann. Hier ein einfaches Beispiel unter Verwendung eines Queries, bei dem prinzipiell ein Lookup auf die Kundengruppen möglich sein soll, aber nur bestimmte angezeigt werden sollen. Diese Einschränkung kann über sysQuery::findOrCreateRange abgebildet werden. Das Beispiel funktioniert übrigens sowohl in Dynamics AX 2009 als auch AX 2012. public void lookup()
{ sysTableLookup sysTableLookup; query query; super(); query = new query(); query.addDataSource(tableNum(custGroup)); sysQuery::findOrCreateRange(query.dataSourceTable(tableNum(custGroup)), fieldNum(custGroup, name)).value("*inter*"); sysTableLookup = sysTableLookup::newParameters(tableNum(custGroup), this); sysTableLookup.parmQuery(query); sysTableLookup.addLookupfield(fieldNum(custGroup, custGroup)); sysTableLookup.addLookupfield(fieldNum(custGroup, name)); sysTableLookup.performFormLookup(); } |
|
|
|
|
|
|
Ich hatte schon des öfteren die Situation, daß ich wissen wollte ob ein Datensatz ein bestimmtes Feld enthält um den jeweiligen Wert verarbeiten zu können. Beispielsweise innerhalb eine Methode, welche die aufrufenden args() verarbeitet.
Beispielsweise stellt die Klasse SysDictTable die Methode hasMethod() zur Verfügung, eine hasField()-Methode aber habe ich bislang nicht gefunden.
Deshalb habe ich mir folgende Logik überlegt:
Wenn jemand eine elegantere Möglichkeit kennt, nur her damit!