[gelöst] Ausdrucken externer Dateien aus Navision

12. Juni 2006 19:08

Tach zusammen,
entweder hab ich nach falschen Schlüsselwörtern gesucht, oder das Thema gab es noch nicht ;-)

Wir haben zum Artikel eine zusätzliche Tabelle mit Pfad/Dateiname angelegt, in der für jeden Artikel beliebig viele verschiedenartige Dokumente hinterlegt werden können, z.B. Konstruktionszeichnungen, Prüfvorschriften, etc.
Nun soll ein Report gedruckt werden, der so eine Art Produktionsauftrag für Stücklistenartikel (die normalen BOM Component Parent Items) darstellen soll.
Dazu sollen auch die zusätzlichen Dokumente ausgedruckt werden.
Ich suche dafür nun eine Möglichkeit, wie ich aus Navision heraus programmgesteuert sozusagen mit der Rechten Maustaste auf die Datei klicke und den Befehl drucken wähle.
Wir setzen hier vorraus, dass die nötigen Programme installiert sind und auch den Druckbefehl über die Dateitypen-Konfiguration (Ordneroptionen) eingerichtet haben. Die Windowsfunktion dazu heißt Print, soviel weiss ich schon ;-)
hat das jemand schon mal gemacht? oder hat jemand einen Tip mit welcher Automation ich da herangehen kann?
Ich möchte nach Möglichkeit vermeiden, hinter jedem File auch noch ein Feld mit dem kompletten Befehlsaufruf zum Drucken zu hinterlegen.
Zuletzt geändert von Michael Schumacher am 13. Juni 2006 23:08, insgesamt 1-mal geändert.

13. Juni 2006 22:06

Hallo Michael,

"Print" zu benutzen ist ein richtiger Ansatz finde ich. Um diesen Befehl aufzurufen würde ich eine WSHShell-Automation benutzen:


wshShell Automation 'Windows Script Host Object Model'.WshShell


IF ISCLEAR(wshShell) THEN
CREATE(wshShell);
Path:='c:\boot.ini';
wshShell.Run('print ' + Path);
CLEAR(wshShell);

"Path" wäre bei dir der Pfad aus deiner Tabelle. Ein bisschen schade ist, dass "Print" auf LPT1 druckt, wenn nicht explizit ein Drucker durch den Parameter "/d:" mitgegeben wird. Informationen dazu findest du hier:

http://www.microsoft.com/resources/docu ... x?mfr=true

Ich hoffe, das hilft dir weiter.

Viele Grüße

Helge

13. Juni 2006 23:08

Hallo Helge,
Der DOS-Befehl Print funktioniert auch nur mit ascii dateien, nicht mit Bildern oder Word-Dokumenten, was ich meinte ist das klicken mit der rechten Maustaste im Explorer auf den Dateinamen und dann den Befehl Drucken (statt öffnen) wählen.

ich bin mittlerweile bei MiBuSo.Com fündig geworden:

Print files with an associated application

Den dort geposteten Code muss man nur soweit ergänzen, dass er bei deutschem Windows auch nach DRUCKEN und nicht nur nach PRINT sucht, denn PRINT versteht das deutsche XP scheinbar nicht mehr.....

Re:

25. Juni 2010 16:00

Helge hat geschrieben:
Code:
IF ISCLEAR(wshShell) THEN
CREATE(wshShell);
Path:='c:\boot.ini';
wshShell.Run('print ' + Path);
CLEAR(wshShell);


Ich suche nach jemanden, der sich selbst schon mal am "Helge-Code" versucht hat und vielleicht eine Idee hat, warum es bei mir nicht funktioniert?
Konstellation: Ich habe versucht, jeweils an einem Netzwerkdrucker und an meinen PDF-Drucker (LPT1) einen Druckbefehl abzusetzen. Zu drucken galt es eine simple txt-Datei.
Der Befehl selbst wird brav durchlaufen, es blitzt kurz eine DOS-Box auf, und danach ... nix. Ich habe es nicht geschafft, wirklich einen Ausdruck zu erzeugen. Woran könnte es liegen?

