Dynamics AX Blog - Dynamics AX 2012 - Beiträge von 2008

Momentan angezeigt werden nur Beiträge, welche für die Dynamics AX-Version »Dynamics AX 2012« relevant sind. Filter entfernen

RSS-Feed dieser Version
Momentan angezeigt werden nur Beiträge von »2008«.

Dynamics AX: Die Debug-Klasse

Mit der Debug-Klasse stellt Microsoft dem Dynamics AX-Entwickler eine Klasse zur Seite, mit deren Hilfe man während des Debuggen von Code sich Informationen anzeigen lassen kann, ohne die Infolog-Klasse missbrauchen zu müssen.


 
 
 

Dynamics AX: Die Aktualisierung muss im Rahmen einer Buchung ausgeführt werden

...heisst nichts anderes, als daß man beim Entwickeln ttsbegin/ttscommit vergessen hat.

Eine nicht ganz glücklich ins Deutsche übersetzte Fehlermeldung ;-)


 
 
 

Dynamics AX: Illegal property value

Wenn man in Dynamics AX versucht die Eigenschaft AllowDuplicates eines Tabellen-Indexes von No auf Yes zu ändern, kann folgende Fehlermeldung auftreten:

Illegal property value

In diesem Fall ist vermutlich der betroffene Index als PrimaryIndex oder ClusteredIndex der Tabelle eingetragen. Eigentlich auch logisch :-)


 
 
 

Dynamics AX: Das RunBaseBatch-Framework

Man braucht es immer wieder, und genau darum findet Ihr im folgenden eine kurze - und bestimmt auch nicht ganz vollständige - Übersicht, wie dieses RunBaseBatch-Framework benutzt werden kann. Erste Anlaufstelle sollte übrigens in jedem Fall die Klasse Tutorial_RunBaseBatch sein, dort werden die wichtigsten Methoden verwendet und man kann sich so zumindest einen groben Überblick verschaffen, was wie möglich ist.

Um eine stapelverarbeitungsfähige Klasse zu schaffen, ist diese in erster Linie von RunBaseBatch abzuleiten. Dadurch stehen eine Reihe von Methoden zur Verfügung, von welchen ich einige versuche im Folgenden zu erklären.


 
 
 

Dynamics AX: Container Quicktipp

Container sind ja was feines, und aus diesem Grund verwende ich sie immer wieder gerne beim Programmieren unter Dynamics AX. Durch einen Blog-Beitrag bei SysDictCoder bin ich auf einen kleinen Trick gestossen, der mir in Zukunft etwas Tipp-Arbeit ersparen wird.

Und zwar habe ich bisher Container immer ähnlich wie im folgenden befüllt:

container fieldCon = conNull();
;
fieldCon = conIns(fieldCon, conLen(fieldCon)+1, "accountNum");
fieldCon = conIns(fieldCon, conLen(fieldCon)+1, "name");
fieldCon = conIns(fieldCon, conLen(fieldCon)+1, "zipcode");
fieldCon = conIns(fieldCon, conLen(fieldCon)+1, "countryregionid");
fieldCon = conIns(fieldCon, conLen(fieldCon)+1, "county");

Wesentlich rascher ist die folgende Schreibweise:

container fieldConFast = conNull();
;
fieldConFast += "accountNum";
fieldConFast += "name";
fieldConFast += "zipcode";
fieldConFast += "countryregionid";
fieldConFast += "county";

SysDictCoder geht in seinem Artikel etwas mehr ins Detail, deshalb meine Empfehlung dort mal vorbeizuschauen.


 
 
 

Dynamics AX: Methode des "Callers" aufrufen

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).

if (element.args() && element.args().caller())
{
    if (element.args().caller().name() == formStr(Salestable))
    {
        element.args().caller().myMethod();
    }
}

 
 
 

Dynamics AX: FileIOPermission - Was ist das?

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. 


 
 
Seiten 1 2 » 

 

 
 
 
Beiträge des aktuellen Monats
April 2008
MoDiMiDoFrSaSo
 123456
78910111213
14151617181920
21222324252627
282930 
 
© 2006-2025 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu