===== Lieferschein ===== Mit diesem ersten Beispiel soll der Prozess des Überblendens eines Ausdrucks mit einem Formular gezeigt werden. Für dieses und alle weiteren Beispiele müssen natürlich der (p2f)-Server und der (p2f)-Drucker aktiviert sein, und auch der Drucker muss betriebsbereit sein. Rufen Sie die Beispielapplikation **p2fSample** auf und tragen Sie unter **Anzahl Lieferscheine** eine **1** und unter **Artikel pro Lieferschein** eine **13** ein. Wählen Sie unter **Drucker** den mit dem (p2f)-Treiber aus. Unter **Beispiel** wählen Sie **Lieferscheine** aus. \\ \\ {{print2forms:tutorial:sample4.png}} \\ \\ Wenn Sie jetzt auf die Schaltfläche **Drucken** klicken, wird der Ausdruck gestartet. Eine kurze Meldung bestätigt dies. Für die Demo unter OS/400 oder i5/OS rufen Sie entweder den folgenden Befehl   P2Fsample BEISPIEL(1) LIEFER(1) ARTIKEL(13) auf oder Sie tippen nur   P2Fsample drücken F4, und füllen die drei Parameterfelder mit den Werten 1, 1 und 13 aus. print2forms Beispielprogramm (P2Fsample) Auswahl eingeben und Eingabetaste drücken. Beispiel Nummer . . . . . . . . > 1 1-4 Anzahl Lieferscheine . . . . . . > 1 1-1000 Anzahl Artikel . . . . . . . . . > 13 0-1000 Ende F3=Verlassen F4=Bedienerf. F5=Aktualisieren F12=Abbrechen F13=Verwendung der Anzeige F24=Weitere Tasten Auf Ihrem Drucker sollte ein Ausdruck ähnlich dem folgenden erscheinen: \\ \\ {{print2forms:tutorial:liefer.gif|Ausdruck Lieferschein}} \\ \\ Um sich einen Eindruck davon zu machen, welche Teile des Ausdrucks von der Beispielapplikation generiert wurden, und was (p2f) hinzugefügt hat, ist nachfolgend ein Ausdruck des Programms ohne aktives (p2f) abgebildet: \\ \\ {{print2forms:tutorial:blanco.gif|Eingangsdaten Lieferschein}} \\ \\ Um sich jetzt auch noch einen Eindruck von den Vorgängen im (p2f)-System machen zu können, starten Sie bitte jetzt zum ersten Mal das Administrationsprogramm **p2fAdmin**. Dies geschieht am einfachsten über das Windows-Startmenü Punkt **Programme**, **print2forms** und **p2fAdmin** oder durch einen Doppelklick auf das Icon **p2fAdmin** im Installationsverzeichnis. Es erscheint das noch leere Arbeitsfenster des Administrationsprogramms. Der Hinweis 'Nicht geladen' zeigt an, dass noch keinerlei Daten zum (p2f)-System verfügbar sind. \\ \\ {{print2forms:tutorial:admin1.png|Aufruf Adminstrationsprogramm}} \\ \\ Damit das Administrationsprogramm mit dem Server kommunizieren kann, muss es sich beim Server mit einem Benutzernamen und einem Passwort anmelden. Der Server verfügt über eine Benutzerbeschreibung mit dem Namen **Administrator** und dem Passwort **print2forms**. Auch das Administrationsprogramm ist anfänglich so eingestellt. Die Anmeldung geschieht durch: * Gleichzeitiges Drücken der Tasten **Strg** und **o** (Buchstabe o). * Anwahl des Punktes **Verbinden** im Menü **Datei**. * Klicken auf das Icon mit dem blauen und dem roten Pfeil in der Symbolleiste des Administrationsprogramms. In allen drei Fällen erscheint der Anmeldedialog: \\ \\ {{print2forms:tutorial:admin4.png|Anmeldung Adminstrationsprogramm}} \\ \\ Am Benutzernamen und am Passwort sollte jetzt nichts geändert werden. Klicken Sie einfach auf die Schaltfläche mit der Beschriftung **OK**. Wenn die Verbindung zum (p2f)-Server hergestellt ist, erscheint ein Statusfenster, welches darüber informiert, welche Verzeichnisse innerhalb der Datenbank vom (p2f)-Administrationsprogramm gelesen werden. Je nach Leistung des Rechners kann das Fenster gar nicht oder etliche Sekunden sichtbar sein. \\ \\ Anschliessend wird das Arbeitsfenster des Administrationsprogramms mit den gelesenen Informationen ausgefüllt. \\ \\ {{print2forms:tutorial:admin3.png|Adminstrationsprogramm nach Laden}} \\ \\ Der linke Teil des Arbeitsfensters zeigt den Inhalt des (p2f)-Servers mit den verschiedenen Containern in Form eines Baums - ähnlich der Darstellung im Windows Explorer. Im rechten Teil des Fensters erscheint eine kurze Beschreibung des (p2f)-Servers. Klicken Sie jetzt - wie vom Windows Explorer gewohnt - auf das Plussymbol vor dem Container mit dem Namen **Prozesse**, um diesen zu öffnen. Suchen Sie jetzt in der Liste der Prozesse den mit dem Namen **Lieferschein drucken**. Doppelklicken Sie auf den Prozessnamen. \\ \\ {{print2forms:tutorial:sample3.png|Prozess Lieferschein}} \\ \\ Die Daten für den Prozess werden jetzt vom Server geladen und in der rechten Hälfte des Fensters angezeigt. Im linken Teil des Fensters wird der Prozessname expandiert und Sie sehen eine Baumstruktur, die den Daten im rechten Teil des Fensters entspricht. Mit dem rechten Scroll-Balken können Sie sich jetzt erst einmal alle zum Prozess gespeicherten Informationen anschauen. Parallel dazu können Sie auch im linken Fensterteil die Baumstruktur auf- und zuklappen. Da im ersten Beispiel nur ein einseitiger Lieferschein gedruckt werden soll, interessieren innerhalb der **Seitenfolge** im Moment nur die Einstellungen unter **Einzige Seite**. Dort ist in der Baumdarstellung zu sehen, dass auf eine DIN A4-Seite, Normalpapier gedruckt werden soll, die aus Fach 1 eingezogen werden soll. Weiterhin soll auf die Blattvorderseite mit einem horizontalen Versatz der Nutzdaten gedruckt werden, und es soll ein Formular mit dem Namen **Einzelne Seite** im Subcontainer **Lieferschein** verwendet werden. Dass nur ein Teil dieser Informationen auch im rechten Teil der Anzeige zu sehen sind, liegt daran, dass zur Verbesserung der Übersicht rechts nur solche Werte angezeigt werden, die von der Standardeinstellung abweichen. Um nun einen Blick auf das Formular zu werfen, öffnen Sie den Container **Formulare**, dort den Subcontainer **Lieferschein** und dort das Formular **Einzelne Seite**. \\ \\ {{print2forms:tutorial:sample5.png|Formular Lieferschein}} \\ \\ Sie sehen jetzt auf der rechten Seite, dass sich das Formular einerseits aus einer Ressource **Lieferschein einzelne Seite** und aus zwei weiteren Formularen mit den Namen **Logo mit Firmenanschrift Zentrale** und **Fusszeile mit Geschäftsangaben** zusammensetzt. Allen drei Bestandteilen des Formulars sind absolute Positionsangaben mitgegeben. Das Lieferscheinformular hat demnach folgende Struktur: \\ \\ {{print2forms:tutorial:form1.gif|Zusammensetzung Lieferscheinformular}} \\ \\ Wenn Sie wollen, können Sie sich jetzt auch die beiden anderen Formulare anschauen. Ansonsten öffnen Sie bitte zuguterletzt noch den Container **Ressourcen** und dort die Ressource **Lieferschein einzelne Seite**. Dies ist der eigentliche Teil des Lieferscheinformulars. \\ \\ {{print2forms:tutorial:sample6.png|Ressource Lieferschein}} \\ \\ Jetzt können Sie erkennen, dass für den Druck des Lieferscheinformulars zwei Varianten der PCL-Daten zur Verfügung stehen: eine für einen 300 dpi monochromen Laserdrucker und eine für einen 600 dpi Farblaserdrucker. Beim Farbdrucker sind die PCL-Daten auch noch etwas zu verschieben, was die unterschiedlichen undruckbaren Ränder der Drucker ausgleicht. Die Dateien mit den PCL-Daten **LIEFER.PCL** und **LIEFER_COL.PCL** können Sie sich nicht ansehen. Es handelt sich um reine Binärdaten, die in einem (p2f)-eigenen Format abgelegt sind. Sie können aber einen Testausdruck der Ressource anfordern. Öffnen Sie dazu im Menü **Ansicht** den Punkt **Einstellungen**. Es erscheint ein Dialog mit den diversen Einstellmöglichkeiten des Administrationsprogramms. Hier interessiert der letzte Punkt **Drucker für Testausdruck**. Wählen Sie hier den gleichen Drucker aus, den Sie für die Beispielapplikation gewählt haben - **%%p2f%% Printer**. \\ \\ {{print2forms:tutorial:sample39.png|Einstelldialog Administrationsprogramm}} \\ \\ Gehen Sie jetzt im linken Fenster wieder auf die Ressource **Lieferschein einzelne Seite** und öffnen mit der rechten Maustaste das Kontextmenü. Dort wählen Sie dann den Punkt **Testausdruck**. Als Bestätigung für den erfolgten Ausdruck erscheint eine entsprechende Meldung, die Sie einfach durch einen Klick auf die Schaltfläche **OK** quittieren. Auf dem Drucker erscheint der Inhalt der Ressource. \\ \\ {{print2forms:tutorial:ressource.gif|Ausdruck Lieferschein-Ressource}} \\ \\ Wie sofort auffällt, steht die Tabelle für den Lieferschein sehr nah am linken Rand des Blattes. Aus diesem Grund wird sie dann auch im Formular **Einzelne Seite** um 0,7 cm nach rechts verschoben. Das Firmenlogo und die Fusszeile fehlen natürlich, weil sie ja erst durch das Formular hinzugefügt werden. Bereits an diesem einfachen Beispiel konnten Sie sich bereits einen guten Eindruck vom Zusammenspiel der verschiedenen (p2f)-Komponenten machen. \\ \\ Eine Besonderheit von (p2f) ist aber ebenfalls im ersten Beispiel enthalten: das Zerlegen von grossen Spooljobs mit sich wiederholender Struktur in kleinere Seitengruppen, die dann als Gruppe bearbeitet werden können. Gleichzeitig wird auch noch gezeigt, wie sich mehrteilige Formulare (Startseite, Mittelseite(n), Endseite) realisieren lassen. Tragen Sie in der Beispielapplikation unter **Anzahl Lieferscheine** wieder eine **1** und unter **Artikel pro Lieferschein** diesmal eine **53** ein. Wenn Sie auf die Schaltfläche **Drucken** klicken, wird der Ausdruck gestartet. Eine kurze Meldung bestätigt dies. Für die Demo unter OS/400 oder i5/OS rufen Sie entweder den folgenden Befehl   P2Fsample BEISPIEL(1) LIEFER(1) ARTIKEL(53) auf oder Sie tippen nur   P2Fsample drücken F4, und füllen die drei Parameterfelder mit den Werten 1, 1 und 53 aus. Auf Ihrem Drucker sollten drei Seiten ähnlich den folgenden erscheinen: \\ \\ {{print2forms:tutorial:liefers.gif|Ausdruck Lieferschein Seite 1}} \\ \\ Das (p2f)-System hat erkannt, dass der Lieferschein aus mehr als einer Seite besteht. Auf der ersten Seite des Lieferscheins wurde daher ein Formular verwendet, das keine Fusszeile enthält, und damit mehr Platz für Artikel bietet. \\ \\ {{print2forms:tutorial:lieferm.gif|Ausdruck Lieferschein Seite 2}} \\ \\ Das (p2f)-System hat auch erkannt, dass der Lieferschein aus mehr als zwei Seiten besteht, und daher auf der zweiten Seite des Lieferscheins ein anderes Formular verwendet, das eine verkürzte Kopfzeile verwendet und keine Fusszeile enthält. Damit wird noch mehr Platz für Artikel frei. \\ \\ {{print2forms:tutorial:liefere.gif|Ausdruck Lieferschein Seite 3}} \\ \\ Das (p2f)-System hat erkannt, dass dies die letzte Seite des Lieferscheins ist, und daher ein Formular gewählt, das eine verkürzte Kopfzeile aber jetzt eine Fusszeile enthält. Um einen Eindruck davon zu bekommen, wie das (p2f)-System die Entscheidung über die Formularauswahl trifft, öffnen Sie im Administrationsprogramm den Prozess **ExLiefer - Lieferscheine ermitteln**. Der Namensbestandteil 'ExLiefer' ist wieder vorangestellt, um für OS/400 und i5/OS einen eindeutigen Namen zu erzwingen. \\ \\ {{print2forms:tutorial:sample10.png|Prozess Lieferschein}} \\ \\ Unter dem Punkt **Dokumentgrenze** ist angegeben, dass eine Dokumentgrenze dann erreicht ist, wenn der Inhalt eines Textfeldes im Dokument seinen Wert wechselt. Das Textfeld, das geprüft werden soll, ist unter **Feldindex** angegeben. Woher der Wert für den Feldindex kommt, soll im Rahmen dieses Beispiels zunächst keine Rolle spielen, nur soviel: er kennzeichnet das Feld, in dem die zweiteilige Lieferscheinnummer ausgegeben wird. Unter **Vergleichswert** wird angegeben, welche Daten innerhalb des Textfeldes wechseln sollen. Auch hier soll der kryptische Ausdruck zunächst nur insofern interessieren, als er beschreibt, dass im Textfeld zwei durch einen Schrägstrich getrennte Zahlen überprüft werden sollen. Mit diesen Angaben wird das (p2f)-System dazu veranlasst, alle Seiten bis zum Wechsel des angegebenen Feldinhalts (oder bis zum Ende des Druckjobs) in einem Puffer aufzusammeln, anstatt sie auszudrucken. Dieser Puffer mit den zusammengehörenden Seiten bildet ein Dokument innerhalb des gesamten Druckauftrags und wird dann zur weiteren Bearbeitung dem bereits bekannten Prozess **Lieferschein drucken** übergeben. Mit den Angaben unter **Bedingungsliste** kann die Weitergabe an den Prozess gegebenenfalls von Angaben innerhalb des Dokuments abhängig gemacht werden. Die Angaben unter **Drucker** beziehungsweise **Gateway** dienen dazu, das Dokument eventuell an einen anderen Drucker oder an ein Gateway weiterzuleiten. Öffnen Sie jetzt noch einmal den Prozess **Lieferschein drucken**. Unter dem Punkt **Seitenfolge** finden sich insgesamt vier Einträge. \\ \\ {{print2forms:tutorial:sample11.png|Prozess Lieferschein}} \\ \\ Die Gruppe **Seitenfolge** definiert, wie mehrere Seiten unterschiedlich formatiert werden. Dazu wird eine Reihe von Zuständen definiert, zwischen denen hin und her gewechselt wird. Die Zustandswechsel erfolgen entweder aufgrund von Bedingungen (Eintrag **Seitentyp**) oder von neuen Seiten (Eintrag **Nächste Anweisung)**. Jeder Druckjob startet im ersten Zustand der **Seitenfolge**. Zustand **Einzige Seite** hat als **Anweisung** den Wert **Einzige Druckseite**. Es wird also geprüft, ob es sich um die einzige Seite des Druckjobs handelt. Ist dies der Fall, wird die Seite entsprechend den Angaben des Zustands **Einzige Seite** formatiert und dann in den nächsten Zustand gegangen. Ist der Druckjob länger als eine Seite, wird der Zustand **Einzige Seite** ignoriert und es wird automatisch der nächste Zustand getestet. Im vorliegenden Fall ist der Druckjob drei Seiten lang, und demnach wird der Zustand **Einzige Seite** ignoriert und der Zustand **Erste Seite** geprüft. Zustand **Erste Seite** hat als **Seitentyp** den Wert **Druckseite**, was bedeutet, dass die Seite ohne Bedingung formatiert werden muss. Die erste Seite unseres Druckjobs wird also jetzt mit den Angaben von Zustand **Erste Seite** formatiert und ausgegeben. Anschliessend wird aufgrund der fehlenden Angabe unter **Nächste Anweisung** automatisch in den Zustand **Letzte Seite** gegangen. Zustand **Letzte Seite** hat als **Seitentyp** den Wert **Letzte Druckseite**. Es wird also geprüft, ob es sich um die letzte Seite des Druckjobs handelt. Ist dies der Fall, wird die Seite entsprechend den Angaben des Zustands **Letzte Seite** formatiert und dann in den nächsten Zustand gegangen. Ist dies nicht die letzte Seite im Druckjob, wird der Zustand **Letzte Seite** ignoriert und der nächste Zustand wird getestet. Im vorliegenden Fall wird jetzt die zweite Seite des Druckjobs bearbeitet, sodass der Zustand **Letzte Seite** ignoriert und in den Zustand **Mittlere Seite** gegangen wird. Zustand **Mittlere Seite** hat als **Seitentyp** wieder den Wert **Druckseite**, sodass die zweite Seite des Druckjobs jetzt mit den Angaben unter Zustand **Mittlere Seite** formatiert und ausgegeben wird. Wegen der Angabe unter **Nächste Anweisung** wird anschliessend wieder in den Zustand **Letzte Seite** gewechselt. Im Zustand **Letzte Seite** fällt jetzt die Prüfung auf die letzte Druckseite positiv aus, sodass die dritte und letzte Seite des Druckjobs gemäss den Angaben des Zustands **Letzte Seite** formatiert und ausgegeben wird. Anschliessend wird zwar wieder in Zustand **Mittlere Seite** gegangen, doch da die letzte Seite des Druckjobs bearbeitet wurde, stoppt die Verarbeitung. In einem traditionellen Flussdiagramm ausgedrückt, hat der Prozess **Lieferschein drucken** folgende Struktur: \\ \\ {{print2forms:tutorial:diagram.gif|Ablaufdiagramm Lieferscheindruck}} \\ \\ Der Prozess **Lieferschein drucken** ist also jetzt beendet und es wird wieder der ursprüngliche Prozess **ExLiefer - Lieferscheine ermitteln** aktiviert. Da der gesamte Druckjob nur aus drei Seiten bestand, gibt es für diesen Prozess nichts weiter aufzusammeln und er terminiert auch. Wenn Sie in der Beispielapplikation unter **Anzahl Lieferscheine** jetzt eine 3 eintragen und einen Ausdruck starten, wird der Prozess **ExLiefer - Lieferscheine ermitteln** insgesamt drei Gruppen aus dem Druckjob extrahieren (aufgrund der unterschiedlichen Lieferscheinnummern) und für jede Gruppe den Prozess **Lieferschein drucken** aufrufen. Wenn Sie sich die erzeugten Lieferscheinseiten genauer ansehen, werden Sie am linken Rand Strichmarkierungen bemerken, wie man sie zur Steuerung von Papiernachbearbeitungsmaschinen benutzt. Die Marke auf der ersten Seite ist beispielsweise für das Starten einer Kuvertiervorrichtung verantwortlich. Die Marken auf weiteren Seiten zeigen nur an, dass diese Seiten aufgesammelt werden sollen, während die Marke auf der letzten Seite den eigentlichen Kuvertiervorgang auslöst. \\ \\ {{print2forms:tutorial:multi2.gif|Eindruck Kuvertiermarken}} \\ \\ Mit der Zustandssteuerung innerhalb der (p2f)-Prozesse lässt sich also auch die Papiernachbearbeitung mitsteuern, ohne dass dies im Anwendungsprogramm, das die Nutzdaten erzeugt hat, berücksichtigt worden wäre. (p2f) kann, was das Aussehen und die Positionen der Marken betrifft, praktisch beliebig angepasst werden. ((Für die Erzeugung komplizierterer Steuercodes von Kuvertier- oder Falzmaschinen steht für praktisch alle namhaften Hersteller ein Hilfsprogramm zur Verfügung, dass die Codes automatisch erstellt und in die Druckausgabe mit aufnimmt.\\ \\ )) \\ \\