Ablauf im Server

19. Januar 2017 18:13

Hallo zusammen,

wie kann ich im C/AL abfragen, ob meine Codeunit aktuell auf dem Server und nicht im Client läuft?

Konkret folgendes Problem: ich habe eine Artikeltabelle, die im OnModify-Trigger einen Confirm hat. Üblicherweise kein Problem. Jetzt wird dieser Trigger aber zum Beispiel auch während eines Upgrade-Vorgangs durchlaufen, und damit auf dem Server. Ein Confirm funktioniert aber nur auf dem Client. Was soll ich also tun? Mit dem GUIALLOWED hat es nicht funktioniert oder ich habe etwas falsch gemacht. Was muss ich dann nehmen?

Danke für die Hilfe!

Gruß
Rainer

Re: Ablauf im Server

19. Januar 2017 18:21

Hallo,

ich war jetzt gerade ein Wenig erstaunt, wie eine Codeunit auf dem Client laufen könnte, das tut sie NIE, aber natürlich kann man auf Benutzereingaben warten. :wink:

Ich bin mir nicht ganz sicher, aber wenn Nicht- GUI- Dienste ein Message oder Confirm ausführen kommen Sie damit seit Version 2013 auch ohne Fehler klar.
Messages gehen soviel ich weiß ins Windows Event- Log. Confirms werden wohl mit dem Default beantwortet. D.h. du dürftest kein Problem mit dem Confirm haben, wenn er richtig konfiguriert ist .

Gruß Fiddi

Re: Ablauf im Server

20. Januar 2017 12:57

Hallo Fiddi,

ich muss zugeben, dass ich mir selbst nie ganz sicher bin, wo etwas abgearbeitet wird. Da aber beim Run auf eine Codeunit kein Client gestartet wird, muss sie wohl zwangsläufig auf dem Server laufen. Mir geht es aber um den Trigger der Artikeltabelle OnModify, der von der Codeunit aufgerufen wird. Dieser wird dann doch auch, so denke ich, im Server ablaufen und damit keinen Confirm zulassen. Also muss ich irgendwie dem Trigger im C/AL-Code sagen, dass der Confirm nicht ausgeführt werden soll, also IF xxx THEN IF Confirm ... THEN ... ELSE ... ; Was könnte dieses xxx sein? Die Fehlermeldung findest du als Screenshot im Anhang.

Gruß
Rainer
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Ablauf im Server

20. Januar 2017 13:05

Code wird IMMER auf dem Server ausgeführt. Ausnahmen sind Automation-Variablen und DotNet-Variablen mit RunOnClient=Yes.

rainergaiss hat geschrieben:Mit dem GUIALLOWED hat es nicht funktioniert oder ich habe etwas falsch gemacht.

Also hat es bei dir so schon ausgesehen?
Code:
IF GUIALLOWED THEN
  CONFIRM(....)


Ich oute mich wieder als unwissend, aber falls der ClientType beim Upgrade-Process ein besonderer ist, könnte man das nutzen. Siehe Codeunit 419, Funktion IsWindowsClient usw.

Re: Ablauf im Server

20. Januar 2017 13:16

Hallo Natalie,

ich habe, glaube ich, "quick and dirty" an das IF Confirm ... ein AND GUIALLOWED angehängt, bin mir aber nicht mehr ganz sicher, weil ich den Confirm dann auf die Schnelle vorübergehend auskommentiert habe.

Es ist also schon wahrscheinlich, dass es so funktioniert wie in deinem Codebeispiel, wo der IF GUIALLOWED vorne dransteht. Ich werde das beim nächsten Konvertierungslauf mal ausprobieren, bevor wir weiterrrätseln.

Danke!

Gruß
Rainer

Re: Ablauf im Server

4. Januar 2018 19:49

Rein logisch muss es eine geschachtelte Sache sein weil sonst ja das CONFIRM schon ausgeführt wird, also IF GUIALLOWED THEN IF CONFIRM...