[Gelöst] RecordRefs und Events

14. Mai 2018 14:47

Hallo,

ist das korrekt, dass z. B. OnAfterInsert, OnBeforeInsert usw. Events nicht gefeuert werden, wenn die Datensätze über RecordRefs in die Tabelle eingefügt, manipuliert oder gelöscht werden?

Gruß

Michael
Zuletzt geändert von MichaelK am 16. Mai 2018 07:55, insgesamt 1-mal geändert.

Re: RecordRefs und Events

14. Mai 2018 14:52

Diese Information ist falsch oder wurde missverstanden.

Re: RecordRefs und Events

14. Mai 2018 14:54

Am einfachsten -> einfach ausprobieren
In 2018 funktioniert es auf Jedenfall.
Code:
OBJECT Codeunit 70000 TestTest
{
  OBJECT-PROPERTIES
  {
    Date=14.05.18;
    Time=14:51:46;
    Modified=Yes;
    Version List=;
  }
  PROPERTIES
  {
    OnRun=VAR
            RecRef@1000 : RecordRef;
          BEGIN
            RecRef.OPEN(18);
            RecRef.INIT();
            RecRef.INSERT(TRUE);
          END;

  }
  CODE
  {

    [EventSubscriber(Table,18,OnAfterInsertEvent)]
    LOCAL PROCEDURE CustomerOnAfterInsert@1(VAR Rec@1000 : Record 18;RunTrigger@1001 : Boolean);
    BEGIN
      MESSAGE(Rec."No.");
    END;

    BEGIN
    END.
  }
}

Re: RecordRefs und Events

14. Mai 2018 15:14

Vielen Dank für eure Mühe.

Wir haben das Problem, dass bei Artikeln welche über RapidStart eingespielt wurden die Events nicht gefeuert wurden. Liegt das vielleicht an RapidStart? Was mir noch aufgefallen ist, im Event wird abgefragt, ob xrec.description <> rec.description ist. Vielleicht liegt es damit zusammen?

Gruß

Michael

Re: RecordRefs und Events

14. Mai 2018 15:32

Prüfe mit Extras --> Debugger --> Ereignisabonnements, ob deine Subscriber überhaupt aktiv sind.
Sofern sie funktionieren, kannst du debuggen.

Re: RecordRefs und Events

14. Mai 2018 17:08

MichaelK hat geschrieben:Was mir noch aufgefallen ist, im Event wird abgefragt, ob xrec.description <> rec.description ist. Vielleicht liegt es damit zusammen?

Das ist gut möglich, siehe hier:
Eventing OnAfterModify: Watch out when checking against xRec

Re: RecordRefs und Events

15. Mai 2018 09:14

Du kannst bei RapidStart die Ausführung von Triggern und Events deaktivieren.
Hattet ihr das vielleicht aktiviert?

Re: RecordRefs und Events

15. Mai 2018 09:27

MarkusWeiland hat geschrieben:Du kannst bei RapidStart die Ausführung von Triggern und Events deaktivieren.

Nein, damit steuerst du nur, ob du z.B. INSERT(FALSE) statt INSERT(TRUE) ausführst.
Auf das Feuern der Events hat dies keinen Einfluss, jedoch kannst du innerhalb der Subscriber den Parameter abfragen und die weitere Bearbeitung abbrechen.

Re: RecordRefs und Events

15. Mai 2018 10:11

Ich habe es zwar noch nicht in Verbindung mit Events testen können, aber das Problem, dass xRec = Rec ist, wenn man mit Recordreferenzen arbeitet, hatte ich schon mal hier erwähnt: http://www.msdynamics.de/viewtopic.php?p=126940#p126940. Das betrifft leider auch die Dateneinspielung über die Konfigurationspakete.

Re: RecordRefs und Events

16. Mai 2018 07:55

Hallo,

das Problem betraf tatsächlich den xrec. Als Lösung wurde in dem Link von Kowa, xrec.get(Primärschlüssel) vorgeschlagen. Das ist zwar nicht performant aber es hilft :-) .

Vielen Dank für eure Unterstützung

Gruß

Michael