Systemweite Variable setzt sich nicht zurĂĽck

Bild Microsoft Dynamics NAV 2015 (aka "NAV 8")

Systemweite Variable setzt sich nicht zurĂĽck

Beitragvon CBT » 20. Dezember 2017 15:09

Hallo zusammen,

ich habe folgendes Anliegen: Ich benötige eine systemweite Optionvariable welche sich im Fehlerfall auch wieder resettet. Mein erster Gedanke war eine SingleInstance Codeunit mit einer globalen Variable (Option). Allerdings wird diese nicht zurückgesetzt sobald das System einen Error schmeißt. Das Konstrukt IF CODEUNIT.RUN THEN <Setze Variable zurück> funktioniert auch nicht da ich nicht erzwingen kann dass alle Transaktionen zu diesem Zeitpunkt abgeschlossen sind. Hat jemand noch eine andere Idee bzw. Denkanstoß ?

Besten Dank im Voraus.
CBT
Microsoft Partner
Microsoft Partner
 
Beiträge: 105
Registriert: 22. März 2007 10:52

Re: Systemweite Variable setzt sich nicht zurĂĽck

Beitragvon Timo Lässer » 20. Dezember 2017 16:46

Spontan wĂĽrde ich auf eine zweite systemweite Variable setzen, welche du am Ende abfragen kannst.

Mal angenommen, in der Codeunit 80 "Sales-Post" würde in Abhängigkeit dort erkannter Kriterien eine Variable SendNotificationMail auf Yes gesetzt, und die E-Mail soll nach der Codeunit 80 erst versendet werden.

In der Codeunit 80 setzt du irgendwann (möglicherweise ziemlich weit am Anfang) die Variable SendNotificationMail.
Damit der (die Codeunit 80) aufrufende Programmcode weiĂź, ob die Codeunit erfolgreich durchgelaufen ist, setzt du ganz am Ende der Codeunit 80 eine weitere Variable SalesPostFinished auf Yes.

Codeunit 80:
Code: Alles auswählen
[...]
IF Cust.Notification = Cust.Notification::"E-Mail" THEN BEGIN  // z. B. irgendwo am Anfang
  GlobalVarMgt.SetVar('SendNotificationMail',''Yes');
END;
[...]
GlobalVarMgt.SetVar('SalesPostFinished','Yes');  // Ganz am Ende des OnRun-Triggers der CU 80


z. B. Codeunit 81:
Code: Alles auswählen
[...]
CODEUNIT.RUN(CODEUNIT::"Sales-Post",SalesHeader);
IF GlobalVarMgt.GetVar('SalesPostFinished') <> 'Yes' THEN BEGIN
  GlobalVarMgt.DelVar('SendNotificationMail');
END;
IF GlobalVarMgt.GetVar('SendNotificationMail') = 'Yes' THEN BEGIN
  MailMgt.SendNotification(Rec);
  GlobalVarMgt.DelVar('SendNotificationMail');
END;
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! DafĂĽr ist dieses Forum da.
Hier kannst du fĂĽr MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5274
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21

Re: Systemweite Variable setzt sich nicht zurĂĽck

Beitragvon m_schneider » 20. Dezember 2017 16:50

Wenn du uns erläuterst, wozu du diese Variable benötigst, dann können wir eventuell besser helfen.
MfG Michael
Benutzeravatar
m_schneider
 
Beiträge: 2141
Registriert: 20. Januar 2009 14:36
Realer Name: Michael Schneider
Arbeitsort: Treuen
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2017


ZurĂĽck zu NAV 2015

Wer ist online?

Mitglieder in diesem Forum: Unbekannter Robot und 1 Gast