[Gelöst] Change Log: OnDatabaseInsert-Trigger

2. April 2013 12:05

Hi Leute,

seit NAV 2013 wird das Change Log ja auch bei Datensatz-Manipulationen (Löschen, Ändern , Einfügen) per Code ausgeführt bzw. gefüllt. Um dieses "Feature" weiter zu verwenden, habe ich den Code in dem "OnDatabaseInsert"-Trigger der Codeunit 1 erweitert.
Dabei ist mir ärgerlicherweise aufgefallen, dass der Trigger nur ausgeführt wird, wenn die Change Log Einrichtung für die entsprechende Tabelle, die gerade verwendet wird, gefüllt sein muss damit der Trigger ausgeführt wird.
Konntet ihr dies auch schon feststellen oder sogar irgendwie umgehen?

Bei mir ging dieses Verhalten sogar noch einen Schritt weiter! Ich habe die Einrichtungstabellen des Change Logs kopiert und für meine Bedürfnisse angepasst. Leider übernehmen diese Tabellen nun das beschriebene Verhalten. Nur wenn meine Einrichtung gepflegt ist, wird der Trigger für die Quelltabelle ausgeführt. Auch hier wäre ich neugierig wie ich das wieder abschalten kann, falls dieses Phänomen noch wem untergekommen ist :/
Zuletzt geändert von MatthiasKönig am 8. April 2013 10:04, insgesamt 1-mal geändert.

Re: Change Log: OnDatabaseInsert-Trigger

2. April 2013 14:15

MatthiasKönig hat geschrieben:Dabei ist mir ärgerlicherweise aufgefallen, dass der Trigger nur ausgeführt wird, wenn die Change Log Einrichtung für die entsprechende Tabelle, die gerade verwendet wird, gefüllt sein muss damit der Trigger ausgeführt wird.

Das ist so nicht ganz richtig.
OnDatabaseInsert wird ausgeführt, wenn der Parameter OnDatabaseInsert der Funktion GetDatabaseTriggerSetup auf TRUE gesetzt wird.
Im Standard passiert dies durch ChangeLogMgt.GetDatabaseTableTriggerSetup oder IntegrationManagement.GetDatabaseTableTriggerSetup.

Entweder du greifst in die letztgenannten Funktionen ein, um dort OnDatabaseInsert = TRUE zurück zu liefern, oder du hängst dich unten an die Funktion GetDatabaseTableTriggerSetup und setzt es dort TRUE.

Re: Change Log: OnDatabaseInsert-Trigger

2. April 2013 16:20

Ich habe mich ebenfalls auch in diese Funktion der Codeunit gesetzt und die Funktion erweitert. Leider ist mir bisher nicht ersichtlich, wie der Code so die anderen Funktionen ansteuern soll. Anders gesagt: Wie kommt NAV von dem GetDatabaseTableTriggerSetup in das OnDatabaseInsert?

Ich werde das noch ausprobieren, komme nur gerade nicht dazu.

Re: Change Log: OnDatabaseInsert-Trigger

2. April 2013 16:23

MatthiasKönig hat geschrieben:Anders gesagt: Wie kommt NAV von dem GetDatabaseTableTriggerSetup in das OnDatabaseInsert?

Das ist leider für uns nicht zu debuggen und als gegeben hinzunehmen. Es sei denn, ich habe Tomaten auf den Augen ;-)

Re: Change Log: OnDatabaseInsert-Trigger

8. April 2013 10:04

Vielen dank erst einmal und sorry das ich erst so spät antworte. Aktuell gehts drunter und drüber :D

Und ja, du hast vollkommen recht. Ich habe meine Funktionen so angepasst, dass ich den Wert nur auf true setze und nie auf false :)