[Gelöst] Abfrage, ob Report wirklich ausgeführt wurde

23. März 2010 12:59

Hallo zusammen,

gibt es eine Möglichkeit, herauszufinden, ob ein Report tatsächlich/erfolgreich gedruckt wurde?
(Benutzer könnte schon auf der RequestForm abbrechen oder - bei langen Reports - den Ausdruck zwischendurch abbrechen.)

Hintergrund:
Ich rufe mit REPORT.RUNMODAL(ReportID,TRUE,FALSE,SomeRecordVar); einen zur Designzeit unbekannten Report auf.
Abhängig davon, ob der Report nun tatsächlich/erfolgreich gedruckt wurde, möchte ich weitere Verarbeitungen starten bzw. unterbinden.

Leider liefert REPORT.RUNMODAL kein Boolean-Ergebnis (wie bei IF CODEUNIT.RUN) zurück.
Eine Funktion im Report hilft mir auch nichts, da ich den Report zur Designzeit nicht kenne (wird in ReportSelection hinterlegt).

Einziger mir denkbarer Weg wäre, im OnPostReport-Trigger aller denkbaren Reports (und das können verdammt viele sein) das Ergebnis an eine SingleInstance-Codeunit zu übergeben.
(Der Wert müsste natürlich vor jedem Reportaufruf in CU1 - FindPrinter initialisiert werden.)

Falls jemand eine eleganteren Weg kennt (am besten ohne Reportanpassung), so bitte ich um entsprechenden Hinweis.

Vielen Dank im Voraus für eure Unterstützung!

Re: Abfrage, ob Report wirklich ausgeführt wurde

23. März 2010 13:05

Hallo Timo,

bei den Reports, die im CRM protokolliert werden, könntest du es über die Aktivitätenposten herausfinden.
Oder mache einen Eintrag im Änderungsprotokoll, dann kannst du immer prüfen, ob der Report gelaufen ist, auch wenn der Client abgestürzt sein sollte.

Gruß, Fiddi

Re: Abfrage, ob Report wirklich ausgeführt wurde

23. März 2010 13:12

Könnte man den Druck in ein PDF umleiten, das anschließend drucken und aus der Existenz des PDF-Files ableiten, dass der Report durchgelaufen ist?

Musst du eigentlich wirklich sicher gehen, dass der Report gedruckt wurde? Ich denk da grade an Papierstau, Toner leer und sowas.

Re: Abfrage, ob Report wirklich ausgeführt wurde

23. März 2010 14:05

Vielleicht Reportaufruf in eine Codeunit (OnRun-Trigger) auslagern?
Code:
IF CodeunitReport.RUN THEN ...

Re: Abfrage, ob Report wirklich ausgeführt wurde

23. März 2010 14:11

fiddi hat geschrieben:bei den Reports, die im CRM protokolliert werden, könntest du es über die Aktivitätenposten herausfinden.
Leider ist dies in meinem Fall nicht (in allen Fällen) möglich.

fiddi hat geschrieben:Oder mache einen Eintrag im Änderungsprotokoll, dann kannst du immer prüfen, ob der Report gelaufen ist, auch wenn der Client abgestürzt sein sollte.
Dies erfordert auch wieder eine Anpassung jedes einzelnen Reports, was ich ja nach Möglichkeit vermeiden möchte.

McClane hat geschrieben:Könnte man den Druck in ein PDF umleiten, das anschließend drucken und aus der Existenz des PDF-Files ableiten, dass der Report durchgelaufen ist?
Da es hier konkret um den Druck in eine PDF-Datei geht, scheint mir dies der eleganteste Weg, da dies von dem Report unabhängig wäre.
(Den zu suchenden Dateinamen kennt der aufrufende Programmcode ja.)
Dies scheint mir der bisher beste Tipp zu sein.

Natalie hat geschrieben:Vielleicht Reportaufruf in eine Codeunit (OnRun-Trigger) auslagern?
Code:
IF CodeunitReport.RUN THEN ...
Dürfte nichts bringen, da die Codeunit ja selber auch nicht herausfinden kann, ob der Report durchgelaufen ist und somit immer TRUE zurückliefern würde.

Ich betrachte dieses Thema erstmal als [gelöst], es dürfen aber dennoch weitere Vorschläge unterbreitet werden.

Re: [Gelöst] Abfrage, ob Report wirklich ausgeführt wurde

23. März 2010 14:39

Timo Lässer hat geschrieben:Da es hier konkret um den Druck in eine PDF-Datei geht, scheint mir dies der eleganteste Weg, da dies von dem Report unabhängig wäre.


Da gab es das hier http://www.msdynamics.de/viewtopic.php?f=36&t=7516&hilit=pdf+erstellen und wenn ich das richtig sehe, wird da geprüft, ob PDF erstellt, abgebrochen durch User oder sonstiger Fehler.

Volker