Re: [gelöst] Ausdrucken externer Dateien aus Navision

25. Juni 2010 16:14

Hast du denn wirklich einen Drucker, der für LPT1 eingerichtet ist? (Eigenschaften des Druckers->Anschlüsse) Bei mir ist zB nur der Apple-Drucker, den der PDF-Drucker braucht. Alle anderen haben virtuelle Ports.

Re: [gelöst] Ausdrucken externer Dateien aus Navision

25. Juni 2010 16:15

ss64.com

Default device ist PRN und nicht LPT1.

Gruß,
Sebastian

Re: [gelöst] Ausdrucken externer Dateien aus Navision

25. Juni 2010 16:17

McClane hat geschrieben:Hast du denn wirklich einen Drucker, der für LPT1 eingerichtet ist? .

Jupp, eben das war mein PDF-Drucker.

ss64.com hat geschrieben:The default device is PRN. The values PRN and LPT1 refer to the same parallel port.

PRN existiert gar nicht als möglicher Anschluss bei mir?
Unabhängig davon hab ich ja als Gegenbeispiel den Netzwerkdrucker versucht und den Druckerpfad dafür natürlich mit angegeben - gleicher Effekt :-(

Re: [gelöst] Ausdrucken externer Dateien aus Navision

25. Juni 2010 16:21

Schau dir doch mal die Ausgabe von dem Befehl in der Kommandozeile selbst an und nicht im Navision.

Re: [gelöst] Ausdrucken externer Dateien aus Navision

25. Juni 2010 16:29

Hallo Natalie,

das funktioniert nur dann, wenn du standardmäßig an LPT1: also der parallelen Schnittstelle, einen Drucker angeschlossen hast, oder die Schnittstelle mit 'net use' auf einen freigegebenen Netzwerkdrucker umgeleitet ist.
Und dann funktioniert das ganze nur, wenn der Drucker auch die Daten versteht, die der print-Befehl an die Schnittstelle schickt. Print schickt nur die Datei 1:1 an den Drucker.

D.h. 'print test.pdf' wird nur Blödsinn auf viele Seiten Papier verteilen, 'print test.ps' könnte funktionieren, wenn der Drucker Postscript versteht.

Gruß, Fiddi

Sorry, andere waren teilweise schneller, aber ich hoffe die Info hilft die trotzdem noch weiter. :wink:

Re: [gelöst] Ausdrucken externer Dateien aus Navision

25. Juni 2010 16:59

Sebastian Pfliegel hat geschrieben:Schau dir doch mal die Ausgabe von dem Befehl in der Kommandozeile selbst an und nicht im Navision.


lol das war wohl zu einfach :oops:
Das ist dabei herausgekommen:

  1. Mein Dateipfad besteht aus ...\Dokumente und Einstellungen\...
    Die Kommendozeile erwartet einen zusammenhängenden String. Also: ...\"Dokumente und Einstellungen"\...
    Ist logisch, aber irgendwie wäre ich nie drauf gekommen ...
  2. Druck an PDF-Drucker (LPT1): Erhalte Meldung: "... wird momentan gedruckt". Leider hat das trotzdem nicht funktioniert: Es hätte in einem bestimmten Ordner ein PDF abgelegt werden sollen. Wurde es aber nicht.
  3. Druck an Netzwerkdrucker: funktionert!!!
  4. ABER: Mittlerweile habe ich zwei Ausdrucke: Den eben erzeugten (1) und einen mit der Methode von Michael (2). Beides mal die gleiche Datei, beides mal der gleiche angesprochende Drucker. Halte ich die beiden nebeneinander, unterscheiden sie sich: Schriftart, Größe. Bei Methode 2 erscheinen wie gewohnt Dateiname und Seitenanzahl im Kopf- bzw. Fußbereich. Methode 1 liefert nur den Inhalt der Textdatei.
Wie ist das jetzt zu erklären?

Edit: Danke fiddi, du hast meine Fragen schon beantwortet :-) (und den anderen natürlich auch DANKE)

Re: [gelöst] Ausdrucken externer Dateien aus Navision

