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

Momentan angezeigt werden nur Beiträge, welche für die Dynamics AX-Version »Dynamics AX 2009« relevant sind. Filter entfernen

RSS-Feed dieser Version
Momentan angezeigt werden nur Beiträge von »2012«.

hasField()-Methode

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:

Common callingRecord;
itemId itemId;
SysDictField itemDictField;

itemDictField = SysDictField::findFieldByName(tableId2name(callingRecord.TableId), identifierStr(itemId));

if(itemDictField)
{
    itemId = callingRecord.(itemDictField.id());
}

Wenn jemand eine elegantere Möglichkeit kennt, nur her damit!


 
 
 

Erweitern von Dynamics AX um neue Icons

Custom IconsIn Dynamics AX kann man bekanntermaßen Menuitems oder Buttons mit Icons optisch aufwerten. Oft werden dafür die bereits in der Form SysImageRessources anzeigbaren sog. Embedded Resources verwendet.

Es ist allerdings nicht möglich, diese Embedded Ressources um eigene Icons/Bilder zu erweitern.

Dafür stellt AX den AOT-Knoten Resources zur Verfügung.


 
 
 

Voucher/Beleg in Dynamics AX 2009 prüfen

Vor 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

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

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

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();
}

 
 
 

 

 
 
 
Beiträge des aktuellen Monats
April 2012
MoDiMiDoFrSaSo
 1
2345678
9101112131415
16171819202122
23242526272829
30 
 
© 2006-2025 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