[gelöst] (RTC) OnModify nur durch manuelle Änderung auslösen

20. Juli 2012 12:01

Hallo,

Ich habe eine Frage, wo ich nicht weiterkomme:

Ich möchte, dass der OnModify-Trigger in einer Tabelle nur dann angestossen wird, wenn ein User den Record in einem Option-Feld in einer Page manuell ändert. Wird die Änderung durch eine CodeUnit automatisch ausgeführt, soll nichts passieren. Geht sowas? Und wenn ja, wie?

Vielen Dank,
Sebastian
Zuletzt geändert von SKL am 20. Juli 2012 14:43, insgesamt 1-mal geändert.

Re: (RTC) OnModify nur durch manuelle Änderung auslösen

20. Juli 2012 12:54

Ich würd's ja nach Möglichkeit in das OnValidate des Feldes legen.

Aber schau dir mal "CurrFieldNo" an (zB Tabelle 37, falls das im RTC noch funktioniert).

Edit: CurrFieldNo klappt im OnModify gar nicht, glaub ich :-?

Re: (RTC) OnModify nur durch manuelle Änderung auslösen

20. Juli 2012 13:17

Wenn ich "CurrFieldNo" versuche zu benutzen heisst es immer, ich habe eine unbekannte Variable angegeben? Geht das auch im RTC? Ich les immer nur dass man damit in Forms die ID dies Feldes bekommt, aber bei mir geht es ja um eine Page.

Re: (RTC) OnModify nur durch manuelle Änderung auslösen

20. Juli 2012 13:20

Wenn man den Modify-Befehl aus C/AL Code ausführt hat man die Wahl, ob der OnModify-Trigger ausgeführt werden soll oder nicht.

Code:
Record.MODIFY(TRUE) //führt OnModify-Trigger aus
Record.MODIFY //führt OnModify-Trigger nicht aus


Aus einer Page heraus, wird der OnModify-Trigger immer ausgeführt.
Zuletzt geändert von m_schneider am 20. Juli 2012 13:22, insgesamt 1-mal geändert.

Re: (RTC) OnModify nur durch manuelle Änderung auslösen

20. Juli 2012 13:21

Page? Du hast doch vom OnModify der Tabelle gesprochen? CurrFieldNo geht nur in der Tabelle.

Re: (RTC) OnModify nur durch manuelle Änderung auslösen

20. Juli 2012 14:43

Vielen Dank für die Hilfe...

Michaels Lösung ist in meinem Fall die einfachste, ich schreibe den Code in den OnValidateTrigger dass er ausgeführt wird und in die CodeUnit einfach "MODIFY(FALSE)".

Kommt ja aufs gleiche raus ob ich den Code nur ausführe bei manuellem Auslösen des Triggers oder immer auslöse, aber MODIFY(FALSE) in der Codeunit verwende (und es so auf das manuelle beschränke). Zu kompliziert gedacht.