Dynamics AX Blog - Axapta 3.0 - Microsoft Dynamics AX (Axapta) - Seite 4

Momentan angezeigt werden nur Beiträge der Kategorie »Microsoft Dynamics AX (Axapta)« Filter entfernen

In den letzten Jahren, in denen ich mich fast hauptsächlich mit der Entwicklung im Umfeld von Microsoft Dynamics AX (vormals Axapta) beschäftigt habe, ist das eine oder andere Code-Fragment entstanden, von dem ich mir vorstellen könnte, daß es auch für andere AX-Entwickler ganz nützlich sein könnte. Aber auch Tips und Tricks zu dem mächtigen ERP-System werde ich in dieser Kategorie präsentieren.

RSS-Feed dieser Kategorie
Momentan angezeigt werden nur Beiträge, welche für die Dynamics AX-Version »Axapta 3.0« relevant sind. Filter entfernen

RSS-Feed dieser Version

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


 
 

AX 3.0: Shrinker.Err beim Kompilieren

Wer unter Windows XP, Windows Server 2003 oder Windows Server 2008 eine Axapta-Applikation der Version 3.0 kompiliert, kann schon mal über nachstehende Fehlermeldung stolpern.

Shrinker.Err

SHRINKER.ERR
C:\Program Files (x86)\Microsoft Business Solutions\Client\Bin\GridEX2O.ocx (3.4) 10/28/08 13:55:44 - Dispatcher initialisation error trapping exceptions

Die Lösung ist einfach einer neuere Version dieser Datei in das Client\Bin-Verzeichnis zu kopieren. Eine solche findet man z.b. unter http://www.janusys.com/janus/beta/downloads_patches.htm.


 
 

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: 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: Report per Code aufrufen

Anbei ein Beispiel wie so mancher Report per Code ausgeführt werden kann, und dem Report dabei gleichzeitig ganz bestimmte Datensätze per Query übergeben werden können.

static void PrintCustCollectionLetterJour()
{
    CustCollectionLetterJour    CustCollectionLetterJour;
    query                       query;
    args                        args = new args();
    reportRun                   reportRun;
    ;

    select firstonly CustCollectionLetterJour;  // Irgendein Datensatz

    // Query aufbauen (mit obigen Datensatz)
    query = new query();
    query.addDataSource(tableNum(CustCollectionLetterJour));

    SysQuery::findOrCreateRange(query.dataSourceTable(TableNum(CustCollectionLetterJour)),
        fieldNum(CustCollectionLetterJour, CollectionLetterNum)).value(CustCollectionLetterJour.CollectionLetterNum);
    SysQuery::findOrCreateRange(query.dataSourceTable(TableNum(CustCollectionLetterJour)),
        fieldNum(CustCollectionLetterJour, AccountNum)).value(CustCollectionLetterJour.AccountNum);

    // Den Query dem Report übergeben
    args.name(reportstr('CustCollectionJour'));

    reportRun = classFactory.reportRunClass(args);

    reportRun.query().interactive(false);
    reportRun.report().interactive(false);
    reportRun.query(query);

    reportRun.init();

    reportRun.run();
}

 
 
Seiten « 1 2 3 4 5 6 » 

 

 
 
 
Beiträge des aktuellen Monats
März 2024
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
25262728293031
 
© 2006-2024 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