28. Juni 2010 09:32

Natalie hat geschrieben:Druck an Netzwerkdrucker: funktionert!!!

Ein im Netzwerk freigegebener Drucker, oder ein Drucker mit eigener IP? Letzteres kriege ich nämlich nicht hin :-(

Re: [gelöst] Ausdrucken externer Dateien aus Navision

28. Juni 2010 09:36

McClane hat geschrieben:Ein im Netzwerk freigegebener Drucker, oder ein Drucker mit eigener IP? Letzteres kriege ich nämlich nicht hin :-(

"Leider" ersteres. Zumindest kenne ich dessen IP nicht und spreche ihn hierüber auch nicht an.

Re: [gelöst] Ausdrucken externer Dateien aus Navision

28. Juni 2010 09:51

MacClane hat geschrieben:Ein im Netzwerk freigegebener Drucker, oder ein Drucker mit eigener IP? Letzteres kriege ich nämlich nicht hin.


Auch letzteres sollte möglich sein, wenn du den Drucker normal auf deinem Rechner als ganz normalen Windows-Drucker, der an einem Printserver angeschlossen ist, einrichtest. Diesen Drucker gibst du einfach frei. Jetzt kannst du mit "net use" auch diesen Drucker für den print- Befehl nutzen.

Hab's nicht ausprobiert, sollte aber trotzdem klappen :-) .

Gruß, Fiddi

Re: [gelöst] Ausdrucken externer Dateien aus Navision

28. Juni 2010 09:55

fiddi hat geschrieben:Auch letzteres sollte möglich sein, wenn du den Drucker normal auf deinem Rechner als ganz normalen Windows-Drucker, der an einem Printserver angeschlossen ist, einrichtest.

Hm. Der hängt aber an keinem Printserver, sondern am selben Router wie mein PC (?).

fiddi hat geschrieben:Jetzt kannst du mit "net use" auch diesen Drucker für den print- Befehl nutzen.

Habe ich ja krampfhaft versucht. Nur wie? "net use lpt1 192.168....." bringt einen Fehler. Den Namen des Druckers hinten an die IP-Adresse zu hängen nützt auch nichts.

Re: [gelöst] Ausdrucken externer Dateien aus Navision

28. Juni 2010 10:21

@McClane,

wenn du den Drucker auf deinem PC einrichtest und freigibst, dann bekommt der doch einen Freigabenamen, oder nicht?? Da benötigst du dann keine IP mehr. (Die Datei- und Druckerfreigabe muss natürlich installiert sein)

Wenn du jetzt 'net use lpt1: \\DeinPCName\Druckerfreigabename' eingibst, sollte es klappen.

Gruß, Fiddi

Re: [gelöst] Ausdrucken externer Dateien aus Navision

28. Juni 2010 10:38

Ja, das klappt, danke :) Ich dachte nur, ich könnte das Ding über seinen virtuellen Port oder sonstwie direkt ansprechen und mir die Freigabe ersparen.

Re: [gelöst] Ausdrucken externer Dateien aus Navision

28. Juni 2010 10:50

sollte auch funktionieren, wenn der Drucker die Windowsfreigabe auch selbst durchführen kann. Dann sollte 'net use lpt1: \\192.168.1.1\Portname' auch ein brauchbares Ergebnis liefern.

Gruß, Fiddi

Re: [gelöst] Ausdrucken externer Dateien aus Navision

28. Juni 2010 11:24

fiddi hat geschrieben:sollte auch funktionieren, wenn der Drucker die Windowsfreigabe auch selbst durchführen kann.

Der kann ja alles Mögliche, vom E-Mail-Versand beim Öffnen der Klappe bis Kaffee kochen, aber ob er sich selbst freigeben kann, kriege ich grad nicht raus, weil der %&$§(&%$-Admin das Password verdreht hat :evil:

Aber so optimal scheint mir der Weg über Print auch nicht, weil die Sonderzeichen mal wieder anders gedruckt werden :-?

Re: [gelöst] Ausdrucken externer Dateien aus Navision

28. Juni 2010 12:47

@MacClane,

du solltest meinen Beitrag weiter oben lesen, wo ich die Funktionsweise von Print kurz beschrieben habe. Print tut im Prinzip nichts anderes, als 'Copy DATEINAME LPT1', d.h. er kopiert die Datei auf die Schnittstelle. Wenn der Drucker das versteht, was in der Datei steht, z.B. weil Sie im Postscript- Format ist und der Drucker Postscript versteht, oder der Drucker eine Lineprinter- Emulation für Epson FX ?? oder OKI sonstnochwas hat, und die Druckeremulation auf den Zeichensatz deiner Datei eingestellt ist, dann kommt auch bei print einer Textdatei was brauchbares heraus. In allen anderen Fällen wird ein Laserdrucker einen auf viele Seiten verteilten Nonsens produzieren.

Gruß, Fiddi

Re: [gelöst] Ausdrucken externer Dateien aus Navision

28. Juni 2010 12:55

Hab ich schon gelesen, und reiner Text sieht ja auch völlig ok aus. Aber in einem anderen Thread ging es um die Umwandlung des Euro-Symbols in einem Dataport, und die Testdatei davon habe ich zufällig zum Spielen mit dem Print-Befehl genommen.
Ergebnis:
- Aus Notepad gedruckt ist das Euro-Symbol korrekt
- Per Print wird das Zeichen gedruckt, in das das Euro-Symbol umgewandelt wurde
(also einmal Ascii- und einmal Ansi-Darstellung).

Wollt nur sagen, dass man darauf vor Erstellen der Datei achten sollte.

Achja: um auf viele Seiten verteilten Nonsens zu produzieren, brauche ich keinen verqueren Ausdruck :mrgreen:

Ausdrucken externer Dateien aus Navision

23. März 2011 16:22

Hilfe,

ich sollte dies auch umsetzen, damit zusätztlich noch zu den z.B. Angeboten noch weitere PDF Dokumente automatisch gedruckt werden.

Ich würde dies gerne automatisch machen, d.h. dass der Befehl sich den Standarddrucker unter Windows raussucht ohne diesen im Code zu hinterlegen.

@Michael

Ich komme mit dem Code auf Mibuso nicht so ganz klar:

PrintFile( FileName : Text[250])
CREATE(objShell);
IF NOT EXISTS(FileName) THEN
EXIT;
SplitDirFile(FileName,Dir,File);
objFolder := objShell.NameSpace(Dir);
objFolderItems := objFolder.Items;
objFolderItem := objFolderItems.Item(File);
objVerbs := objFolderItem.Verbs;
i:=-1;
REPEAT
i+=1;
IF i<objVerbs.Count THEN
objVerb := objVerbs.Item(i);
UNTIL (STRPOS(UPPERCASE(objVerb.Name),'PRINT')>0) OR (i >=objVerbs.Count);
IF i<=objVerbs.Count THEN BEGIN
objVerb.DoIt;
END ELSE
ERROR('Could not print file %1\Make sure you use a file extension you can print from Windows Explorer', FileName);

Was sind hier welche Variablen und was brauche ich da. Verstehe das nicht so ganz. Könntest Du mir bitte weiterhelfen.

Re: [gelöst] Ausdrucken externer Dateien aus Navision

23. März 2011 17:15

Michael wird dir da leider nicht mehr weiterhelfen können ...

Bei diesen "obj"-Variablen handelt es sich um Automations. Wenn ich mich nicht täusche müsste es sich um folgenden Automation Server handeln: "Microsoft Shell Controls And Automation".

Re: [gelöst] Ausdrucken externer Dateien aus Navision

24. März 2011 08:52

Oh sch.... Habe ich nicht gewusst und übersehen.

Sorry.

Re: [gelöst] Ausdrucken externer Dateien aus Navision

24. März 2011 09:17

detlef hat geschrieben:The following Function is using Automation Objects from 'Microsoft Shell Controls And Automation' (Shell32).


Hier haben wir es sogar nochmal ;)

Sag bescheid, ob es bei dir klappt. Dann kann man dir sicher noch irgendwie weiterhelfen.