Skip to main content

Optimizer - InnerEvent = true or InnerEvent = false

Comments

7 comments

  • Lothar Hasenkämper

    Hi Marco, hast du mal mehr infos?

    Was ist dein Ziel/Problem?

    regards Lothar

    0
  • MW Sund

    Hintergund ist: Wenn man im Artikelstamm etwas ändert und auf Aktualisieren drückt, dann soll ein Feld “Stammdaten geprüft” auf “Nein” geändert werden. Mit dem nächsten Alarm bekommen einige User die Aufgabe die Korrektheit des Artikels zu prüfen.

    Wenn man den Button “Aktualisieren” mit der Maus anklickt, dann funktioniert es, weil der Event “et_Item_pressed” (Innerevent = false)

    Wenn man die Taste “Enter” auf der Tastatur drückt, um zu aktualisieren, dann ist der Innterevent = true und die Regel wird nicht ausgelöst.

    MfG

    Marco

    0
  • Lothar Hasenkämper

    Versuch mal im Optimizer
    FormTyp 150
    ItemUID:1 (OK-Button)
    EventTyp:ItemPressed 
    BevorEvent: Check
    InnerEvent: UnChecked(ggf. doch mal testen)
    FormModus:All

    Im Script fragst du dann den FromMode ab
    string FormMode = oForm.Mode.ToString();
    Und kannst dann mit
    if (FormMode != "fm_ADD_MODE") / if (FormMode != "fm_UPDATE_MODE")

    weiter machen.

    LG Lothar

     

    0
  • MW Sund

    Die Regel läuft schon… sie wird aber nur bei einem Mausklick auf den Button “Aktualisieren” ausgelöst. Wenn man “Enter” auf der Tastatur zum Aktualisieren drückt, dann wird sie nicht ausgelöst. Es liegt am InnerEvent, weil es bei der Maus auf false und bei der Taste auf true steht. Ich möchte nun das der Innerevent beim Auslöser ignoriert wird.

    MfG

    Marco

    0
  • Jannik

    Moin Marco,

    du könntest den EventType auf FormDataModify setzen, das ist eine Kombination aus et_FORM_DATA_UPDATE und et_FORM_DATA_ADD, damit könntest du auch neu angelegte Artikel erfassen.
    Alternativ einfach nur FormDataAdd. Form Modus auf ALL und Before Event auf True.

    Dann kannst du vor dem Speichern dazwischengehen und per DI API dein Feld befüllen.

    Damit musst du gar nicht prüfen ob du einen Button klickst, sondern ob Daten aktualisiert werden.

    0
  • Lothar Hasenkämper

    Moin,

    das was Jannik meint, habe ich auch so gedacht.
    Wenn du noch einzelne Felder Prüfen willst, kannst du die Werte aus dem Fenster auslesen und mit den Werten der OCRD (bei Update) vergleichen. Zu dem Zeitpunkt sind die Daten ja noch nicht geschrieben und man muss nicht in der ACRD “rumwühlen”

    Gruß Lothar

    0
  • Jannik

    Kommt ganz drauf an wie du die entsprechenden User beauftragen willst, aber wenn es eh mit einem Flag als UDF im Artikelstamm sein soll, kannst du auch mit der TransactNotification Stored Procedure direkt im MSSQL Server arbeiten. Denke mal bei HANA gibt’s die SP auch, nur keine Ahnung ob das da so heißt, ich arbeite mit einer MSSQL Umgebung.

    Denke mal dein Feld “Stammdaten geprüft” ist eine checkbox als UDF. Musst bloß in beiden Fällen, egal ob SP oder Coresuite on FormDataAdd beim Daten speichern unterscheiden ob es das Speichern/Update durch den späteren User ist, der dein Feld “Stammdaten geprüft” wieder auf ja setzt oder ob es eine Änderung eines Users ist, dessen Änderung du später validieren lassen willst. 

    0

Please sign in to leave a comment.