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

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 KategorieMakro innerhalb eines SELECT-Statements verwendenDas Beispiel listet beispielsweise nur aktive Stücklistenpositionen (Tabelle BOM) auf (aktiv über die Felder FromDate und ToDate). Lässt man den zweiten Parameter des Makros leer (dateNull()), so werden alle Stücklistenpositionen gelistet. static void useMacroInSelectStatement(Args _args) { bom bom; date emptyDate; // parameters: %1 = table instance, %2 date, %3 empty date value #localmacro.bomDateFilter && ( %2 == dateNull() || ( ((%1.FromDate <= %2) && (%1.ToDate >= %2)) || ((%1.FromDate == %3) && (%1.ToDate == %3)) || ((%1.FromDate <= %2) && (%1.ToDate == %3)) || ((%1.FromDate == %3) && (%1.ToDate >= %2)) )) #endMacro ; while select bom where bom.ItemId == '123' #bomDateFilter(bom, systemDateGet(), emptyDate) { info(bom.bomid); } } |
Welche Felder werden in einem automatisch generierten Lookup angezeigt?Mir wurde diese Frage vor kurzem selbst gestellt und konnte diese allerdings nur zum Teil beantworten. Ich wusste aber noch, daß ich schon einmal eine Seite gesehen hatte, wo dies genau erklärt wird. Aber ich wusste weder noch wo, noch konnte ich sie über diverse Suchmaschinen finden. Aber in alten Unterlagen fand ich die Quelle dann doch, der Trick um die Quelle auch mit Google und Konsorten zu finden ist, mit dem altem Namen von Microsoft Dynamics AX - Axapta danach zu suchen! Tut man dies, so findet man rasch folgende Seite: |
Verwenden einer Assembly/DLL in Dynamics AXUm eine DLL in Dynamics AX verwenden zu können, muss diese im References-Knoten des AOT hinzugefügt werden.
In beiden Fällen muss nun der Dialog mit OK bestätigt werden. |
Word-Dokument mit Tabelle per Code erstellen
static void CreateWordFileWithTable(Args _args) { COM wordApplication; COM wordTables; COM wordTable; COM wordSelection; COM wordTableRows; COM wordRange; COM wordTableCell; COM wordTableCellRange; COM wordDocuments; COM wordDocument; COM wordTableBorders; ; // Initialize Word object and document wordApplication = new COM("Word.Application"); wordDocuments = wordApplication.documents(); wordDocuments.add(); wordDocument = wordDocuments.item(1); wordSelection = wordApplication.selection(); wordRange = wordSelection.range(); // Get table collection wordTables = wordSelection.tables(); // Create table with 3 rows and 5 columns wordTable = wordTables.add(wordRange, 3, 5); // Fill cell: First line, second column wordTableCell = wordTable.Cell(1, 2); wordTableCellRange = wordTableCell.range(); wordTableCellRange.text("Hello"); // Fill cell: Second line, third column wordTableCell = wordTable.Cell(2, 3); wordTableCellRange = wordTableCell.range(); wordTableCellRange.text("World"); // Enable table borders wordTableBorders = wordTable.borders(); wordTableBorders.enable(true); // Add colored borders wordTableBorders.InsideLineStyle(3); wordTableBorders.OutsideLineStyle(5); wordTableBorders.OutsideColorIndex(2); // Get table row collection and add a new row wordTableRows = wordTable.rows(); wordTableRows.add(); // Open word wordApplication.visible(true); wordApplication.finalize(); } Das per obigem Code erstellte Word-Dokument sieht wie folgt aus: |
AX 2012: Importieren eines Debitoren mit Hilfe des Data import/export frameworks (ODBC)
04.12.2013Microsoft Dynamics AX (Axapta)
Mit Hilfe des Data import/export frameworks ist es möglich, Daten aus externen Systemen in Dynamics AX zu importieren. im folgenden möchte ich dies anhand der Anlage eines Debitoren über eine ODBC-Verbindung demonstrieren.
ODBC-Benutzer DSN einrichten
Erstellen einer VerarbeitungsgruppeErstellen einer Verarbeitungsgruppe (Processing group) unter Data import Export framework > Processing Group: |
AX 2012: Subselects über Computed columns abbildenMit Hilfe von Computed columns von Views sind auch in Dynamics AX Subselects/Subqueries möglich. Im folgenden habe ich eine Methode erstellt, die der Methode inventTable.productName() nachempfunden ist. private static server str compColItemName() { #define.ViewName("ItemNameView") #define.DataSourceName("InventTable") #define.FieldItemId("itemId") #define.FieldProduct("Product") str sProduct; DictView dictView; str translationSQLStr; str productSQLStr; dictView = new DictView(tableNum(#ViewName)); sProduct = dictView.computedColumnString (#DataSourceName, #FieldProduct, FieldNameGenerationMode::FieldList, true); translationSQLStr = strFmt("SELECT Name FROM EcoResProductTranslation WHERE EcoResProductTranslation.Product = %1 AND LanguageId = '%2'", sProduct, CompanyInfo::find().LanguageId); productSQLStr = strFmt("SELECT DisplayProductNumber FROM EcoResProduct WHERE EcoResProduct.RecId = %1", sProduct); return strFmt("isNUll((%1), (%2))", translationSQLStr, productSQLStr); } |
|
|
|
|
|
|
Oftmals hat man die Anforderung, daß auf Basis einer Eingabe in einem Formular auch eine bestimmte Finanzdimension eingetragen werden soll.
Mit folgendem Code-Beispiel ist so etwas relativ einfach zu realisieren. Im Beispiel wird, wann immer ein bestimmtes Feld geändert wird - abgefragt über die Methode modified() des Feldes einer Datasource, die Finanzdimension Kostenstelle mit dem Wert 25 befüllt. Ist der einzutragende Wert ein ungültiger, passiert nichts (Fehlermeldung oder ähnliches).
Im Beispiel wird eine existierende Instanz von DimensionDefaultingController verwendet.