Dynamics AX Blog - Dynamics AX 2012 - Beiträge vom Juni 2008

RSS-Feed dieser Version
Dynamics AX: FileIOPermission - Was ist das?
05.06.2008Microsoft Dynamics AX (Axapta)
Die CodeAccessPermission-Klasse ist ein Mechanismus aus dem .NET-Framework, um den Zugriff von server-seitig ausgeführtem Quellcode auf geschützte Bereiche (z.b. einer Dateistruktur) vor bösartigen Attacken zu schützen. Ob Code server- oder client-seitig ausgeführt wird, steuert bekanntermaßen das sogenannte RunOn-Property. Diese Eigenschaft ist z.b. beim Neuanlegen einer Klasse immer auf Called from eingestellt. D.h. wird diese Klasse über einen Menuitembutton aufgerufen läuft sie client-seitig, wird diese Klasse aber z.B. aus einem Stapellauf heraus aufgerufen, läuft sie am AOS.
Hat man also eine Klasse, die server-seitig laufen kann und bei der auf geschützte Bereiche zugegriffen wird, muß man eine der CodeAccessPermission-Klassen in seinen Programmcode einbinden. Die bekannteste Klasse, die von der CodeAccessPermission abgeleitet ist, ist die FileIOPermission-Klasse, die für den Zugriff auf Dateien (über AsciiIo, TextIo, …) verwendet wird. Diese Klasse wird wie folgt verwendet: FileIoPermission FileIoPermission; AsciiIo AsciiIo; ; FileIoPermission = new FileIoPermission("c:\\File.txt",'w'); FileIoPermission.assert(); AsciiIo = new AsciiIo("c:\\File.txt",'w'); // ... Muß man innerhalb einer Methode die assert-Methode mehrmals aufrufen, ist dies nur möglich wenn man zwischen den einzelnen Aufrufen CodeAccessPermission::revertAssert() einbindet. FileIoPermission FileIoPermission; AsciiIo AsciiIo; ; FileIoPermission = new FileIoPermission("c:\\File.txt",'w'); FileIoPermission.assert(); AsciiIo = new AsciiIo("c:\\File.txt",'w'); // ... CodeAccessPermission::revertAssert() FileIoPermission = new FileIoPermission("c:\\File_2.txt",'w'); FileIoPermission.assert(); AsciiIo = new AsciiIo("c:\\File_2.txt",'w'); // ... Näheres zu den CodeAccessPermission-Klassen bzw. derer Kinder sind in der MSDN zu finden. |
Dynamics AX: Excel-Datei erstellen aus einer CSV-Datei
04.06.2008Microsoft Dynamics AX (Axapta)
Manchmal ist es notwenig, aus Dynamics AX heraus per X++ eine "echte" Excel-Datei zu erstellen. Dazu stellt AX ja bekanntermaßen Objekte wie SysExcelApplication, SysExcelWorkBooks usw. zur Verfügung. Der Nachteil dieser Objekte ist rasch erwähnt: Sie sind langsam! Aber es geht auch wesentlich rascher, allerdings mit dem Umweg per TextIO zuerst eine CSV-Datei zu erstellen und diese anschließend von AX in eine Excel-Datei umzuwandeln. Der Code für letztere Umwandlung ist diesem Microsoft-Knowlegebase-Artikel zu entnehmen (erfordert PartnerSource-Zugriff). |
|
|
|
|
|
|
Immer wieder besteht die Notwendigkeit, ein Formular über ein anderes zu öffnen und aus diesem heraus Methoden des Aufrufers aufzurufen.
Einfaches Beispiel: Ich öffne aus der Auftragsmaske (Salestable) irgendein anderes Formular (über einen MenuItemButton) und möchte nun beim Schliessen dieses Formulares eine Methode in der Salestable-Maske aufrufen.
Um dies zu realisieren muß ich einfach in der Close-Methode des Subformulars folgenden Code einbinden. myMethod steht dabei für die aufzurufende Methode des Salestable-Formulares.
Achtung: IntelliSense funtioniert in diesem Fall nicht (außer ich möchte eine Methode aufrufen, die im FormRun-Objekt enthalten ist).