[Gelöst][RTC] - Client Absturz wenn Error im Subscriber

6. März 2020 16:34

Hi,

in einem Table Event Subscriber auf T36 würde ich gerne im OnBeforeModify, OnBeforeInsert, OnBeforeDelete Abfragen ob der benutzer dies darf,
abhängig von ein boolean in der Benutzer Einrichtung.

Der Fehler kommt wie gewünscht, aber danach schießt der Client sich weg:

Code:
LOCAL [EventSubscriber] SalesOrderHeader_OnBeforeModify(VAR Rec : Record "Sales Header";VAR xRec : Record "Sales Header";RunTrigger : Boolean)
CheckSalesOrderPermission(Rec);

LOCAL [EventSubscriber] SalesOrderHeader_OnBeforeDelete(VAR Rec : Record "Sales Header";RunTrigger : Boolean)
CheckSalesOrderPermission(Rec);

LOCAL [EventSubscriber] SalesOrderHeader_OnBeforeInsert(VAR Rec : Record "Sales Header";RunTrigger : Boolean)
CheckSalesOrderPermission(Rec);

LOCAL CheckSalesOrderPermission(VAR SalesOrder : Record "Sales Header")
  IF NOT (SalesOrder."Document Type" IN [SalesOrder."Document Type"::Order]) THEN BEGIN
    EXIT;
  END ELSE BEGIN
    UserSetup.GET(USERID);
    IF NOT UserSetup.GET(USERID) THEN
      ERROR(txtUserSetupNotFound,USERID)
    ELSE BEGIN
      IF UserSetup."Sales Order Read only" THEN
        ERROR(txtUserNotAllowed);
    END;
  END;
END;


Die Meldung NAV Client funktioniert nicht mehr bringt mir folgende Problemdetails:
Problemereignisname: CLR20r3
Problemsignatur 01: Microsoft.Dynamics.Nav.Client
Problemsignatur 02: 9.0.46621.0
Problemsignatur 03: 57a2518a
Problemsignatur 04: Microsoft.Dynamics.Framework.UI
Problemsignatur 05: 9.0.46621.0
Problemsignatur 06: 57a2516e
Problemsignatur 07: 24a9
Problemsignatur 08: 91
Problemsignatur 09: System.NullReferenceException


Bevor ich den Code nun in die Table implementiere würde ich gerne wissen was da passiert , bestimmt ein Antipattern erwischt :-?
Hat jemand eine Idee?

Vielen Dank
Zuletzt geändert von elTorito am 6. März 2020 21:26, insgesamt 1-mal geändert.

Re: [RTC] - Client Absturz wenn Error im Subscriber

6. März 2020 16:44

Hallo,

als erstes würde ich mal abfragen ob der Record TEMPORARAY ist. Denn in NAV werden Records auch mal temporär genutzt. Da sollte man nicht mir irgendwelchen Berechtigungsfehlern dazwischen funken.

Außerdem könnte man deine Abfrage dem System überlassen, indem du entsprechende Berechtigungen vergibst.

Dann solltest du dich entscheiden, ob du UserSetup.Get mit oder ohne IF aufrufen willst. :wink:

Ansonsten kann ich allerdings auch keinen direkten Fehler entdecken.

Gruß Fiddi

Re: [RTC] - Client Absturz wenn Error im Subscriber

6. März 2020 16:48

hi,

was sagt denn der Debugger - springt er ggf. rein?

weiterhin:
Code:
 UserSetup.GET(USERID);
    IF NOT UserSetup.GET(USERID) THEN

macht keinen Sinn

Re: [RTC] - Client Absturz wenn Error im Subscriber

6. März 2020 17:09

Bekommt man es denn mit Zugriffsrechte hin dass man Sales Quote anlegen und bearbeiten kann, aber Sales Order nur lesen?
Auf Table 36 kann man ja nur einmal die Rechte vergeben.

Das Phänomen (Client stürzt ab) tritt übrigens nur auf wenn ich F5 aktualisieren drücke.
Wenn der fehler erscheint und ich ESC drücke wird gefragt ob die Änderungen verworfen werden sollen und alles ok.

Debugger springt an beim Error, wenn ich danach F5 drücke ist sofort alles weg.

ISTEMPORARY Abfrage hilft auch nicht.

Re: [RTC] - Client Absturz wenn Error im Subscriber

6. März 2020 17:33

Brechtigungen könnte man über die Page machen.

Re: [RTC] - Client Absturz wenn Error im Subscriber

6. März 2020 17:57

Über die Pages ginge es evtl., aber wie? Der User soll Angebote Erstellen können, aber Aufträge nur Durchblättern.

Wenn ich TableData 36 die Permissions CRUD gebe, und die Page 41auch CRUD, und P42 (VK Aufträge) bekommt keine Rechte, kann der Benutzer trotzdem Aufträge anlegen und modifizieren.
Eine Page 0 gibt es nicht

Re: [RTC] - Client Absturz wenn Error im Subscriber

6. März 2020 19:10

Hmm. Das Problem habe ich nun auch wenn ich den Code in die Tabelle in die OnModify,OnInsert, OnDelete Trigger einfüge .
Vermute langsam mit dem Client stimmt was nicht

Re: [RTC] - Client Absturz wenn Error im Subscriber

6. März 2020 19:12

Manchmal hilft der gute alte "Compile All"

Re: [RTC] - Client Absturz wenn Error im Subscriber

6. März 2020 21:26

Bingo!!

Bei Table 6660 gab es nicht Synchrone Metdaten....

Nun funzt die Rechte Abfrage wie gewünscht, im Subscriber und auch in der Table.

Falls doch noch jemand weiß wie man den Fall mit Permissions abbilden kann gerne her damit.

Vielen Dank und schönes Wochenende