Download PDF
Download page Technischer Hintergrund und Problemanalyse.
Technischer Hintergrund und Problemanalyse
Drucken via Client
Weil der Drucker auch manuell im Feld des Druckdialogs eingegeben werden kann, kann auch einer angegeben werden, der ungültig ist. Hier würde direkt eine Fehlermeldung erscheinen.
Falls das Dokument aus anderen Gründen nicht erscheint, prüft man am besten die Fehlermeldung untern den lokalen Druckauftragen.
Falls die Fehlermeldung auch nicht weiterhilft, lohnt sich ein Blick ins Logfiles des Clients (also wo sich das diohix.exe befindet).
Auszug aus dem Nexus.Pat.Print_xxxx.log eines erfolgreichen Drucks:
2019-02-14 09:43:04,952 [6] INFO Nexus.Pat.Print - PrintManager Methode VerarbeiteDruckAuftrag(): Beginn Reporterstellung. ReporInstanceID : 121300 Dokument: Dokument 918 TestReport Parameter: 1321882 Belegter Speicher:460218368
2019-02-14 09:43:05,746 [6] INFO Nexus.Pat.Print - PrintManager Methode VerarbeiteDruckAuftrag(): Ende CreateReportDocument (Datenbasis Report: Datenbank). ReportInstanceID: 121300
2019-02-14 09:43:14,134 [6] INFO Nexus.Pat.Print - PrintManager Methode VerarbeiteDruckAuftrag(): HasRecords bringt Ergebnis zurück: 121300
2019-02-14 09:43:14,134 [6] INFO Nexus.Pat.Print - PrintManager Methode VerarbeiteDruckAuftrag(): Druckauftrag mit Weiterverarbeitung: 121300
2019-02-14 09:43:16,379 [6] INFO Nexus.Pat.Print - PrintManager Methode VerarbeiteDruckAuftrag(): nach WeiterVerarbeitungReportDocument: 121300
2019-02-14 09:43:16,395 [6] INFO Nexus.Pat.Print - PrintManager Methode VerarbeiteDruckAuftrag(): nach Dokument.UpdateLetzteErstellungDatum: 121300
2019-02-14 09:43:16,404 [6] INFO Nexus.Pat.Print - PrintManager Methode PutzeReportDocumentDict():Anzahl ReportDocument: 1, Liste: 918:TestReport;
2019-02-14 09:43:17,014 [6] INFO Nexus.Pat.Print - PrintManager Methode VerarbeiteDruckAuftrag(): Ende: Belegter Speicher:460218368
Drucken via Server
Sobald ein Druckauftrag aufgegeben wurde, schreibt der Print-Service diesen in eine Queue auf der Datenbank. Der Aufruf des Druckers erfolgt dann über ein externes Programm (QuickPDF) mit folgenden Vorgaben an die Druckerwarteschlange:
("#UserLogonName", userLogonName);
("#DokumentName", fileName);
printerName,
startPage,
endPage,
options,
Falls generell Druckprobleme auftreten, kann es nicht schaden, den Service Nexus.Pat.Print neu zu starten. Im Logfiles des Services ist es meist relativ schwierig, das Problem zu finden.
Auszug eines erfolgreichen Drucks:
2019-02-14 14:05:36,408 [6] DEBUG Nexus.Pat.Print - Persistchanges StartPrint
2019-02-14 14:05:36,517 [6] DEBUG Nexus.Pat.Print - StartPrint: ReportJobs successfully stored.
2019-02-14 14:05:36,637 [6] INFO Nexus.Pat.Print - Start: Add ReportJobDetail 10475 to Queue \\CHBS-VM-PRINT01\CHBS-C3004-FA01
2019-02-14 14:05:36,649 [6] DEBUG Nexus.Pat.Print - End: Add ReportJobDetail 10475 to Queue \\CHBS-VM-PRINT01\CHBS-C3004-FA01
2019-02-14 14:05:36,649 [7] DEBUG Nexus.Pat.Print - Start processing Queue \\CHBS-VM-PRINT01\CHBS-C3004-FA01
2019-02-14 14:05:36,665 [7] DEBUG Nexus.Pat.Print - Queue \\CHBS-VM-PRINT01\CHBS-C3004-FA01: ReportJobDetailID 10475: Before GetEntity
2019-02-14 14:05:36,806 [7] DEBUG Nexus.Pat.Print - Queue \\CHBS-VM-PRINT01\CHBS-C3004-FA01: ReportJobDetailID 10475: After GetEntity
2019-02-14 14:05:37,464 [7] INFO Nexus.Pat.Print - PrintManager Methode VerarbeiteDruckAuftrag(): Beginn Reporterstellung. ReporInstanceID : 121313 Dokument: Dokument 918 TestReport Parameter: 1321882 Belegter Speicher:192757760
2019-02-14 14:05:38,542 [7] INFO Nexus.Pat.Print - PrintManager Methode VerarbeiteDruckAuftrag(): Ende CreateReportDocument (Datenbasis Report: Datenbank). ReportInstanceID: 121313
2019-02-14 14:05:45,493 [7] INFO Nexus.Pat.Print - PrintManager Methode VerarbeiteDruckAuftrag(): HasRecords bringt Ergebnis zurück: 121313
2019-02-14 14:05:45,493 [7] INFO Nexus.Pat.Print - PrintManager Methode VerarbeiteDruckAuftrag(): Druckauftrag mit Weiterverarbeitung: 121313
2019-02-14 14:05:45,509 [7] INFO Nexus.Pat.Print - PrintManager Methode 'WeiterVerarbeitungReportDocument() printToPrinter': vor Aufruf PrintToPrinter: ReportInstanceID: 121313
2019-02-14 14:05:47,056 [7] INFO Nexus.Pat.Print - PrintManager Methode 'WeiterVerarbeitungReportDocument() printToPrinter': Dokument wurde erfolgreich gedruckt (PrintToPrinter): ReportInstanceID: 121313
2019-02-14 14:05:54,113 [7] INFO Nexus.Pat.Print - PrintManager Methode VerarbeiteDruckAuftrag(): nach WeiterVerarbeitungReportDocument: 121313
2019-02-14 14:05:54,128 [7] INFO Nexus.Pat.Print - PrintManager Methode VerarbeiteDruckAuftrag(): nach Dokument.UpdateLetzteErstellungDatum: 121313
2019-02-14 14:05:54,128 [7] INFO Nexus.Pat.Print - PrintManager Methode VerarbeiteDruckAuftrag(): Ende: Belegter Speicher:192757760
2019-02-14 14:05:54,128 [7] DEBUG Nexus.Pat.Print - Queue \\chbs-vm-print01\CHBS-C3004-FA01: ReportJobDetail Parameter 1321882 - ID: 10475 - Dokumentid: 918 being processed...
2019-02-14 14:05:54,191 [7] DEBUG Nexus.Pat.Print - Queue '\\chbs-vm-print01\CHBS-C3004-FA01': ReportJobDetail '10475': After DeleteEntity
2019-02-14 14:05:54,191 [7] DEBUG Nexus.Pat.Print - Persistchanges Queue \\CHBS-VM-PRINT01\CHBS-C3004-FA01
2019-02-14 14:05:54,333 [7] DEBUG Nexus.Pat.Print - ReportJobDetails from Queue \\CHBS-VM-PRINT01\CHBS-C3004-FA01 successfully processed.
2019-02-14 14:05:54,552 [7] DEBUG Nexus.Pat.Print - ReportJob(s) from Queue \\CHBS-VM-PRINT01\CHBS-C3004-FA01 successfully processed.
2019-02-14 14:05:54,552 [7] DEBUG Nexus.Pat.Print - End processing Queue \\CHBS-VM-PRINT01\CHBS-C3004-FA01
Am besten prüft man zuerst den Drucker und ob er auf dem Server unter dem entsprechenden Service-User installiert ist.
Zur weiteren Analyse kann es helfen, die Druckaufträge, die der Service entgegengenommen hat, auf der Datenbank zu prüfen.
Der Nexus.Pat.Print-Service erstellt für jeden Druckauftrag mindestens einen Eintrag in der Tabelle „ReportJobDetail" und arbeitet diese dann ab.
Die Details stehen zuerst grundsätzlich auf dem Reportjobstatus „ZuBearbeiten".Sobald das Dokument erstellt und erfolgreich in die Queue eines Druckers gespoolt wurde, wird der verarbeitete Eintrag aus „ReportJobDetail" gelöscht. Falls es ein Problem gab, wird der Datensatz auf „FehlerhaftVerarbeitung" gesetzt.
select get_code_name(reportjobstatus), fehlertext, reportjobdetail.* from reportjobdetail order by id desc;
Falls die letzten ReportJobDetails sich alle auf „ZuBearbeiten" angesammelt haben, weist dies auf einen Hänger vom Print-Service hin. Hier nützt ein Neustart. Typisch tritt dies z.B. beim Drucken auf einen Konica Minolta-Drucker auf, bei dem die obengenannten Einstellungen falsch gesetzt sind.
Falls die Benutzr nur melden, dass einzelne Jobs nicht gedruckt werden, lohnt es sich zu prüfen, wie die Fehlermeldungen der auf Fehler gelaufenen Druckaufträge sind, was auch hier ersichtlich wäre.
Beispielhafte Fehlertexte:
CrystalDecisions.CrystalReports.Engine.FormulaException: Zeichenfolge ist nicht numerisch.
Druckauftrag wurde nicht angenommmen, weil der Drucker ungültig ist. Druckername: '\yyy'
Druck nicht erfolgreich: 'WMI.InstallNetworkPrinter(): Invalid Printer Name. Printername
Häufig helfen diese Fehlermeldungen dann weiter, wenn man den ganzen Datensatz anschaut und sich besonders auf den Druckernamen und mitgegebene Parameter achtet.