[Gelöst]Wann werden diese Events ausgeführt?

13. Juni 2019 08:47

In der Codeunit 1 gibt es diese Trigger. Laut Kommentar werden Sie nur von Pages aufgerufen.

temp.png


Ich brauche genau die Funktionalität, dass ich die Benutzer Änderungen aus allen Pages heraus abfange und dann meinen Code ausführe, wenn bestimmte Kriterien erfüllt sind. Leider konnte ich nicht rausfinden wann diese Trigger ausgeführt werden.

Es gibt ja auch noch weitere Funktionen mit Namen OnDatabaseInsert,OnDatabaseModify,OnDatabaseDelte,OnDatabaseRename. Die werden aber bei allen Datenbank Änderungen ausgeführt und nicht nur bei den Benutzeränderungen aus einer Page.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von rainergaiss am 18. Juni 2019 14:15, insgesamt 1-mal geändert.

Re: Wann werden diese Events ausgeführt?

13. Juni 2019 09:52

Die Trigger werden aufgerufen, wenn eine Datensatzänderung durch User-Interaktion statt C/AL-Code ausgeführt wird.
Probiere es doch einfach aus, indem du eines dieser Ereignisse abonnierst, und dann innerhalb einer Page oder durch Öffnen der Tabelle im Object Designer einen Datensatz entsprechen änderst.

Die Funktionen OnGlobalInsert etc. hat es schon seit NAV 4.0 gegeben, wenn auch versteckt: viewtopic.php?f=17&t=14413

Re: Wann werden diese Events ausgeführt?

13. Juni 2019 11:10

Ja, aber die aus der Page heraus sind neu, es hat nur die anderen gegeben.

Re: Wann werden diese Events ausgeführt?

13. Juni 2019 13:08

Subscriber auf
OnBeforeOnDatabaseModify
OnBeforeOnDatabaseInsert...
?

Re: Wann werden diese Events ausgeführt?

13. Juni 2019 13:23

Eigentlich schon probiert - wir testen noch mal ...

Re: Wann werden diese Events ausgeführt?

13. Juni 2019 13:41

rainergaiss hat geschrieben:Ja, aber die aus der Page heraus sind neu, es hat nur die anderen gegeben.

Welche "anderen"?
Es gibt nach wie vor nur ein OnGlobalInsert etc, das wird wie gesagt bei Unserinteraktionen ausgeführt.
Neu ist, dass es speziell für diese Ereignisse nun Publisher gibt (heißen dann OnAfterOnGlobalInsert etc.), damit du keinen Code mehr in Codeunit 1 schreiben musst.

Re: Wann werden diese Events ausgeführt?

13. Juni 2019 14:50

rainergaiss hat geschrieben:Eigentlich schon probiert - wir testen noch mal ...


Ich hab das probiert und hat funktioniert, aber nur für bestimmte Tables, hab dann mal geschaut und das hier gefunden:

Geht wohl über 2 Wege, entweder Tabelle in Änderungsprotokollposten einrichten, oder in CU 1 die passende Tabelle erlauben.
Ich habs mal über Änderungsprotokkoll probiert, Einige Felder ausgewählt (aber keine dahinter liegende Felder ausgewaehlt),
dann hat der Trigger (nach RTC Neustart) auch ausgelöst.

Re: Wann werden diese Events ausgeführt?

18. Juni 2019 14:14

Erst mal vielen Dank an alle! Wir haben die jetzt die Lösung des Problems:

In Navision 2018 gibt es 2 verschiedene Trigger für Inserts usw.
Die Funktion GetDatabaseTableTriggerSetup entscheided ob der OnDatabaseInsert Trigger ausgeführt wird und dadurch das Änderungsprotokoll gefüllt wird. Dieser Trigger wird immer aufgerufen. Nicht nur bei Änderungen in Pages.
Die Funktion GetGlobalTableTriggerMask entscheidet ob OnGlobalInsert ausgeführt wird. Dieser Trigger wird nur bei Page Änderungen ausgeführt.

Leider wird die Funktion GetGlobalTableTriggerMask nicht mehr automatisch von Navision ausgeführt. Hier muss man selbst eingreifen.
Zum Rückgabewert habe ich das im Internet gefunden.

the returning number is a 4 bit binary coded value. for example:
if the cu decides to protokol INSERT and DELETE, it will return 0101 = 5.
bit 0 1 Insert
Bit 1 2 Modify
Bit 2 4 Delete
Bit 3 8 Rename

temp.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.