Beispiel Formularerstellung

 Formulare

Anhang

Beschreibung

Es soll eine neues Dokument (eine Layout-Vorlage) erzeugt werden die Lieferscheine anhand der Lieferpositionen drucken kann.

Ein Lieferschein ist gewöhnlich folgende Bausteintypen unterteilt.

Die Bausteine können anschließend in ein Gesamtdokument eingefügt werden und bei bedarf auf andere Dokumenttypen angewandt werden. Zum üben mit dem Umgang des Formulargenerators erstellen wir aber alle Dokumentbausteine alleine.

Dokumentbausteine werden in zwei verschiedene Arten klassifiziert:

Die feststehenden Dokumentenbausteine haben eine definierte Position auf dem Dokument. Bsp: "Kopfzeile" (z. B. die Firmenadresse) und Dokumentenkopf (z. B. Lieferscheinangaben) stehen immer an fester Position auf der Seite. Der Listenkopf steht immer an fest definierter Position auf jeder Seite wo die Liste angezeigt wird. Die einzige Ausnahme bildet die Listenposition und Listengruppe. Diese werden dynamisch auf alle Seiten im Dokument verteilt. Je nachdem wie viele Positionen eine Liste umfasst und  

Dokumentbausteine können mit Bedingungen ausgestattet sein, so dass sie z. B. nur auf der ersten Seite oder nur auf Folgeseiten aufgeführt werden. Als 

Doppelclick auf das Bild öffnet Detailansicht

Erstellen von Dokumentbausteinen

Neue Dokumentbausteine können über den Menüpunkt "Basisdaten"->"Dokumente"->"Dokumentbaustein" angelegt werden. Dokumentbausteine haben eine frei zu vergebende Id, einen Bausteintypen und eine Bausteinbezeichnung. Die Bausteinbezeichnung kann in mehreren Sprachen angegeben werden. Mit den PageUp und PageDown Tasten kann zwischen den Sprachen gewechselt werden.


(siehe allgemeine Beschreibung: "Mehrsprachigkeit")

Die Baustein-Id kann frei gewählt werden und wird nicht vom System generiert. Sie darf auch Alphanumerische Zeichen enthalten. Es ist Sinnvoll ein Schema aufzubauen welches sich an die Umgebung der erforderlichen Dokumente in einem Unternehmen anpasst. Von ClassiX® wird allerdings kein Schema vorgegeben, da dieses nicht für Unternehmen sinnvoll ist.

Bei den Dokumentbausteinen kann zwischen den verschiedenen Methoden den Inhalt anzuzeigen unterschieden werden.

Für jeden Baustein kann weiterhin angegeben werden ob er auf eine neuen Seite beginnen soll oder ob nach dem Drucken des Bausteins ein Seitenumbruch eingefügt werden soll.

