Dynamics AX Blog - Dynamics AX 2012 - Beiträge von 2015 - Seite 4

RSS-Feed dieser Version
Kontaktinformation zu einer Entität hinzufügenAnbei ein Beispiel, wie man per Code zu einem bestehenden Eintrag im Globalen Adressbuch Kontaktinformationen hinzufügen kann. static void createPartyContactInfo(Args _args) { DirPartyTable dirPartyTable = DirPartyTable::findByNum(??"100000"); DirParty dirParty; DirPartyContactInfoView dirPartyContactInfoView; // Edit Global address book dirParty = DirParty::constructFromCommon(dirPartyTable, DirUtility::getCurrentDateTime(), DirPartyType::Organization); // Create contact info dirPartyContactInfoView.LocationName ='Office'; dirPartyContactInfoView.Locator ='+43 1 4654646'; dirPartyContactInfoView.Type = LogisticsElectronicAddressMethodType::Phone; dirPartyContactInfoView.IsPrimary = NoYes::Yes; dirParty.createOrUpdateContactInfo(dirPartyContactInfoView); } Im AX stellt sich ein solcher Eintrag wie folgt dar: |
AX 2012: Beispiel für den Einsatz einer Computed Column II
09.05.2015Microsoft Dynamics AX (Axapta)
Der folgende Code zeigt, wie man mit Hilfe einer Computed Column eine einfache Multiplikation auf Datenbank-Ebene ausführen kann. private static server str compColLineAmountMST() { #define.ViewName("PurchLineExpanded") #define.DataSourceName("PurchLine") return SysComputedColumn::multiply(SysComputedColumn::returnField(#ViewName, #DataSourceName, fieldStr(PurchLine, PurchPrice)), SysComputedColumn::returnField(#ViewName, #DataSourceName, fieldStr(PurchLine, PurchQty))); } Das Ergebnis sieht wie folgt aus (Spalte PurchLineAmount): Kleiner Tipp: Es gibt noch zahlreiche Methoden wie die oben verwendete multiply(), mehr dazu auf der MSDN. |
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. |
Stückliste per Code erstellenMit dem folgenden Code kann man eine Stückliste inkl. Stücklistenversion per Code erstellen. static void createBomTableVersion(Args _args) { AxBOMTable axBOMTable; AxBOMVersion axBOMVersion; AxBOM axBOM; InventTable inventTable = InventTable::find("100160"); InventDim inventDim; try { ttsbegin; // BOM Table axBOMTable = AxBOMTable::construct(); axBOMTable.validateInput(true); axBOMTable.continueOnError(false); axBomTable.parmBOMId(BOMTable::numberSeq().num()); axBOMTable.parmItemGroupId(inventTable.itemGroupId()); axBOMTable.parmApprover(HcmWorker::userId2Worker(curUserId())); axBOMTable.parmApproved(NoYes::Yes); axBOMTable.parmName("Name of BOM"); axBOMTable.parmSiteId("GF"); axBOMTable.save(); // BOM Version inventDim.clear(); inventDim.InventSiteId = axBOMTable.parmSiteId(); inventDim = InventDim::findOrCreate(inventDim); axBOMVersion = AxBOMVersion::construct(); axBOMVersion.validateInput(true); axBOMVersion.continueOnError(false); axBOMVersion.parmBOMId(axBOMTable.parmBOMId()); axBOMVersion.parmItemId(inventTable.ItemId); axBOMVersion.parmApprover(HcmWorker::userId2Worker(curUserId())); axBOMVersion.parmApproved(NoYes::Yes); axBOMVersion.parmActive(NoYes::Yes); axBOMVersion.parmInventDimId(inventDim.InventDimId); axBOMVersion.save(); // BOM inventDim.clear(); inventDim.InventSiteId = axBOMTable.parmSiteId(); inventDim.ConfigId = "RoundNeck"; inventDim.InventSizeId = "XS"; inventDim.InventStyleId = "SlimFit"; inventDim.InventColorId = "Blue"; inventDim.InventLocationId = "902"; inventDim = InventDim::findOrCreate(inventDim); axBOM = AxBOM::construct(); axBOM.validateInput(true); axBOM.continueOnError(false); axBOM.parmBOMId(axBOMTable.parmBOMId()); axBOM.parmItemId("100158"); axBOM.parmInventDimId(inventDim.InventDimId); axBOM.parmBOMQty(17); axBOM.save(); ttscommit; } catch { throw error("BOM creation failed"); } } |
Die "Details anzeigen"-Funktion für eine als einzelnes Feld eingebundene Finanzdimension einbinden
28.03.2015Microsoft Dynamics AX (Axapta)
In diesem Beitrag habe ich beschrieben, wie man eine einzelne Finanzdimension als eigenes Feld einbinden kann. Dies ist ein Folgebeitrag und soll demonstrieren, wie man für ein solches Feld die "Details anzeigen"-Funktion programmieren kann. |
Eine Lookup-Methode für ein als einzelnes Feld eingebundene Finanzdimension überschreiben
28.03.2015Microsoft Dynamics AX (Axapta)
In diesem Beitrag habe ich beschrieben, wie man eine einzelne Finanzdimension als eigenes Feld einbinden kann. Dies ist ein Folgebeitrag und soll demonstrieren, wie man für ein solches Feld die lookup()-Methode überschreiben kann. |
|
|
|
|
|
|
Benötigt man für eine Tabelle eine sog. AX<Table>-Klasse kann man sich diese mit Hilfe der Klasse AxGenerateAxBCClass generieren lassen.
Dazu einfach diese Klasse im AOT per rechter Maustaste aufrufen und dem Assistenten folgen oder folgenden Job anpassen und ausführen:
Die auf diese Art & Weise generierte Klasse muss unter manchen Umständen noch etwas bearbeitet werden, dennoch geht der Vorgang rascher von der Hand, als die Klasse komplett selbst erstellen zu müssen.
Und wenn sich die Tabelle ändert, beispielweise wenn neue Felder hinzukommen, kann man die AxGenerateAxBCClass einfach nochmals aufrufen und die AX<Table>-Klasse wird entsprechend erweitert.
Wie man solche AX-Klassen verwendet, habe ich u.a. hier beschrieben.