Hallo,
habe da ein Problem, das wie mir scheint, eher bei Windows liegt.
Wir haben bei unserem Jobserver einen Job, der bei Freigabe einer Datei automatisch einen Job "PDF-Erzeugen" ausführt. Dieser Job Läuft folgendermaßen durch:
vorher:
JBSPropUpdate;
___Shell(rm(#DOCNAME1));___Return_0;
Befehle:
shellexecute(print "$TargetFile");___Return_0;
JBSLastCreatedProcessWait(30000);
Das ist soweit in Ordnung.
Das Problem hierbei ist, dass der Vorgang
"shellexecute(print "$TargetFile");___Return_0;"
so schnell geht, dass die Felder im Word-Dokument nicht aktualisiert werden.
So habe ich nach Freigabe des Dokumentes ein Word-Dokument mit einem gefüllten Feld "Freigabedatum". Im PDF ist dieses Feld jedoch nicht gefüllt.
Jetzt habe ich anhand der dürftigen Doku von Compass ein wenig gestöbert und versucht einen Alternativjob zu schreiben, der die betroffene Datei vor dem PDF-Erzeugen öffnet, einige Sekunden wartet, bis die Felder aktualisiert sind, und die Datei dann wieder speichert.
Das funktioniert mit folgenden Befehlen:
"C:\progra~1\micros~2\office11\winword.exe" "$TargetFile" /nologo /p
sleep(5000)
save "$TargetFile"
sleep(2000)
System(taskkill /f /im winword.exe)
sleep(5000)
shellexecute(print "$TargetFile");___Return_0;
JBSLastCreatedProcessWait(30000);
Die Datei (vorher unbemerkt vom System ins jobservertemp-Verzeichnis kopiert) wird mit Word geöffnet, das System wartet und speichert dann die Datei. Mit dem taskkill schieße ich Word ab, weil ich keinen Befehl zum Beenden von Word mit Nachfrage "Speichern Ja/Nein" gefunden habe. Dies wäre hilfreich, da dann die temporären "~.....doc" Dateien ausbleiben würden.
Nun ja, danach läuft der shellexecute und öffnet wie früher um zu drucken. Hierbei schließt sich dann auch Word wieder alleine (Windows-systembedingt)
Das funktioniert alles bis auf einige Kleinigkeiten:
Die Dateien im Jobservertemp bleiben stehen
Der Job funktioniert nur manuell, nicht aber bei automatischer Freigabe einer Datei. Er wird zwar gestartet, bricht aber beim schon beim Speichern mit
07/13/06, 17:45:18: Kommando save "T:\Jobservertemp\1152805483TEST2.doc" beendet mit Rückgabewert -2147024891
ab.
Nun bitte ich euch um Hilfe.
Meines Erachtens gibt es zwei Lösungsansätze
1. Den Vorgang "shellexecute(print "$TargetFile") nach dem öffnen der Word-Datei pausieren lassen, bis sich die Felder aktualisiert haben (scheint mir nicht so einfach möglich)
2. Das Skript so erweitern oder anpassen, dass der Jobserver nicht auf die in das jobservertemp-Verzeichnis kopierte Datei ($TargetFile) zugreift, sonder direkt auf die in den Caddaten hinterlegte ("#(DOCNAME0)").
Ich hoffe, dass dieses Problem nicht schon 100x gepostet wurde und dass irgendjemand mit dem Jobserver so fit ist und hier eine Lösung weiß.
Vielen Dank vorab.....
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP