Dynamics AX Blog - Dynamics AX 2009

RSS-Feed of this version
Use special characters in the XML-header of a methodSometimes you have to use special characters in the XML header of a method to document the code well. To get sure, that this header is still well-formed and is not identified as best practice deviation, you can use a CDATA section.
/// <version>
/// 1.0
/// </version>
/// <summary>
/// <![CDATA[ Replaces following special characters: &, % ]]>
/// </summary>
private void someMethod()
{
//...do something...
}
Without this CDATA section AX would spend the following BP-Deviation:
|
Search project names for a specific stringTo list all (shared-) pojects that carry a specific text in the name, you can use the following code.
static void searchProjectName(Args _args)
{
ProjectNode projectNode;
#AOTExport
projectNode = infolog.projectRootNode();
projectNode = projectNode.AOTfindChild(#expProjectShared);
projectNode = projectNode.AOTfirstChild();
while(projectNode)
{
setPrefix(projectNode.name());
if(strScan(projectNode.name(), "BR_", 0, 60))
{
info(projectNode.name());
}
projectNode = projectNode.AOTnextSibling();
}
} |
Open query window when opening formTo open the query-windows when opening a form, you can use the following code for example:
public void run()
{
super();
if(dataSourceName_ds.queryRun().prompt())
{
dataSourceName_ds.research();
}
}
|
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" |
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.
|
|
|
|
|
|
|
If the following error occurs when displaying a report on the screen, you must set up a default printer in Windows.
OpenPrinter_1: rc:0 LastError:3012(0xbc4) No printer were found.