Dynamics AX Blog - Posts from 2015 - Page 2
SysOperation: Open form with specific record after processingImagine the following scenario: You have to create or update a record using a clas, which extends Sysoperation-Framework. After this database operation you have to open a particular form, which allows the user to modify the just created/modified record. For such tasks i like to use the aferoperation()-method from the Controller-Class. By using the operationReturnvalue of the Service-Class within this method it is possible to process the record. |
Import data from csv-file to Dynamics AXUsing the CommaTextIo class you can import CSV files into Dynamics AX. The job shows a simple example of using this class. static void importCSVFile(Args _args) { Filename fileName = @"c: empcsvimport.csv"; CommaTextIo commaTextIo = new CommaTextIo(fileName, "r"); container lineCon; commaTextIo.inFieldDelimiter(';'); commaTextIo.inRecordDelimiter(' '); while (commaTextIo.status() == IO_Status::OK) { lineCon = commaTextIo.read(); info(strFmt("%1 %2 %3", conPeek(lineCon, 1), conPeek(lineCon, 2), conPeek(lineCon, 3))); } } In principle, this would also work with the TextIo class (or AsciiIo), but it must be noted that these classes can provide unexpected results when, for eample the inFieldDelimiter - in my example a semicolon - occurs within a text.
The following sample file would otherwise be processed, as expected from the developer. The third column in the third row would be interpreted as two columns by the read()-method. 100;450,00;Customername1 101;1200,00;Customername2 102;50,28;"Customername 3; Second customername" |
Get label from MenuItemstatic void getLabelFromMenuItem(Args _args) { MenuItemBuild menuItemBuild = new menuItemBuild(menuitemDisplayStr(ProdTableDelayedListPage), MenuItemType::Display); info(menuItemBuild.menuFunction().label()); } |
Create purchase order line through codeA simple example of how to create a purchase order line through code using AX<Table>-Class. static void createPurchLine(Args _args) { axPurchLine axPurchLine; purchLine purchLine; axPurchLine = AxPurchLine::newPurchLine(purchLine); axPurchLine.validateInput(true); axPurchLine.continueOnError(false); axpurchLine.parmPurchId("P00001"); axpurchLine.parmItemId("1000"); axPurchLine.parmPurchQty(10); axPurchLine.parmPurchPrice(24.50); axPurchLine.save(); } |
How to create a AX<Table>-Class IIIf you need a so called AX-class can use the class AxGenerateAxBCClass.
Simply call this class in the AOT by right clicking and follow the wizard or use following job: static void generateAXTableClass(Args _args) { AxGenerateAxBCClass axGenerateAxBCClass; axGenerateAxBCClass = new AxGenerateAxBCClass(); axGenerateAxBCClass.parmTableId(tableNum(MyNewTable)); axGenerateAxBCClass.run(); }
If the table changes, for example when adding new fields, you simply call that AxGenerateAxBCClass again and the AX -class will be extended accordingly.
How to use such AX -classes, i've described here.
|
Add contact information for entityHere is an example of how you can add contact information data to an existing entry in the global address book. 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); } Such a created entry will look like this: |
|
|
|
|
|
|
Using the SysModel* tables, you can browse the AOT to certain objects or their properties in Dynamics AX. I've posted an example already here.
The following job is an extension of the above posting and lists all objects that have been changed in the current layer and still were not added to version control.