Jeder Baustein (ob mit oder ohne Inhalt) kann weiter Unterbausteine enthalten welche ihm logisch zugeordnet sind. (Bsp.: die Überschrift der Artikelaufzählung sowie die Artikelpositionen werden einen übergeordnetem Listengruppen-Baustein zugeordnet.

Um jetzt in dem Beispiel "Lieferschein drucken" den ersten Baustein anzulegen wird für einen neuen Baustein der Typ "Dokumentkopf" ausgewählt, eine Id vergeben und der Baustein benannt (z. B. Lieferschein Dokumentkopf). Falls ein Dokumentbaustein von verschiedenen Dokumentarten verwendet werden soll empfiehlt es sich eine Bezeichnung zu wählen die darauf hindeutet.

Um das Beispiel möglichst einfach zu halten, empfiehlt es sich im ersten Schritt für den Inhalt ein "Einfaches Dokument" zu wählen. Durch Doppelklick in das Hauptfeld gelangt man in den Microsoft-Word Editor.

Doppelclick auf das Bild öffnet Detailansicht

Im MS-Word Editor kann der Layoutentwurf für den Dokumentkopf entworfen werden. Falls noch keine Erfahrungen im Umgang von MS-Word mit dynamischen Datenfeldern bestehen empfiehlt es sich zuerst einen statischen Layoutentwurf zu erstellen indem die Formatierung von Tabellen, Schrift und eingefügten Grafiken festgelegt wird (siehe o. a. Abbildung).

Dynamische Datenfelder

Sobald der Layoutentwurf steht können die statischen Angaben (z. B. Name, Vorname, Ansprechpartner, Datum etc.) durch dynamische Feldvariablen ersetzt werden. Markieren Sie das Feld (z. B. Name) und wählen Sie aus dem MS-Word-Menüpunkt: "Einfügen"->"Feld...". In der Kategorie: "Dokumentautomation" befindet sich der Feldname: "DocVariable". Wählen Sie diesen Feldnamen und fügen Sie den Variablennamen hinzu (z. B. "DOCVARIABLE customer.partner.name"). Falls die eingefügten Feldnamen im MS-Word Dokument in einer ungewohnten Form erscheinen können die Feldfunktionen über ALT + F9 ein oder ausgeschaltet werden.

{DOCVARIABLE customer.partner.name \*MERGEFORMAT}
eingeschaltete Feldfunktionen (umschalten mit ALT + F9)

<< customer.partner.name >>
ausgeschaltete Feldfunktionen (umschalten mit ALT + F9)

Diese Methode kann jetzt auf sämtliche in dem MS-Word Dokument zu sehenden Felder angewandt werden. Dazu gehört evtl. auch die Absendadresse im Firmenkopf (z. B. bei unterschiedlichen Auslieferungslagern).

Verbinden mit ClassiX®-Makros

Anstatt auf den Variablennamen zu verweisen können auch ClassiX® Makros aufgerufen werden. Der Aufruf erfolg über die Methode "Call"

{ DOCVARIABLE call(OrderItemDescription) \* MERGEFORMAT }

Verwenden von Methoden der ClassiX®-Objekte

Es ist auch möglich, Objektmethoden aus Word aufzurufen. Dazu wird das ClassiX®-Objekt wie oben beschrieben eingefügt. Der Zugriff auf die Objektmethode geschieht dann nach C++-Konvention. Die Übergabe von Parametern ist möglich.

{ DOCVARIABLEquantity.string(NF_DIMENSIONED,NF_SIG_PRECISION)\*MERGEFORMAT }

Ablaufsteuerung über IF-Anweisung

Word bietet die Möglichkeit, den Ablauf über Verzweigung zu steuern. Dies geschieht mit der IF-Anweisung. Diese wird über das Menü Einfügen/Feld und der Auswahl des Feldnamens IF in der Kategorie Dokumentautomation eingefügt. Eingefügt wird der Eintrag { IF }. Die Anweisung ist nun mit der Bedingung und den Anweisungen für die beiden Fälle wahr und falsch aufzufüllen.

Der Eintrag 
            { IF } 
ist zu ändern in 
            { IF bedingung „Anweisung für wahr“ „Anweisung für falsch“ }

Wichtig sind die Anführungsstriche bei den Anweisung. Diese kapseln die Anweisung.

Bedingtes Dokument

In diesem Beispiel "Lieferschein drucken" wurde ein einfaches Dokument erstellt welches somit nur in einer einzigen Form existiert. ClassiX® bietet die Möglichkeit die Dokumente "bedingt" darzustellen. Als leicht verständliches Beispiel dient die Fallannahme, das ab einen bestimmten Zeitpunkt (z. B. 01. Jan. 2003) ein neues Firmenlogo mit neuem Dokumentkopf gilt. Wir wählen nun also den Dokumentbaustein aus der Dokumentbaustein Auswahlliste und gehen in den Bearbeitungsmodus. Wird die Auswahlbox des Inhalts von "Einfaches Dokument" auf "Bedingtes Dokument" gesetzt kann der Inhalt nun in den bedingten Dokumentbaustein übernommen werden. 

Das Dokumentbausteinfenster hat jetzt sein Design geändert. Statt einer Vorschau auf das OLE-Objekt sieht man nun die verschiedenen Auswahlbedingungen. Über die rechte Maustaste kann nun eine weitere Bedingung hinzugefügt oder eine selektierte Bedingung entfernt werden.

Festlegen der Bedingungen

Per Doppelklick erhält man nun ein weiteres Fenster in dem die Bedingung für das Dokument festgelegt werden kann. Für das o. G. Beispiel kann man jetzt die entsprechende Bedingung einfügen. Der Ursprungskopf soll für alle Belege gelten, welche noch im Jahr 2002 erstellt wurden. Die Formel lautet: "date.YearOfDate()<2002".

Für das Beispiel kann jetzt die Formatierung aus dem Worddokument entweder lokal gespeichert oder in die Zwischenablage kopiert werden. Eine neue Bedingung lässt sich mit der rechten Maustaste erzeugen.

Die Bedingungen werden der Reihe nach von Oben nach unten durchgearbeitet. Ist eine Bedingung erfüllt, wird der Vergleich abgebrochen. Es ist also nicht notwendig eine Else-Bedingung für den Alternativ-Dokumentkopf einzugeben. Über die Tasten Pfeiltaste rauf und Pfeiltaste runter kann die Reihenfolge der Bedingungen getauscht werden.

Für die zweite Bedingung kann jetzt der Inhalt der Zwischenablage in das neue Dokument eingefügt werden und nach eigenen Vorstellungen geändert werden (z. B. anderes Logo, anderes Postfache etc.).

Als nächster Schritt in dem Beispiel "Lieferschein drucken" sollte jetzt. Der Dokumentenkopf für die Folgeseiten (Dokumentenkopf 2.Seite) definiert werden. Und der Dokumentfuß (Hauptseite und Folgeseiten)

Standardbedingungen

Da das Layout von Bausteinen sich häufig in Abhängigkeit von der Seitenanzahl anders darstellt wurden in ClassiX® folgende Standardbedingungen eingefügt:

  • Einfügen (Bedingung für erste Seite)
  • Einfügen (Bedingung für Folgeseite)
  • Einfügen (Listenkopf für Listenanfang)
  • Einfügen (Listenkopf 2. Seite bei Listen
    die größer sind als eine Seite)
Standardbedingungen

Bsp: Eine Liste, welche sich auf  mehrere Seiten verteilt hat auf der ersten Seite einen Ausführlichen Listenkopf und auf den folgenden Seiten auf denen die Liste fortgesetzt wird eine nur verkürzte Form hiervon.

Beispiele für die Erstellung von Bedingungen sind im Dokument "Belege Drucken" aufgeführt.

Listendefinition

Listen können aus:

bestehen. Die Vorgehensweise zum Erstellen eines Listen-Dokumentenbaustein unterscheidet sich nicht von denen der anderen Bausteine. Der Unterschied besteht in der Aufbereitung der angezeigten Daten. Während die Dokumentbausteine (Kopf, Fuß etc.) alle eine Feste Position im Dokumentenlayout haben richtet sich die Anzeige der Listenpositionen nach dem dafür zu Verfügung stehenden Platz und verteilt nicht angezeigte Positionen auf die nachfolgenden Seiten.

Zusammenfügen der Bausteine zu einem Dokument.

Sind nun alle benötigten Dokumentbausteine für das gewünschte Ergebnis erstellt worden können diese zu einem Hauptdokument zusammengefügt werden.

Neue Dokumente können über den Menüpunkt "Basisdaten"->"Dokumente"->"Dokument" angelegt werden. Dokumente haben eine frei zu vergebende Id, einen Dokumententyp (für welche Arbeitsgruppe dieses Dokument gilt. z. B. Verkauf oder Einkauf) und eine Dokumentbezeichnung. Auch hier kann die Bezeichnung wieder in mehreren Sprachen angegeben werden. Für das Beispiel (Lieferscheindruck) verwenden wir den Dokumententyp Verkauf.

Für das Hauptdokument kann ein festdefiniertes Layout angegeben werden welches über die Randabstände (oben, unten, links, rechts) einstellen lässt. Für das Beispiel (Lieferscheindruck) geben wir ein Standardmaß (links: 25mm, oben: 10mm rechts: 0mm unten: 5mm) ein.

Über die Schaltflächen "Einfügen" und "Entfernen" lassen sich jetzt bequem die benötigten Dokumentbausteine hinzufügen. Die in einem Dokument enthaltene Bausteine werden sequentiell von oben nach unten abgearbeitet. Die Reihenfolge der Bausteine kann über die Tasten Pfeiltaste rauf und Pfeiltaste runter geändert werden. 

Über die Schaltfläche Baumstruktur anzeigen können die eingefügten Bausteine in einer Baumstruktur angezeigt werden. Die Baumstruktur ist hilfreich wenn Dokumentbausteine weitere Unterdokumentbausteine enthalten.

Testen (Verwenden) des Dokuments

Um das Beispieldokument jetzt als Gesamtheit zu betrachten gehen wir in den Hauptmenüpunkt "Tätigkeiten->Verkauf->Lieferschein" oder Lieferschein und rufen einen bestehenden Lieferschein auf (Falls noch keiner vorhanden ist muss einer angelegt werden

Weiter geht es über den Druckdialog Druck auslösen (mit OLE im Vordergrund). Um sich das das Dokument anzusehen kann man noch folgende Optionen  hinzufügen oder weglassen:

Diese drei Möglichkeit bieten eine Ausnahme in der Programmlogik des Belegdruckes. Es bietet sich an diese Zusatzinformationen auch über einen weiteren Dokumentbaustein zu realisieren. Da diese Möglichkeit aber für alle Vorgänge zur Verfügung steht wurde sie in den Dialog mit eingebunden. Im Druckauswahldialog kann des weiteren noch die Sprache eingestellt werden. Und es wird die Option geboten das Dokument auf verschiedene Arten zu archivieren.

Das Dokument kann über die Schaltfläche "Vorschau" angezeigt werden. Das Vorschau-Tool bietet die Möglichkeit der Skalierug und Seitennavigation. Änderungen am Layout können nun an den Dokumentbausteinen vorgenommen werden. Es können weitere Bausteine hinzugefügt oder überflüssige entfernt werden.


Problembehebung + (Tips & Tricks)

Aufgrund dem Zusammenspiel der Software mit OLE-Objekten ist ClassiX® nicht gegen die Eigenheiten von Microsoft-Word gewappnet. In dem gesonderten Dokument: "Problembehebung bei OLE-Objekten" sind die bekannten Eigenheiten und Möglichkeiten diese zu umgehen aufgeführt.


Anhang

Einbinden des Druckdialogs Druck auslösen

Einfügen eines Buttons

Festlegen eines Defaultdokument für einen Vorgang