Dynamics AX Blog - Dynamics AX 2009 - Seite 1

RSS-Feed dieser Version
Sonderzeichen im XML-Header einer Methode verwendenManchmal muss man im XML-Header einer Methode Sonderzeichen verwenden, um den Code gut dokumentieren zu können. Damit dieser Header trotzdem wohlgeformt ist und nicht als Best-Practice-Abweichung gekennzeichnet wird, kann man einen CDATA-Abschnitt einsetzen.
/// <version>
/// 1.0
/// </version>
/// <summary>
/// <![CDATA[ Replaces following special characters: &, % ]]>
/// </summary>
private void someMethod()
{
//...do something...
}
Ohne diesen CDATA-Abschnitt würde AX folgende BP-Abweichung ausgeben:
|
Namen der Shared Projects nach einem String durchsuchenUm sich alle (Shared-)Projekte ausgeben zu lassen, die einen bestimmten Text im Namen tragen, kann man den folgenden Code verwenden.
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();
}
} |
Beim Öffnen einer Form den Filter aufmachenUm direkt beim Öffnen eines Formulares das Filter-Fenster zu öffnen, kann man beispielsweise diesen Code verwenden:
public void run()
{
super();
if(dataSourceName_ds.queryRun().prompt())
{
dataSourceName_ds.research();
}
}
|
Statt Parameter-Listen einen DataContract verwenden
14.07.2015Microsoft Dynamics AX (Axapta)
Wer schon einmal die Parameter einer Methode erweitern musste, kennt vielleicht das Problem: Wenn man Glück hat kann man seinen neuen Parameter am Ende einfügen und mit einem Default-Wert vorbelegen. classDeclaration MyDataContract
{ ItemId itemId; Qty qty; }
Public ItemId parmItemId(ItemId _itemId = itemId)
{ itemId = _itemId; return itemId; }
Public Qty parmQty(Qty _qty = qty)
{ qty = _qty; return qty; }
Public void myMethod(MyDataContract _dataContract)
{ // … do something… info(_dataContract.parmItemId()); }
MyDataContract dataContract;
dataContract = new MyDataContract(); dataContract.parmItemId("A1000"); dataContract.parmQty(123); Object.myMethod(dataContract);
|
CSV-Datei in Dynamics AX importieren/einlesenMIt Hilfe der CommaTextIo-Klasse kann man CSV-Dateien in Dynamics AX einlesen. Der hier gezeigte Job zeigt ein einfaches Beispiel für die Verwendung dieser Klasse.
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)));
}
}
Prinzipiell ginge dies auch genauso mit der TextIo-Klasse (oder AsciiIo), allerdings muss man dabei beachten, daß diese Klassen beispielsweise unerwartete Ergebnisse liefern können, wenn der inFieldDelimiter - in meinem Beispiel ein Strichpunkt - innerhalb eines Textes vorkommt.
Folgende Beispieldatei würde anders verarbeitet, als vielleicht vom Entwickler erwartet. Die dritte Spalte in der dritten Zeile würde von der read()-Methode als zwei Spalten interpretiert werden. 100;450,00;Customername1 101;1200,00;Customername2 102;50,28;"Customername 3; Second customername" |
|
|
|
|
|
|

Wenn beim Anzeigen eines Berichtes am Bildschirm folgender Fehler auftritt, muss man im Windows einen Standarddrucker einrichten.