Dynamics AX Blog - Beiträge vom Juni 2010
Ansprechen der seriellen Schnittstelle unter Dynamics AX 2009
24.06.2010Microsoft Dynamics AX (Axapta)
|
Eine von RunBasebatch abgeleitete Klasse ist nicht im Stapel lauffähig
10.06.2010Microsoft Dynamics AX (Axapta)
Vor kurzem hatte ich die Aufgabenstellung, eine Klasse die bereits von RunBase abgeleitet worden war, stapelfähig zu gestalten. So weit so einfach, dachte ich mir und habe in der ClassDeclaration der Klasse extends runBase durch extends runBaseBatch ersetzt. Ich hatte danach zwar den entsprechenden Register im Dialog, die Klasse wurde aber dennoch immer sofort ausgeführt :-( Nach etwas herumprobieren hatte ich schlussendlich in der Methode getFromDialog den Fehler entdeckt: Diese war so programmiert, daß sie per return true immer true retouniert, das runBaseBatch-Framework benötigt an dieser Stelle allerdings ein return super(). Kleine Ursache, grosse Wirkung. |
Druckoptionen von Berichten können nicht geändert werden
04.06.2010Microsoft Dynamics AX (Axapta)
In Dynamics AX 2009 scheint es einen kleinen Bug zu geben, der bei Reports, welche über eine von RunBaseReport abgeleitete Klasse gestartet werden, dazu führt, daß sich die Druckoptionen nicht ändern lassen. Um diesen Bug zu umgehen, kann man die Methode dialogUpdatePrinterSettings, wie in nachstehendem Beispiel beschrieben, überschreiben. public void dialogUpdatePrinterSettings(Dialog dialog)
{ ; // --> (1) Workaround to update printJobSettings and dialog this.printJobSettings().unpackPrintJobSettings(this.reportRun().packPrintJobSettings()); // <-- (1) super(dialog); } Update 27.12.2010 |
|
|
|
|
|
|
Mithilfe der Klasse SerialPorts aus dem .net-Framework kann man unter Dynamics AX 2009 recht bequem auf die serielle Schnittstelle zugreifen. Nachstehend dazu ein kurzes Code-Beispiel, wie man ein Display, wie man es z.B. von Kassensystemen kennt, ansteuern kann.
{
System.IO.Ports.SerialPort SerialPort;
str deleteDisplay = num2char(hex2int("0C"));
;
SerialPort = new System.IO.Ports.SerialPort('com4');
SerialPort.Open();
if(SerialPort.get_IsOpen())
{
SerialPort.Write(deleteDisplay);
SerialPort.Write('Welcome World!');
SerialPort.Close();
}
}