[gelöst] Alternative zu Events

14. April 2010 12:42

Hallo, bin gerade dabei mich in AX einzuarbeiten.

Momentan suche ich nach einer Möglichkeit festzustellen, wenn ein neuer Auftrag angelegt wird. Ich möchte dann in ein Stückchen Code ausführen oder eine Meldung bringen, das ist erstmal noch nicht wichtig.
Was ich noch nicht verstehe, ist wie ich registrieren kann, dass sich etwas verändert hat. Ein neuer Eintrag in die Datenbank gekommen ist, oder sich ein Wert irgendwo geändert hat.

Alles was ich über Events in AX erfahren konnte ist, dass diese in Verbindung mit Workflows benutzt werden. Das scheint aber für mich nicht zielführend zu sein :?:

Kann mir jemand helfen? Mir wäre schon gedient, wenn mir jemand sagen könnte, nach was ich eigentlich genau suchen soll.

Mfg
Andreas
Zuletzt geändert von AndreasSelig am 2. Juni 2010 10:44, insgesamt 1-mal geändert.

Re: Alternative zu Events

14. April 2010 14:50

Naja...

So richtiges Event Handling was du meinst (wenn ich das richtig erahne) wirst du in AX bis Version 2009 nicht finden. /vermutlich auch nicht in der 6er Verson)
In deinem genannten Beispiel müsstest du dir in der Entwicklungsumgebung in den Tabellen die "SalesTable" suchen.
Das ist die Auftragskopftabelle. Dort kannst du die Methoden (es gibt Sie bereits) "insert" und/oder "update"
benutzen.

Insert ... Neuer Auftragskopf wurde angelegt UND in die Datenbank eingefügt (das speichern übernimmt der super() aufruf in der Methode selbst)
Update ... Auftragskopf wurde gespeichert (existierte bereits)

Eine weiter interessante Methode für dich ist z.B das

modifiedField ... wird aufgerufen wenn ein Feld auf der Tabelle sich geändert hat (über eine Form, ansonsten nicht außer es wird per code aufgerufen)
Parameter ist eine fieldId.. eine eindeutige Kennung des Feldes auf dieser Tabelle.

Aber solche Event Trigger oder wie man sie nennt. Dass man sagen kann Wenn sich auf Tabelle X das Feld Y geändert hat dann führe Event Z aus, kannst du nicht
"registrieren".

LG

Re: Alternative zu Events

14. April 2010 15:35

Ich hatte mir vorher schon überlegt etwas in der Art zu tun. Aber ich habe die ganze Zeit angenommen, dass es für so ein Problem irgned einen vordefinierten Mechanismus in AX gibt. Hätte nicht erwartet, dass ich für mein (doch wie ich meine recht alltägliches Problem) so nah an die Tabelle der Datenbank heran muss.

Falls niemandem doch noch eine gloreicheres "best practice" einfällt werde ich dann eben Insert und Update überladen. ;-)

Danke für die schnelle Antwort ;-)

Re: Alternative zu Events

14. April 2010 18:24

Nur wegen der Vollständigeit:

Es gibt Auf der Application Klasse ein paar "EVENTS"...

EventInsert
EventDelete
...

Aber das bringt dir nix, weil die sind nur dann aktiv wenn man ein Datenbankprotokoll für die Tabelle aktiviert hat
welche geändert/eingefügt wird. Und für dass, ein Datenbankprotokoll zu aktivieren wäre nicht gerade schön und ist überhaupt nicht zu empfehlen.

Wie gesagt. ^^ Nur zur Vollständigkeitshalber :mrgreen:

Re: Alternative zu Events

16. April 2010 09:48

Hi,
AndreasSelig hat geschrieben:Falls niemandem doch noch eine gloreicheres "best practice" einfällt werde ich dann eben Insert und Update überladen.


genau dieser Weg bzw. dieses Vorgehen ist der Standard-Weg und wird auch so als Best-Practice in allen Unterlagen beschrieben.....