Formular-Befehle: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „Info: Formulare, Formular-Typen, Variablen-Zuweisung Dieses Kapitel beschäftigt sich mit der Syntax von Formularen. FaktuLux verwen…“) |
Pkahm (Diskussion | Beiträge) (→- A - ASCII-Zeichen) |
||
Zeile 77: | Zeile 77: | ||
Name{A9}Strasse{A9}Plz{A9}Ort | Name{A9}Strasse{A9}Plz{A9}Ort | ||
+ | |||
+ | Geschweifte Klammern | ||
+ | {A123} Geschweifte Klammer auf "{" | ||
+ | {A125} Geschweifte Klammer zu "}" | ||
</pre> | </pre> | ||
Version vom 2. Juni 2017, 21:56 Uhr
Info: Formulare, Formular-Typen, Variablen-Zuweisung
Dieses Kapitel beschäftigt sich mit der Syntax von Formularen. FaktuLux verwendet eine eigene Script-Sprache, mit der Sie die zu druckende Seite oder den Aufbau eines Exports beschreiben. Wünschenswert für die Gestaltung von Ausdrucken ist ein WYSIWYG-Editor (what you see is what you get). Er zeigt den zu erwartenden Druck in Schrift und Formatierung direkt an. Eine dynamische Seite, die sich anhand einer vielzahl von Parametern verändert, lässt sich aber nicht einheitlich darstellen. Außerdem werden Belege und Formulare einmalig erstellt und danach nur noch gelegentlich angepasst. Daher haben wir uns für den einfachen Texteditor entschieden, der für die Zunkunft noch um eine Syntax-Hervorhebung ergänzt werden soll.
Inhaltsverzeichnis
- 1 Befehle
- 1.1 Temporäre Tab-Stops (0..9, +, -)
- 1.2 - a - Abbruch
- 1.3 - A - ASCII-Zeichen
- 1.4 - b - Fett aus
- 1.5 - B - Fett an
- 1.6 - c - Positionszähler
- 1.7 - C - Farbe
- 1.8 - d - Debug aus
- 1.9 - D - Debug ein
- 1.10 - e - Leerzeile, wenn Felder nicht leer
- 1.11 - E - Leerzeile, wenn Felder leer
- 1.12 - f - Standardschrift
- 1.13 - F - neue Schrift
- 1.14 - g - Text als Barcode drucken
- 1.15 - G - Grafik einbinden
- 1.16 - h - Information während des Drucks
- 1.17 - H - Finale Nachricht
- 1.18 - i - Kursiv aus
- 1.19 - I - Kursiv ein
- 1.20 - j - Telefonnummern-Konvertierer
- 1.21 - J - Jump-Aufruf eines Formular-Blocks
- 1.22 - k - Preis-Kodierer
- 1.23 - K - Preis-Kodierer Extra
- 1.24 - l - Rechteck füllen
- 1.25 - L - Line zeichnen
- 1.26 - m - Druckt den Maß-Block für FurLux
- 1.27 - M - Zeigerpositionen x & y merken
- 1.28 - n - Kein Zeilenvorschub
- 1.29 - N - Nicht drucken, wenn alle Felder dieser Zeile leer
- 1.30 - o - Für jede Währungskennung die internationale Abkürzung verwenden
- 1.31 - O - Auf eine beliebige Tabelle zugreifen
- 1.32 - p - Neue Seite, wenn weniger als X mm bis unterer Rand oder Block-Ende
- 1.33 - P - Neue Seite, wenn weniger als X Zeilen bis unterer Rand oder Block-Ende
- 1.34 - q - Fließtext
- 1.35 - Q - Import: Aktuelle Zeile überspringen
- 1.36 - r - Keine Seiten-Umbruchsprüfung beim Druck der Zeile
- 1.37 - R - Neuer Randwert
- 1.38 - s - Standardschriftgröße
- 1.39 - S - neue Schriftgröße
- 1.40 - t - Textpuffer leeren
- 1.41 - T - Textbaustein
- 1.42 - u - Unterstreichen aus
- 1.43 - U - Unterstreichen ein
- 1.44 - v - Variable Extra
- 1.45 - V - Variable
- 1.46 - w - Wiederholungszeile
- 1.47 - W - Bereichswechsel
- 1.48 - x - gehe zu Tab
- 1.49 - X - gehe zu X
- 1.50 - y - gehe zu Oberem Rand
- 1.51 - Y - gehe zu Y
- 1.52 - z - Standard-Zeilenabstand des Formulars
- 1.53 - Z - Zeilenabstand
- 1.54 - @ - Druckerwechsel nach Seite
- 1.55 - # - Kalenderblatt
- 2 DirectPrint
- 3 Kommentierungen
- 4 Bedingungen
- 5 Barcode-Nummern
- 6 Feste Formularnamen
Befehle
Folgende Regeln sind bei der Formulargestaltung zu beachten:
- Alle folgenden Befehle müssen samt Parametern in geschweiften Klammern '{}' eingeschossen sein. Der übrige Text wird gedruckt bzw. exportiert.
- Alle Angaben sind in Millimetern zu machen, Nachkommastellen sind erlaubt.
- Führende Leerzeichen jeder Zeile werden ignoriert. Verwenden Sie Einrückungen um die Verschachtelungstiefe von Bedingungen hervorzuheben.
- Eine leere geschweifte Klammer {} wird ignoriert. Sie können diese Leerzeichen am Anfang einer Zeile voranstellen, wenn diese nicht gelöscht werden sollen. Auch eine eckige Klammer '[', lässt sich somit am Anfang einer Zeile drucken, da sie nicht als Einleitung einer Bedingung angesehen wird.
- Die Tabulatorwerte gehen immer vom linken Rand aus und ändern sich auch mit diesem, wohingegen sich die absoluten Werte (große X und Y) auf den gesamten Druckbereich beziehen und von den Randwerten der Formulare nicht beeinflußt werden.
- Der Ursprung des Gitters (Koordinate X0/Y0) liegt in der linken oberen Ecke des Formulars.
- Folgt auf die geschweifte Klammer '{' ein Leerzeichen, wird die Funktion ignoriert.
- In Memo-Feldern können sämtliche Formatierungen verwendet werden. Außerdem kann mittels Doppelstrich '--' oder einer Halfpipe '|' ein linker Einzug für Aufzählungen erzeugt werden. Eine Halfpipe am Anfang der folgenden Zeile erhält den Einzug und ermöglicht so einen erzwungenen Zeilenumbruch.
- Bei Befehlen, die eine Funktion ein- oder ausschalten, schaltet der Großbuchstabe die Funktion ein und der Kleinbuchstabe diese wieder aus.
Dies sind die Befehle in alphabetischer Reihenfolge:
Temporäre Tab-Stops (0..9, +, -)
In Fließtexten können maximal 9 Temporäre Tabulatoren gesetzt werden.
+ fügt einen Tab-Stop hinzu - ruft den nächsten Tab-Stop ab Der Zähler wird bei jedem Zeilenvorschub zurückgesetzt 0 Löscht alle bisher definierten Tab-Stops und setzt den ersten neu 1 .. 9 Ruft den zugehörigen Tab-Stop ab Beispiel: Version-1 {+}Version-2 {+}Version-3 grün{-}gelb{-}blau 1.000 Stück{-}2.000 Stück{-}1.000 Stück (optional){2}(optional) +R, +D Zum Tab-Stop kann optional auch die Orientierung angegeben werden. Als Standard wird linksbündig angenommen. Der Dezimal-Tabstop wird dabei nach dem ersten Komma ausgerichtet. Definieren Sie diesen z.B. in einer Überschrift ohne Komma, wird er ans Ende der Zeile gesetzt, bzw. ans Ende des letzten Wortes vor den Beginn der nächsten Funktion. Möchten Sie die Position selber festlegen, verwenden Sie eine leere Funktion {}. Beispiel: {+D}Einzelpr{}eis setzt den Dezimaltab hinter dem 'r' -L, 3L Folgt auf einen Tab-Stop-Abruf ein L, wird von der aktuellen zur Zielposition eine Linie gezogen. Es könne die Parameter der Standard Linienfunktion {L} durch Semikolon getrennt angehangen werden. Beispiel: Grundgebühr {+D}1.234,00 Euro{+} Zuschlag 1{-}109,00 Euro Zuschlag 2{-}34,80 Euro {2L} Summe{-}1.377,80 Euro
- a - Abbruch
Der Befehl {a} ermöglicht den Abbruch eines Drucks oder einer Ausgabe. Folgt dem Befehl ein Text, wird dieser als Fehlermeldung ausgegeben.
Beispiel: [{Vm.1}= {aSie müssen einen Wert eingeben!} ] Variation: aa Beendet die aktuelle Ausgabe in Belegpositionen, Listen, Unterlisten, Artikel-Umsatz und Reporten. Es werden keine weiteren Datensätze verarbeitet und die Ausgabe wird abgeschlossen. Ein in Unterlisten gesetztes {aa} gilt nur für die aktuelle Unterliste und beendet nicht die Hauptliste! ax Bricht die Ausgabe des aktuellen Beleges ab. Alle weiteren Belege der Druck-Positionen werden dennoch abgearbeitet. Bei den Variationen kann keine Meldung ausgegeben werden.
- A - ASCII-Zeichen
Der Befehl {A} ermöglicht den Druck und die Ausgabe jedes Zeichens des ASCII-Zeichnsatzes. Geben Sie hinter dem A des Zeichenwert an.
Beispiel: Spaltentrennung beim Export mittel Tab-Stop Name{A9}Strasse{A9}Plz{A9}Ort Geschweifte Klammern {A123} Geschweifte Klammer auf "{" {A125} Geschweifte Klammer zu "}"
- b - Fett aus
Das 'B' leitet sich vom englischen bold ab. Mittels HotKey [Strg]+[B] können Sie einen markierten Text in einem Fließtext für den Fettdruck formatieren.
- B - Fett an
Beispiel: {B}Überschrift{b}
- c - Positionszähler
Die Variablen {VS.8} und {VS.18} zählen die Positionen während des Belegdrucks, wobei {VS.8} jede Position zählt, {VS.18} nur die Nicht-Text-Positionen. Sie können für eine alternative Nummerierung verwendet werden. Um auf unterdrückte oder eingefügte Positionen zu reagieren, verwenden Sie den Befehl {c}.
c, c- Count-1, reduziert die Beleg-Positionszähler {VS.8} und {VS.18} um 1 c+ Count+1, erhöht die Beleg-Positionszähler {VS.8} und {VS.18} um 1
- C - Farbe
Mittels {C} können Sie die Text- und Hintergrundfarbe verändern.
C Schwarz Es können folgende Standardfarben verwendet werden: White, Silver, LtGray, Gray, DkGray, Black, Aqua, Blue, Navy, Teal, Lime, Green, Olive, Maroon, Red, Fuchsia, Purple, Yellow. Beispiel: {CRed} wechselt nach Rot C$ Leitet die freie RGB-Farbcodierung ein (C$<Rot>,<Grün>,<Blau>) - C$255,0,0 entspricht einem reinen Rot mit voller Intensität - C$0,255,0 reines Grün - C$0,0,255 reines Blau C# Setzt nicht die Schrift- sondern die Hintergrundfarbe. (# kommt vor einem etwaigen $) C% Färbt die gesamte Zeile in der angegeben Farbe (% ersetzt #)
- d - Debug aus
(Darf auch vor Bedingungszeichen [,| und ] stehen)
- D - Debug ein
- e - Leerzeile, wenn Felder nicht leer
Der Befehl muß am Zeilenanfang stehen. Setzen Sie hinter den Befehl beliebig viele Feldvariablen. Ist zumindest eine nicht leer, wird eine Leerzeile ausgegeben.
- E - Leerzeile, wenn Felder leer
Der Befehl muß am Zeilenanfang stehen. Setzen Sie hinter den Befehl beliebig viele Feldvariablen. Sind alle leer, wird eine Leerzeile ausgegeben.
- f - Standardschrift
Wählt die im Fomular hinterlegte Schriftart aus.
- F - neue Schrift
Wählt eine andere Schriftart aus. Geben Sie den Namen der Schrift unmittelbar hinter dem F an, z.B. {FArial}.
Mittels dieser Funktion lassen sich auch Schriften mit beliebigem Drehradius definieren. Bei dieser Form der Schriftdefinition lassen sich Größe und Erscheinung (fett, kursiv) jedoch nicht über Einzelbefehle umgeschalten, sondern müssen mit der Schrift definiert werden. Folgende Parameter können jeweils durch Semikolon getrennt angehangen werden:
A<Winkel> Winkel in zehntel Grad, 1800 ergibt eine Schrift, die auf dem Kopf steht H<Wert> positiver Wert: Höhe des Schriftraumes in mm negativer Wert: Höhe der reinen Schrift in mm (etwas größer) W<Wert> logische durchschnittliche Breite der Schrift, Standard=0 B Fett I Kursiv U Unterstrichen S Durchgestrichen
Übergeben Sie keinen Schriftnamen (z.B. {F;H4;A1800}), wird die Schriftart des Formulars verwendet. Um zur normalen Schrift zurückzukehren, verwenden Sie den Befehl {f}.
- g - Text als Barcode drucken
Dieser Befehl druckt die internen Barcodes zur Steuerung von FaktuLux. Dazu gehören zum einen Datensatz-Barcodes, über die sich z.B. Mitarbeiter, Adressen oder Belege ansprechen lassen. Zum andern sind es Steuerbarcodes, die Anweisung an FaktuLux im Zeiterfassung-Modus senden.
Wenn Sie jedoch den Inhalt eines Datenbankfeldes als Barcode drucken wollen, müssen Sie einen anderen Befehl verwenden. Die Barecode-Erweiterung des Variablenbefehls {V} erfüllt diese Aufgabe. Den EAN-Code eines Artikels z.B. drucken Sie über den Befehl {VB20.EANCode;C15}.
Folgende Codes drucken automatisch den von FaktuLux erkannten Barcode für verschiedene Datensatznummern: F0 Benutzer-Nummer F1 Adress-Nummer F2 Artikel-Nummer F3 Beleg-Nummer F4 OP-Nummer F5 Projekt-Nummer F6 Kostenstelle F7 Arbeitsvorgang F8 ArtikelLos F9 Belegposition FA Ansprechpartner FL Artikel-Lagerbuchung FV Beleg-Verteiler Für die Steuerung der Zeiterfassung gelten folgende Codes: FX1 Anmelden Arbeitszeit beginnen FX2 Abmelden Arbeitszeit beenden FX3 OK Eingabe bestätigen FX4 Abbrechen Eingabe abbrechen FX5 Abschließen schließt laufenden Auftrag ab ohne neuen zu beginnen FX6 ohne Auftrag löscht den Auftrag aus der Auswahl FX7 Fortfahren lädt letzten Auftrag erneut FX9 Personal-Zeiterfassung FX10 Kostenstellen öffnet die Liste der Kostenstellen FX11 Arbeitsvorgänge öffnet die Liste der Arbeitsvorgänge FX15 Material öffnet die Artikelauswahl FX20 Lieferschein Auftrag(sposition) in Lieferschein übernehmen FX21 Versand Versand erfassen FX22 Lieferschein stornieren FX23 letzten Lieferschein erneut drucken (bei Bedarf auch Buchung) FX25 Lager-Buchung Barcode-Karten für Lagerumbuchung drucken FX27 Liefertermine Zeigt die Liefertermine im Kalender an (PrintLux) FX30 Termine Termine listen FX35 Auftrag fertig bucht Aufträge von Produktion in Büro Das F in den FaktuLux-Barcodes wird dabei durch das in den Einstellungen definierte Barcode-Kennzeichen ersetzt. Vorgegeben wird '#'. Für den UPS-Versand können Anzahl der Pakete und Gewicht ebenfalls gescannt werden. Hierbei folgt auf das Barcode-Zeichen (#) zuerst ein 'U' und dann für Anzahl der Pakete ein 'A' und das Gewicht ein 'G'. Beispiele: {g#UA2} - druckt einen Barcode für zwei Pakete {g#UG5} - druckt einen Barcode für Gewicht 5kg Bei den anschließenden Werten, die durch Semikolon zu trennen sind, wird bei fehlendem Wert oder Null der Standardwert angenommen. x<Wert> Tab-Wert (x0 = Linker Rand) xx Rechter Rand (setzt automatisch auf Rechtsbündig) y Oberer Rand yy Unterer Rand X<Wert> X-Wert (absolut oder mit +/- relativ von akt. Position) Y<Wert> Y-Wert (absolut oder mit +/- relativ von akt. Position) C<Nr> Art des Barcode (siehe Tabelle am Ende, Standard 6 = Code128 Auto) H<Wert> Höhe in Millimetern (Standard 5mm) W<Wert> Breite des schmalsten Balken in Millimetern (Standard 0,25mm) A<Winkel> Drehwinkel beim Druck (Standard 0) P Prüfsumme berechnen und anhängen Folgende Parameter verändert den Druck der EAN-Nummer unterhalb des BarCode vom Typ EAN13 (Parameter C0) S<Wert> Der Abstand der Zahlenblocks Rechts und Links zu den Verlängerungen des BarCode wird mit der Breite des schmalsten Balken angegeben. Vorgabe ist der Wert 2. R<Wert> Je nach Schriftart kann die Stellung der EAN-Nummer zum BarCode fehlpositioniert sein. Über diesen Parameter kann der Druck in der X-Achse verschoben werden. Positive Werte verschieben nach Rechts, negative nach Links. Angabe in Millimetern, Nachkommastellen erlaubt. D<Wert> Für den Abstand nach Unten der EAN-Nummer zum BarCode wird die Schrifthöhe verwendet. Je nach gewählter Schriftart kann dieser zu klein oder zu groß sein. Über diesen Parameter kann der Druck in der Y-Achse verschoben werden. Positive Werte verschieben nach Unten, negative nach Oben. Angabe in Millimetern, Nachkommastellen erlaubt.
- G - Grafik einbinden
Zur Erstellung von Faxen oder PDF-Dateien ist es nötig, einen digitalen Briefbogen in den Hintergrund zu legen. Außerdem möchte man Angebote sicher mit einer grafischen Unterschrift aufwerten. Die Grafikdateien müssen dazu im Datenverzeichnis im Format Windows-Bitmap vorliegen. Der Name wird ohne Extension durch ein Semikolon getrennt hinter dem 'G' angegeben.
Das Einbinden der Grafik kann auch auf bestimmte Ausgabeformen beschränkt werden. Schicke ich ein Angebot per eMail, binde ich einen Briefbogen ein und setzte eine grafische Unterschrift darunter. Drucke ich es jedoch für den Postversand aus, wähle ich das hochwertige Briefpapier und unterschreibe eigenhändig. GF Die Grafik wird nur beim Faxen eingebunden GP Die Grafik wird nur beim PDF-Export eingebunden GB Die Grafik wird nur beim Faxen oder PDF-Export eingebunden Im Anschluß folgen Werte durch Semikolon getrennt, die Koordinaten bezeichnen die linke, obere Ecke der Grafik x<Wert> Tab-Wert (x0 = Linker Rand) xx Rechter Rand y Oberer Rand yy Unterer Rand X<Wert> X-Wert (absolut oder mit +/- relativ von akt. Position) Y<Wert> Y-Wert (absolut oder mit +/- relativ von akt. Position) W Breite der Grafik, bei 0 unverändert Die Höhe wird formatgetreu skaliert F Formular, Grafik wird auf die ganze Seite inkl. OffSets ausgedehnt Angaben zu Position und Breite werden ignoriert Nur bei Formularen: O<Wert> Formularkorrektur Oben U<Wert> Formularkorrektur Unten R<Wert> Formularkorrektur Rechts L<Wert> Formularkorrektur Links Ohne Werte wird die Grafik auf die Seite eingepasst Die Änderungen der Position beim Grafikdruck wirken sich nicht auf die Position des aktuellen Druck-Cursors aus.
Da Bitmap-Grafiken keine Transparenzen unterstützen, ist es wichtig die Grafik zuerst auszugeben und dann den Text einzudrucken. Gerade bei grafischen Unterschriften ist dies zu beachten. Ein Beispiel finden Sie in den Textbausteinen.
Als Auflösung für einen grafischen Briefbogen empfehlen wir 2.483 x 3.512 bei 8bit Farbtiefe. Sollten Sie für Texte auf dem Briefbogen kein Schwarz verwenden, ist es besser eine eigene Grafikdatei in Graustufen für Fax zu hinterlegen, bei der die Textfarbe zuvor in Schwarz geändert wurden. Sonst können durch die Rasterung manchmal Zahlen wie bei der Bankverbindung nicht zweifelsfrei entziffert werden.
- h - Information während des Drucks
Manchmal ist es wünschenswert, während der Verarbeitung eines Formulares eine Meldung auszugeben, sei es um den Inhalt von Variablen zu überprüfen oder das Erreichen bestimmter Formularpositionen anzuzeigen. Der Befehl {h} sammelt alle folgenden Texte und Werte dieser Zeile und zeigt sie als Meldung an, wenn das Ende der Zeile erreicht ist. Halfpipes '|' werden vor der Anzeige durch Zeilenumbrüche ersetzt.
- H - Finale Nachricht
Alle auf {H} folgenden Texte und Werte dieser Zeile werden nicht ausgegeben, sondern in einem Text gesammelt und nach Abschluß des Drucks/der Ausgabe als Meldung angezeigt. Während der aktuellen Ausgabe löscht jeder erneute Aufruf von {H} alle bereits für die Finale Nachricht gespeicherten Texte. So kann zum Beispiel während des Etikettendrucks der Text bei jedem Etikett neu gesetzt werden, da man ja oft nicht weiß, wieviele Etiketten noch kommen werden und es beim Etikettendurck keinen Job-Nachspann gibt. Soll eine bereits gespeicherte Nachricht erhalten bleiben, ergänzen Sie den Befehl zu {HX}. Neuer Text wird dann mit einem Zeilenumbruch zur Nachricht hinzugefügt. Halfpipes '|' werden vor der Anzeige durch Zeilenumbrüche ersetzt.
- i - Kursiv aus
Das 'I' leitet sich vom englischen italic ab. Da aber ein [Strg]+[I] in einem Fließtext einen echten TabStop einfügt, haben wir für kursiv den HotKey [Strg]+[K] gewählt.
- I - Kursiv ein
- j - Telefonnummern-Konvertierer
Der Befehl {j} schickt die nachfolgende Variable vor der Ausgabe durch den Telefonnummern-Konvertierer. Dieser entfernt aus einer Telefon- oder Faxnummer alle Sonderzeichen und ersetzt Buchstaben durch die entsprechenden Ziffern.
- J - Jump-Aufruf eines Formular-Blocks
Es kommt immer wieder vor, dass der gleiche Code an verschiedenen Stellen der Ausgabe benötigt wird. Schreibt man diesen mehrfach ins Formular, erhöht sich der Aufwand einer Anpassung und es besteht immer die Gefahr, eine Änderung zu vergessen. Für diesen Zweck wurde der Jump-Befehl geschaffen. Die mit {J+<Name>} und {J-<Name>} eingefassten Zeilen können an jeder Stelle des Formulars mittels {J<Name>} abgerufen werden.
- Regeln
- Die Jump-Befehle müssen in eigenen Zeilen stehen, welche nicht mitgedruckt werden.
- Der gesamte Jump-Codeblock muss innerhalb eines Bereiches ({W...) stehen.
- Jump-Blöcke dürfen nicht verschachtelt werden.
- Innerhalb eines Jump-Blocks darf kein Jump-Befehl erfolgen.
- Hinter der schließenden Klammer können Erläuterungen folgen.
Beispiel: Die Spaltenüberschrift einer Liste wird sowohl auf der ersten Seite, als auch auf den Folgeseiten gedruckt. Durch die Definition in einem Jump-Block kann diese für die Folgeseiten übernommen werden.
{J+Kopf} {S12}Adressen-Liste{s} {VS.25}{xx}{VS.6} Seite {VS.4} {Y+3}Nummer{x1}Name{x2}Straße{x3}Plz / Ort {Lx;Y-2,5;W0,1;xx} {J-Kopf} {W Kopf übertrag ----------------------------------------------------------} {JKopf} {W Positionen ------------------------------------------------------------} [..]
- k - Preis-Kodierer
Der Befehl {k} schickt die nachfolgende Variable vor der Ausgabe durch den Preis-Kodierer. Steht dieser Befehl vor einer beliebigen Variablen, werden in dieser befindliche Zahlen durch die entsprechenden Zeichen der Preiscodierung ersetzt, wie sie in den Einstellungen unter Artikel definiert sind. Mittels Preiskodierung können Sie z.B. Einkaufspreise für den Kunden nicht erkennbar auf Artikeletiketten drucken und als Grundlage für Rabattverhandlungen verwenden.
- K - Preis-Kodierer Extra
Der Befehl {K} arbeitet wie {k}, jedoch werden alle Nichtziffern entfernt. Einzig ein Minus '-' wird durch einen Unterstrich '_' ersetzt.
- l - Rechteck füllen
Der Befehl {l} füllt ein Rechteck mit Farbe. Die einzelnen Werte sind durch Semikolon zu trennen. Die ersten beiden Werte geben die linke obere Ecke an. Es gelten die gleichen Regeln wie beim Linienzeichnen {L}. Die nächsten beiden Werte definieren Breite und Höhe des Rechtecks in mm. Dann folgt die Farbe für die Füllung. Soll das Rechteck zusätzlich umrahmt werden, geben die Parameter sechs und sieben die Farbe und die Stiftbreite (in mm!) an. Für die Farbwerte können auch Variablen angegeben werden, wie sie zur Kennzeichnung von Lagerorten ausgewählt werden.
Das folgende Beispiel zeigt den Druck einer Kanban-Anforderungskarte. Dafür wird die Etiketten-Druckfunktion verwendet. Die Maße der bedruckten Fläche sind 76 x 44 mm (BxH).
- Zuerst wird die Karte in der Farbe1 des Lagerortes eingefärbt. Anschließend wird eine Schnitthilfslinie von 0,2mm Stärke am oberen und linken Rand gezogen und die Veränderung der Y-Position zurückgesetzt.
- Die zweite Zeile druckt in weißer Farbe zwei Texte 6 und 40 mm von oben. Dann wird wieder die Standardfarbe Schwarz gesetzt und die Veränderung der Y-Position erneut zurückgesetzt.
- Jetzt folgt eine Bedingung: Ist dem Lagerplatz (eine Unterteilung des Lagerortes) eine eigene Farbe zugewiesen, wird die weiße Fläche in der Mitte der Karte in dieser Farbe 2mm stark umrandet. Die Fläche wird 10mm vom linken Rand (x0) und 10mm von oben in den Maßen 56 x 24 mm (BxH) aufgebracht.
- Die ersten beiden Zeilen nach der Bedingung lokalisieren den aktuellen Artikel des Lagerplatzes und setzten den Zeilenzeiger 10mm nach unten.
- Der Tabulator {x1} zeigt auf die Mitte der Karte bei 38mm und wird jeweils für einen zentrierten Druck aufgerufen {xC1}.
- {gFL} druckt den internen Barcode des aktuellen Lagerartikels zur Lagerbuchung in einer Höhe von 10mm. Anschließend wird die temporäre Formular-Variable 'Lagerort' mit dem EAN-Code des Artikels, dem Lagercode und der Regalkennung gefüllt. Dies ist nötig, um das Resultat in der folgenden Zeile zentriert drucken zu können.
- In die letzte Zeile wird schließlich der Suchbegriff des Artikels gedruckt.
{n}{lX;Y;76;44;V25.Farbe1}{Lx0+76;Y;W0,2;x0;Y+44}{Y-44} {n}{Y+6}{CWHITE}{xC1}KanBan-Anforderungskarte{Y+34}{xC1}Mustermann GmbH{C}{Y-40} [{V26.Farbe}>0 {lx0+10;Y+10;56;24;CWHITE;V26.Farbe;2} | {lx0+10;Y+10;56;24;CWHITE} ] {VL20,28.ArtikelIDa} {Y+10} {xC1}{gFL;H10}{Vs.Lagerort=V20.EANCode+ +V25.LagerCode2+-+V28.Regal} {xC1}{Vs.Lagerort} {xC1}{V20.SuchBegriff}
- L - Line zeichnen
Der Befehl {L} zieht Linien. Die Werte sind durch Semikolon zu trennen. Die ersten beiden Werte geben den Startpunkt an. Zu jeder weiteren Position wird dann eine Linie gezogen, sofern dieser kein 'N' voranging.
x Tab-Wert (x0 = Linker Rand) xx Rechter Rand y Oberer Rand yy Unterer Rand X X-Wert, mit +/- relativ von akt. Position Y Y-Wert, mit +/- relativ von akt. Position N Folgenden Punkt nur setzen, keine Linie zeichnen (zum Zeichnen diagonaler Linien) W Stiftbreite (in mm!) C Stiftfarbe (siehe Funktion C) S Stiftart Es können folgende Stiftarten gewählt werden: Solid durchgezogene Linie (Standard) Dash gestrichelte Linie Dot gepunktete Linie DashDot Linie aus abwechselnden Strichen und Punkten DashDotDot Linie aus Strich-Punkt-Punkt-Folgen Ist die Stiftart nicht Solid, wird die Stiftbreite automatisch auf 1 gesetzt und kann auch nicht verändert werden! Folgendes Beispiel zeichnet eine 0,2mm starke Linie vom linken zum rechten Rand: {Lx0;Y;W0,2;xx}
- m - Druckt den Maß-Block für FurLux
Die FaktuLux-Ergänzung FurLux wird nicht weiterentwickelt und kann jederzeit aus dem Quellcode entfernt werden.
(Mit Semikolon getrennt werden die Breite einer Spalte und (optional) der Abstand zwischen den Spalten (Vorgabe 10mm) angegeben. Folgt auf das m ein l, werden Spalten und Zeilenlinien gedruckt.)
- M - Zeigerpositionen x & y merken
Der Befehl {M} speichert die aktuelle Position des Zeichenzeigers. Jeder Aufruf überschreibt den letzten Speicher. Mittels {XM} und {YM} können Sie die Positionen wieder anspringen.
- n - Kein Zeilenvorschub
Der Befehl {n} unterdrückt den Zeilenvorschub am Ende der Zeile. So lassen sich Lokalisierungs- und Berechnungsfunktionen in eigenen Zeilen aufrufen, ohne dass Leerzeilen gedruckt werden. Außerdem kann eine Druckzeile so über mehrere Formularzeilen zusammengesetzt werden. Die X-Position wird auch nicht auf den linken Rand zurückgesetzt. Sie können also in der Folgezeile einfach weiterdrucken.
Das folgende Beispiel druckt in einer Artikelliste alle Bestände fett, die unter dem Mindestbestand liegen, sofern einer definiert ist.
{n}{V20.IDa}{x1}{V20.Suchbegriff} [{V20.MindestBestand}<> and {V20.Bestand}<{V20.MindestBestand} {xD2}{B}{V20.Bestand}{b} | {xD2}{V20.Bestand} ]
- N - Nicht drucken, wenn alle Felder dieser Zeile leer
Der Befehl muß am Zeilenanfang stehen. Hinter den Befehl können Sie beliebige Kombinationen aus Feldinhalten und Beschriftungen setzen. Sind alle angegebenen Feldinhalte leer, wird die ganze Zeile nicht gedruckt.
- o - Für jede Währungskennung die internationale Abkürzung verwenden
Bei jeder Währung können Sie optional eine internationale Abkürzung hinterlegen. Der Schalter {o} bewirkt, dass immer diese Abkürzung verwendet wird, sofern vorhanden. Möchten Sie für Belege ins Ausland oder generell die internationale Abkürzung verwenden, können Sie dies auch über einen Ini-Schalter im Bereich [System] festlegen.
- O - Auf eine beliebige Tabelle zugreifen
Ursprünglich für Reporte konzipiert, können Sie jetzt in jedem Formular-Typ auf eine beliebige Tabelle zugreifen. Diese kann zur Lokalisierung und für Unterlisten verwendet werden. Der Befehl kann nur in der Initialisierung angewandt werden. Alle Angaben zu Index und Grenzen werden mit Slash (/) getrennt.
Als erstes wird der Dateiname der Tabelle mit vollständigem Verzeichnis angegeben. Dabei gelten folgende Platzhalter: %P - Programmverzeichnis %D - Datenverzeichnis %A - Adressen-Verzeichnis %R - Artikelverzeichnis %B - Belegeverzeichnis Alternativ ist auch die direkte Verknüpfung mit einer FaktuLux Tabelle möglich. Dabei gibt es zwei Wege. Der erste greift direkt auf eine Programmtabelle zu, wobei auch ihr Sortierindex und die ggf. gesetzte Dateneinschränkung verwendet werden. Im zweiten Weg wird nur die Tabellendatei übernommen. Die Sortierung und die Einschränkung können Sie selbst bestimmen. Mittels der Tastenkombination [Strg]+[Shift]+[F1] in einer Datenliste erhalten Sie eine Anzeige des Namen der Tabellenkomponente, der Tabellennummer (sofern vorhanden) und des Dateinamen der Tabelle. Mit x übergeben Sie beim Aufruf die Tabellennummer. In beiden Fällen ist die Tabelle mittels Nummer 69 anzusprechen. %x - Direkter Zugriff auf eine FaktuLux-Tabelle %Tx - Übernahme des Dateinamens für eine eigene Tabelle Im zweiten Fall folgt anschließend der Index, nach dem die Tabelle sortiert werden soll. An dritter Stelle folgt (optional) die untere Grenze, nach der die Datensätze eingeschränkt werden sollen. Dabei sind die Felder mit Semikolon zu trennen. Werte können in Anführungszeichen eingeschlossen werden, und so auch Slash oder Semikolon enthalten. Ist keine obere Grenze gesetzt, wird die Tabelle bis zum Ende abgearbeitet; folgt auf die untere Grenze ein Slash, ist diese zugleich auch obere Grenze. Um eine Grenze als Exclusive zu definiert (der Grenzdatensatz gehört nicht zur Auswahl), leiten Sie diese mit einem Prozent "%" ein, das - sofern verwendet - außerhalb der Klammern stehen muß. Als dritte Option kann aus einer Liste eine Master/Slave-Verknüpfung ausgewählt werden. Dadurch ändert sich die Auswahl mit jedem Datensatz der Haupttabelle. Die Liste wird bei Bedarf erweitert. %M1 - Alle aktiven Auftragspositionen zum Artikel.
- p - Neue Seite, wenn weniger als X mm bis unterer Rand oder Block-Ende
Der Befehl {p} prüft, ob von der aktuellen Zeilenposition bis zum Unteren Rand, bzw. dem Ende des Datenblocks noch der in mm angegebene Platz verfügbar ist. Wenn nicht, wird ein Seitenumbruch durchgeführt. Die Funktion unterdrückt den Zeilenvorschub (wie {n}). Das Ende des Datenblocks wird im Formular über das Feld Positionen drucken bis bestimmt.
- P - Neue Seite, wenn weniger als X Zeilen bis unterer Rand oder Block-Ende
Steht das {P} alleine, wird ein sofortiger Seitenumbruch ausgeführt, ohne weiteren Formularcode zu prüfen. Alles hinter dem {P} gilt schon für die neue Seite. Die Funktion unterdrückt automatisch den Zeilenvorschub (wie {n}).
P<Wert> wenn weniger als <Wert> Zeilen Platz haben (auf der Seite, bzw. im Block), wird ein Seitenumbruch durchgeführt. Als Maß wird der aktuell gesetzte Zeilenabstand angenommen. Es können auch Variablen angegeben werden, die, wenn sie nicht leer sind, den Wert um den mit Komma an die Variable angehängten ganzzahligen Wert erhöhen. Ohne Angabe der Zeilenzahl wird eine Zeile vorgegeben. Beispiel: {PV31.FixDatum,3} prüft auf 3 Restzeilen, wenn FixDatum einen Wert hat Feldinhalte können auch gleich oder größer einem Wert sein. Bei ftString und ftDate wird als Text verglichen, bei allen übrigen als Integerwert. Mit Semikolon getrennt können mehrere Werte angehängt werden, z.b. {PV.31FixDatum;V.31Druck=2,2;V.31ID>3;2} Bei Nummerischen Variablen kann auch der Integerwert der Variable verwendet werden. Verwenden Sie dazu ein kleines 'v'. Beispiel: {Pv31.Menge} Bei der Lizenz liBlockText und Belegen oder Einzeltaschen addiert ein zweites P die Zeilenzahl des Bezeichnungs-Blocks zum Wert. Beispiel: {PP3}
- q - Fließtext
Will man in einem Formular einen längeren Text setzten, der evtl. auch noch Variablen und Formatierungen enthält, muss man darauf achten, an den richtigen Stellen die Zeilenumbrüche durchzuführen. Einfacher geht es mit dem Befehl {q}. Er verarbeitet den gesamten Rest der Zeile als Fließtext und bricht ihn automatisch um. Die Breite wird hinter dem q in mm angegeben, z.B. {q50}.
- Q - Import: Aktuelle Zeile überspringen
Mit Hilfe dieses Befehls kann während des Daten-Import die Verarbeitung einer Zeile abgebrochen werden.
- r - Keine Seiten-Umbruchsprüfung beim Druck der Zeile
Vor jedem Druck einer neuen Zeile wird geprüft, ob diese noch in den Bereich aus Oberem und Unterem Rand passt. Wenn nicht, wird ein Seitenumbruch durchgeführt. Manchmal kann das am Ende eines Beleges recht knapp werden. Will man eine Zeile mit Sicherheit noch auf die aktuelle Seite drucken, auch wenn dadurch etwas zu tief gerät, beginnt man Sie mit dem Befehl {r}.
- R - Neuer Randwert
Der Befehl {R} erlaubt das Überschreiben der im Formular definierten Randparemeter.
Bestimmen Sie mit dem ersten Parameter, welchen Randwert Sie neu setzen wollen und geben Sie den neuen Wert dahinter in mm ein. Er gelten O(ben), U(nten), R(echts), L(inks) Beispiel: {RL15} setzt den Linken Rand auf 15mm
- s - Standardschriftgröße
Setzt die im Formular definierte Schriftgröße.
- S - neue Schriftgröße
Geben Sie die gewünschte Schriftgröße in Punkt an, z.B. {S16}. Der Zeilenabstand bleibt unverändert. Wenn Sie diesen ebenfalls ändern wollen, verwenden Sie den Befehl {Z}. Folgendes Beispiel ändert die Schriftgröße auf 8 Punkt und setzt den Zeilenabstand auf den im Formular hinterlegten Wert. Am Ende werden Schriftgröße und Zeilenabstand auf Standard zurückgesetzt:
{S8}{z} ... {s}{z}
- t - Textpuffer leeren
Mit FaktuLux ist es möglich, Fließtext über mehrere individuelle Formularzeilen zu verteilen. So können in einer Belegposition Preise und Rabatte neben dem Text untereinander aufgeführt werden. Am Ende jeder Position wird wird der restliche Inhalt des Textpuffers gedruckt, bevor eine neue Position begonnen wird. Mit dem Befehl {t} kann man den Puffer gezielt leerdrucken lassen, um danach weitere Zeilen zu drucken. Dabei wird nur für im Resttext vorhandene Zeilen ein Vorschub ausgeführt. Der Befehl muß am Anfang einer Zeile stehen.
- T - Textbaustein
Wiederkehrende Anweisungsblöcke, welche Sie für mehrere Formulare benötigen, können Sie in den Textbausteinen der Formulare ablegen und an gewünschter Stelle in das Formular einbinden. Der Befehl {T<Kennung des Textbausteins>} muss dazu am Zeilenanfang in einer eigene Zeile stehen, welche nicht geduckt wird, d.h. es folgen keine weiteren Befehle in dieser Zeile und es wird kein Zeilenvorschub durchgeführt.
Achten Sie bei der Verwendung von Tabulatoren in Textbausteinen darauf, dass diese in allen Formularen, in die Sie den Textbaustein einbinden, entsprechnend gesetzt sein müssen. Selbiges gilt für Variablen. Auch die Seitenränder können in Formularen unterschiedlich gesetzt sein.
Ein gutes Beispiel für die Verwendung der Textbausteine ist der Briefbogen aus den Beispielformularen. Um diesen nur an einer einzigen Stelle anpassen zu müssen, wurde er als Textbaustein gesetzt und in die Belege eingebunden.
Um den Umgang mit Formatierungen in Textbausteinen zu vereinfachen, werden vor dem Aufruf Schriftart und -größe, Farbe und Formatierung gespeichert und nach der Ausführung zurückgesetzt. Sollten Sie einen Textbaustein jedoch gezielt für Formatierungen einsetzen wollen, müssen Sie diesen mit Parameter X aufrufen, um den Erhalt der Änderung zu erzwingen.
Beispiel: {TSchriftNeu,X}
Innerhalb eines Textbausteins dürfen keine Textbausteine verwendet werden.
- u - Unterstreichen aus
- U - Unterstreichen ein
Beispiel: {U}Betreff:{u} {V30.Betreff}
- v - Variable Extra
Druckt Variablen wie {V}, jedoch mit zwei Besonderheiten.
- Nummeriche Variablen
- Der Inhalt Null (0) einer nummerischen Variablen ist nicht gleichbedeutend mit gar keinem Inhalt, denn eine Null erscheint auf dem Ausdruck, wohingegen ohne Inhalt auch keine Null gedruckt wird. Möchten Sie den Druck von Nullwerten auch unterdrücken, um z.B. die Übersicht zu verbessern, sprechen Sie die Variable mit einem kleinen v an.
- Memo
- In der Regel werden bei einem Fließtext nach dem Druck der ersten Zeile die restlichen Zeilen aus dem Textpuffer gedruckt. Möchte man hingegen die weiteren Zeilen in die folgenden Zeilen des Formulars integrieren, ruft man die Variable mit dem kleinen v ab. Weitere Zeilen werden dann, sofern vorhanden, mit dem Formular in jeder Zeile mit Zeilenvorschub gedruckt. Am Bereichsende erfolgt ein Restdruck. Möchten Sie den Restdruck an einer festgelegten Stelle im Formular durchführen, verwenden Sie den Befehl {t}. (Da erste nach der Interpretation einer Zeile bekannt ist, ob diese einen Zeilenvorschub durchführt, kann entgegen früherer Versionen die Fortsetzung des Fließtextes erst nach dem Druck einer Zeile erfolgen)
- V - Variable
Eine Variable wird mit {V<Tabellen-Nr>.<Feld-Name>} angegeben. Bei der Standardtabelle (siehe Bereiche der einzelnen Formular-Typen) kann die Angabe der Tabellen-Nr. entfallen (V.<Feld-Name>). Die Standardtabelle kann je nach Druckbereich variieren (z.B. Belege: Beleg-Kopf und -Fuß=30, Positionen=31).
Feldinhalte können auch zur Speicherung und weiteren Verarbeitung an Variablen übergeben werden. Details lesen Sie in der Variablen-Zuweisung.
bei Fließkomma-Variablen (Float): ,<Nachkomma> Anzahl der Nachkommastellen bei Float-Werten (Default=2) Hat der Wert mehr Nachkommastellen, werden diese kaufmännisch gerundet. Dieser Parameter muss, wenn er gesetzt wird, immer als erstes folgen! M - Nachkommastellen für Mengen R - Nachkommastellen für Rabatte P - Nachkommastellen Preis W - Nachkommastellen der Währung weitere Parameter zur genaueren Einschränkung ,0 Überflüssige Nachkommastellen entfernen Hat der Wert keine Nachkommastellen, fällt auch das Komma weg ,<Wert> Überflüssige Nachkommastellen bis auf <Wert> entfernen Dieser Wert kann auch größer als der erste sein, wodurch Nullen angehängt würden. Beispiele: Der Variablenwert für X betrage 1,237 {V.X} -> 1,24 (gerundet auf Standard 2 Stellen) {V.X,1} -> 1,2 {V.X,2,3} -> 1,240 ,I Wird einem Fließkommawert als zweites ein 'I' angehängt, wird dieser als Integerwert behandelt. Dabei werden Nachkommastellen nicht einfach abgeschnitten, sondern der Wert wird kaufmännisch gerundet. Der erste Wert gibt die Mindestlänge an. Dies ist hilfreich bei der Verwendung der Puffer-Variablen (VS.41} bis {VS.45) und {Vr.0} bis {Vr.9}. Beispiel: {VS.41=5} -> {VS.41,2,I} = 05 ,- Setzt bei negativen Fließkommawerten das Minuszeichen ans Ende ,O Darstellung ohne Tausenderpunkt (Standard ist mit Tausenderpunkten) bei ganzzahligen Variablen (Integer): ,<Vorkomma> Setzt Nullen vor einen Integerwert, wenn dieser nicht die geforderte Zahl an Stellen hat. ,R Darstellung mit Tausenderpunkt (Standard ist ohne Tausenderpunkte) ,+<Stichwort> Nur anwendbar auf Felder, die eine AdressID enthalten. Weist der Adresse das angegebene Stichwort zu. Wird das Stichwort nicht gefunden, wird es angelegt. Wird kein Stichwort angegeben, wird der Inhalt der Variable {Vs.9} als Stichwort verwendet. So können Sie das Stichwort zur Laufzeit setzen und verändern. Außerdem können Sie den Inhalt von Feldern und anderer Variablen zur Erstellung des Stichworte verwenden. Am Ende der Ausführung erhalten Sie eine Meldung über die Anzahl der neu zugewiesenen und bereits verlinkten Stichwörter. ,BG Gibt zur Beleg-Art die Beleg-Gruppe zurück Die Übernahme von Belegen wird mittels Beleg-Art und Beleg-ID gespeichert. Für den Zugriff auf einen Beleg benötigt man hingegen die Beleg-Gruppe. Jede nummerische Variable im Bereich der Beleg-Arten wird in den Wert der zugehörigen Gruppe gewandelt. bei Text-Feldern: ,#<x> Gibt nach Namenskonvention einen Teil des Namen zurück (#N-Nachname, #V-Vorname, #T-Titel, #Z-Zusatz) ,B Aktuelle Briefanrede aus TAnreden mit Feldinhalt füllen, wenn vorhanden, sonst Leerstring ,G Wandelt Klein- in Großbuchstaben um ,U Feldinhalt nach Namenskonvention umstellen (#N, #V, #T, #Z) ,= Feldlänge auf fixe Anzahl Zeichen setzen Für nicht proportionale Schriften bei reiner Textausgabe, z.B. in Dateien kann es hilfreich sein, jedes Feld auf eine fixe Länge zu setzen. Dem Gleichheitszeichen folgen der Positionscode (L/l oder R/r), das einzufügenden Zeichen und die gewünschte Länge. Ist der Inhalt länger als angegeben und das Positionscode-Zeichen ein Großbuchstabe, wird am entsprechenden Ende abgetrennt. Beispiele: ,=L012 Füllt das Feld links mit Nullen bis auf eine Länge von 12 ,=R 4 Hängt Leerzeichen bis zu einer Länge von 4 Zeichen an ,=l 5 Füllt das Feld links mit Leerzeichen bis zu einer mindest- länge von 5 Zeichen, ist das Feld länger, wird es aber nicht gekürzt. bei Text- und Memo-Feldern: ,<Breite> Beim Druck von String-Feldern: Die Breite wird in Millimetern angegeben. Ist der Feldinhalt breiter, wird er beschnitten und es werden zwei Punkte angehangen. Außer einer festen Breite können auch eine X-Position oder ein Tabulator als Breite angegeben werden. Das erleichtert das Verschieben von Spalten in Listen. Beispiel: {V10.Strasse,x2-1} druckt den Straßennamen bis einen Millimeter vor Tabstop x2. Beim Export von String-Feldern: Es wird immer der gesamte Inhalt des Feldes exportiert. Eine angegebene Länge wird ignoriert. Beim Druck von Memo-Feldern: Steht vor der Breite ein X (,X<Breite>) wird nur die erste Zeile des Textes gedruckt. Das kann für Listen sehr hilfreich sein, wenn man z.B. nicht die volle Artikelbezeichnung benötigt. Allerdings wird nur eine Zeile gedruckt. Passt der erste Absatz des Textes nicht in die gewählte Druckbreite, wird der Druck nicht in der nächsten Zeile fortgesetzt. Es werden auch nur Wörter gedruckt, die vollständig in die Druckbreite passen. Der Text wird nicht mitten im Wort abgeschnitten und es werden auch keine Punkte angehangen. bei Memo-Feldern: ,A<x> Bei Fließtextfeldern ist es möglich, nur einen bestimmten Absatz auszuwählen. Ein Absatz endet mit einem Zeilenumbruch und kann im Druck auch mehrere Zeilen umfassen. Über eine Bereichskennung können auch mehrere Absätze ausgewäht werden. Die FaktuLux-Bereichskennungen sind ^A (nur auf Angebote drucken), ^T (nur auf Auftragstasche drucken), ^L (nur auf Lieferscheine drucken), ^R (auf alle Belege außer Angebote drucken) und ^I (nur für internen Gebrauch). Sie können aber auch beliebige eigene Bereiche definieren. Achten Sie jedoch darauf nur Buchstaben zu verwenden, da Ziffern die Nummer des Absatzes definieren. Damit frei definierte Bereiche (nicht ^ATLRI) bei der Übernahme in Belege gelöscht werden, muss im Bereich [System] der Schalter ArtikelTextPlus=1 in der FaktuLux.Ini eingetragen werden! x=0 Gesamter Text, der keiner Bereichseinschränkung unterliegt x=1-9 Entsprechender Absatz 1 - 9 x=A-Z Nur Text der angegebenen Bereichskennung Beispiele: {V20.Bezeichnung,50,AA} druckt nur den mit ^A markierten Teiltext der Artikelbezeichnung, mehrzeilig und mit einer Breite von 50mm. {V20.Bezeichnung,120,A1} druckt nur den ersten Absatz der Artikelbezeichnung, mehrzeilig und mit einer Breite von 120mm. Zur weiteren Verarbeitung können Memo-Felder auch an temporäre String-Variablen übergeben werden, z.B. {Vs.0=V20.Bezeichnung,AA}. ,I Druckt auch die mit ^I gekennzeichneten Bereiche einer Belegposition. Beim Export von Memo-Feldern: Es wird stets nur der erste Absatz exportiert, d.h. der Inhalt der Textvariablen bis zum ersten Zeilenumbruch. Hier bestimmt die Breite die Anzahl der Zeichen, die vom Feldinhalt maximal in die Datei geschrieben werden. Wird keine Länge angegeben, wird der komplette erste Absatz exportiert. Alle übrigen Parameter werden ignoriert. ,# Zum Export des gesamten Inhaltes eines Memo-Feldes müssen Sie die Zeilenumbrüche durch andere Zeichen ersetzen. Die geschieht mit dem Parameter #. Zeilenumbrüche werden durch alle auf die # folgenden Zeichen ersetzt. Um beispielsweise die Zeilenumbrüche in einer Artikelbezeichnung durch ", " zu ersetzen, verwenden Sie den Befehl {V20.Bezeichnung,#, }. Werden hinter dem # keine Ersetzungszeichen angeben, wird der HTML-Tag <br /> verwendet. Gleichzeitig werden die Formatierungsbefehle für Fett, Kursiv und Unterstrichen durch HTML-Tags ersetzt und Ä, Ö, Ü, ä, ö, ü, ß und viele Sonderzeichen nach HTML konvertiert. Sollen die spitzen Klammern < und > nicht konvertiert werden, da sich im Text bereits HTML-Befehle befinden, verwenden Sie einen Doppel-Hashtag {V20.Bezeichnung,##}. Sollen ausgewählte Absätze exportiert werden, muss der Wert zuvor an eine temporäre String-Variable übergeben werden. Auch in diesen können Sie mittels Parameter # die Zeilenumbrüche beim Export ersetzen. bei temporären String-Variablen: ,A Gibt die Anzahl der Absätze zurück, d.h. wieviele Zeilenumbrüche sich im Text befinden +1. Allgemein: ,L Gibt die Länge des Feldinhaltes in Zeichen zurück ,S Gibt die Druckbreite des Feldes in der aktuellen Schrift in Millimetern zurück Hilfreich in Bedingungen für eine optionale Positionierung oder einen Zeilenumbruch Folgt auf Datumsfelder ein X, wird das Datum in der Langform mit ausgeschriebenem Monat gedruckt. Beispiel: {V1.Datum,X}
Lokalisation
Per Lokalisation kann ein bestimmter Datensatz in einer Auswahl-Tabelle angewählt werden. Zum Druck einer Adresse benötigen Sie beispielsweise die Anrede aus den Anredeformen. Im ersten Schritt lokalisieren sie die zur Adresse gehörige Anredeform mit {VL51,10.AnredeIDa}, wobei 51 die Nummer der Tabelle der Anredeformen ist. Danach drucken Sie die zugehörige Anrede mit {V51.Anrede}. Ist das Feld AnredeIDa der Adresse leer, ist das Ergebnis der Lokalisation negativ und zu allen Aufrufen von Feldern der Tabelle Anredeformen werden Leerwerte zurückgegeben. Hat das Feld hingegen einen Inhalt, erhalten Sie eine Fehlermeldung und die weitere Verarbeitung des Formulars wird abgebrochen, wenn dieser Inhalt in der Tabelle der Anredeformen nicht gefunden werden kann. Möchten Sie, dass die Verarbeitung kommentarlos fortgeführt wird, müssen Sie für die Lokalisation das L im Befehl klein schreiben {Vl51,10.AnredeIDa}.
VL<X>,<Y>.<Field> Lokalisiert Tabelle <X> auf <Y>.<Field> Kann eine Lokalisation nicht erfolgreich durchgeführt werden, führt ein großes 'L' zu einem Druckabbruch mit Fehlermeldung. Bei einem kleinen 'l' wird der Druck kommentarlos fortgesetzt.
Ein Sonderfall ist die Lokalisation von einfachen Eingabelisten. Diese bestehen nur aus einer Kennung und einer Bezeichnung und finden z.B. Verwendung bei Sprache, Branche, Tour oder dem Fibu-Konto. All diese Listen werden über die Tabelle 70 dargestellt. Jeder Liste ist innerhalb der Tabelle ein eigener Wert zugeordnet, der bei der Lokalisation mit übergeben werden muss. Jede Lokalisation in den Eingabelisten macht eine vorhergehende Eingabelisten-Lokalisation ungültig. Deshalb sollte sie immer unmittelbar vor dem Zugriff auf die Bezeichnung mittels {V70.Bezeichnung} erfolgen.
VLE<X>,<Y>.<Field> Lokalisiert Tabelle 70 auf Liste <X> und Kennung <Y>.<Field> Kann eine Lokalisation nicht erfolgreich durchgeführt werden, führt ein großes 'L' zu einem Druckabbruch mit Fehlermeldung. Bei einem kleinen 'l' wird der Druck kommentarlos fortgesetzt.
Sondervariablen
Es gibt allgemeine Sondervariablen, die in jedem Formular verwendet werden können, und solche, die nur in bestimmten Formular-Typen Verwendung finden.
VS.<Wert> Sondervariable
Zusätzliche gibt es noch Sondervariablen als Zwischenspeicher und für Berechnungen, über die Sie zusammen mit den Formular-Variablen weitere Informationen in der Variablen-Zuweisung erhalten.
Ini-Variablen
Um die Steuerung von Ausdrucken und Exporten in FaktuLux so flexibel wie möglich zu gestalten, können auch Variablen in Ini-Dateien geschrieben und aus diesen gelesen werden. So lassen sich Werte aus verschiedenen Auswertungen in einem Ausdruck zusammenfassen oder Daten von anderen Programmen in FaktuLux-Ausgaben übernehmen. Dabei stehen zwei unterschiedliche Ini-Dateien zur Verfügung: Eine globale mit dem Namen Formulare.ini und eine formularspezifische. Letztere trägt als Namen die Formularkennung gefolgt von der Endung .ini. Abgelegt bzw. gesucht werden die Ini-Dateien im Verzeichnis Formulare unterhalb des Datenverzeichnisses des aktuellen Hauptmandanten. Der Bereich für die Variablen muss mit [Formular] benannt werden. Verzeichnis, Dateiname und Bereichskennung lassen sich aber auch ändern. Doch zuerst wollen wir auf die Definition der Variablen eingehen.
Beispiel für den Inhalt einer Ini-Datei:
[Formular] Kunde=Muster GmbH PaketID=1234567890X
Groß-/Kleinschreibung spielt bei der Benennung und dem Abruf der Variablen keine Rolle.
Der Zugriff erfolgt über den Variablen-Befehl. Als Kennbuchstabe dient das F, wobei ein kleines f die Variable aus der Formulare.ini zu lesen versucht und ein großes F aus der formularspezifischen Ini-Datei. Ist die Variable nicht vorhanden, ist das Ergebnis leer.
Möchten Sie eine Fehlermeldung erhalten, wenn eine Variable nicht gefunden wurde oder ihr Inhalt leer ist, können Sie über + und - die Meldung ein- bzw. ausschalten. Dabei ist es unerheblich, ob Sie das F groß oder klein schreiben.
{VF.+} Schaltet die Meldung bei fehlender Variable ein {VF.-} Schaltet die Meldung bei fehlender Variable aus
Möchten Sie die Meldung nur für einzelne Variablen ein- bzw ausschalten, setzen Sie das + oder - unmittelbar vor den Variablenbezeichner.
{Vf.+PaketID} Meldet eine fehlende Paket-ID, auch wenn die Meldungen abgeschaltet sind {VF.-Ansprechpartner} Übergeht trotz aktivierter Medungen einen fehlenden Ansprechpartner
Um den Wert einer Variable als Zahlwert in einer Bedingung verwenden zu können, müssen Sie diesen zuvor an eine Zahlen-Variable übergeben, da die Ini-Variablen wie Textfelder behandelt werden.
{Vi.0=VF.Anzahl} [{Vi.0}>1 Die Sendung besteht aus {VF.Anzahl} Paketen. ]
Sie können Variablen aber nicht nur aus den Ini-Dateien lesen, sondern auch in diese scheiben. Verwenden Sie für die Zuweisung das Gleichheitszeichen, wie bei der Variablen-Zuweisung von Textvariablen.
{Vf.Belegnummer=V30.GruppeID+-+V30.ID} Schreibt die Belegnummer mit Gruppe in die Variable Belegnummer in die Formulare.ini
Und jetzt wird's kompliziert. Sie können auch den Variablenbezeichner dynamisch per Stringkonstrukt definieren. Achten Sie dabei aber auf die gültigen Zeichen für Bezeichner in Ini-Dateien.
{VF.V30.GruppeID+V30.ID=V1.ID} Schreibt die Benutzer-ID in eine Variable, welche nach der Beleggruppe und der Belegnummer benannt ist, in die formularspezifische Ini-Datei.
Wenn Sie solche Kontrukte nutzen, müssen Sie die resultierende Ini-Datei regelmäßig löschen oder archivieren, da der Zugriff mit steigendem Inhalt immer langsamer wird.
Um die Flexibilität dieser Funktion noch weiter zu erhöhen, erlaubt Ihnen FaktuLux das Ändern von Verzeichnissen, Ini-Dateinamen und Bereichskennungen. Somit können Sie in beliebige Ini-Dateien schreiben oder aus ihnen lesen. Die Zuweisung erfolgt über den Variablenbefehl mittels Doppelpunkt. Verwenden Sie ein kleines oder ein großes F, jenachdem für welche Ini-Datei Sie den Wert ändern möchten. Auch hier können Sie sowohl die Kennung als auch den Inhalt über einen Stringkonstrukt definieren. Als Kennung sind jedoch nur V, D und B zulässig.
{Vf:V=<Text>} Ändert das Verzeichnis für die Ini-Datei {Vf:D=<Text>} Ändert den Namen der Ini-Datei, die Dateierweiterung (.ini) wird nicht mit angegeben {Vf:B=<Text>} Ändert die Bereichskennung der Ini-Datei, aus der gelesen, bzw. in die geschrieben wird, die Klammern ([]) werden nicht mit angegeben.
Beispiel: Die möchten im Verzeichnis "Versand" auf dem Laufwerk X: eine Ini-Datei anlegen, deren Name aus Beleg-Gruppe und Beleg-Nummer besteht. In diese möchten Sie in Bereich [Paket] die Belegnummer und die Anschrift der zum Beleg gehörigen Adresse hinterlegen. Das {n} verhindert, dass jedes mal eine Leerzeile exportiert oder zum Drucker geschickt wird.
{n}{VF:V=X:\Versand}{VF:D=V30.GruppeID+V30.ID}{VF:B=Paket} {n}{VL49,30.AdresseID} //Adresse zum Beleg lokalisieren {n}{VF.Auftrag=V30.ID} {n}{VF.Anschrift1=V49.Name1,U} {n}{VF.Anschrift2=V49.Name2} {n}{VF.Strasse=V49.Strasse} {n}{VF.Land=V49.LandIDa} {n}{VF.Plz=V49.Plz} {n}{VF.Ort=V49.Ort}
Über diese mächtige Funktion können Sie Daten an andere Programme übergeben oder aus diesen in die Formulare von FaktuLux übernehmen. In einem Netzwerk müssen Sie beachten, dass sich verschiedene Arbeitsstationen beim Lesen und Schreiben nicht in die Quere kommen.
Extra-Felder
Auf Extra-Felder greifen Sie wie auf Tabellenfelder mittels ihrer Kennung mit vorangestellter Raute # zu. Wollen Sie beispielsweise ein Extra-Feld mit der Kennung WERBEMAIL einer Adresse drucken, lautet der Befehl {V10.#WERBEMAIL}. Dabei akzeptiert FaktuLux jede Schreibweise mit Groß- und Kleinbuchstaben. Wurde das Feld einer Adresse nicht zugewiesen, wird ein Leerfeld zurückgeliefert.
Über die Feldauswahl in den Formularen können Sie auch Extra-Felder direkt aus der Liste der definierten Felder auswählen.
Barcode-Druck
VB<TN>.<FN> Variablenwert als Barcode drucken Bei den anschließenden Werten, die durch Semikolon zu trennen sind, wird bei fehlendem Wert oder Null der Standardwert angenommen. Für den Barcode-Druck gelten folgende Werte, die mit Semikolon zu trennen sind: x<Wert> Tab-Wert (x0 = Linker Rand) xx Rechter Rand y Oberer Rand yy Unterer Rand X<Wert> X-Wert (absolut oder mit +/- relativ von akt. Position) Y<Wert> Y-Wert (absolut oder mit +/- relativ von akt. Position) C<Nr> Art des Barcode (siehe Tabelle am Ende, Standard 6 = Code128 Auto) H<Wert> Höhe in Millimetern (Standard 5mm) W<Wert> Breite des schmalsten Balken in Millimetern (Standard 0,25mm) A<Winkel> Drehwinkel beim Druck (Standard 0) F<Text> Text, der vor den Variablenwert gesetzt werden soll Möchte man z.B. die Adressnummer eines Verteiler-Lieferscheines als Barcode drucken, so setzt man die Kennungen für "interner Barcode" und "Adresse" einfach davor: {VB90.AdresseID;F#1} Für die VerteilerID oder die AnsprechpartnerID lauten die Befehle {VB90.ID;F#V} und {VB90.AnsprechpartnerID;F#A}. B<Text> Text, der nach den Variablenwert gesetzt werden soll
Blocktext
Der Blocktext von PrintLux besteht aus zwei Spalten, der Beschriftung und dem Inhalt. Als Anhang an die Variable wird durch Komma getrennt nicht die Textbreite sondern die Positionierung und Formatierung für die zweite Spalte übergeben. Diese müssen in geschweiften Klammern stehen. Vor und nach dem Text der zweiten Spalte ist die Formatierung aktiv, die zu Anfang der Variable gesetzt war. Sie brauchen also Formatierungen, die sie für die zweite Spalte setzen, nach dem Blocktext nicht zu revidieren, müssen hingegen solche, die nur für die erste Spalte (die Beschriftungen) gelten, doppelt umkehren. Beispiel: {B}{V31.Bezeichnung,{x4}{b}{I}}{b} In Formularen des Typs 1-Belege wird für die Druck-Kennung der gewählte Belegtyp verwendet, in allen anderen Formular-Typen wird nur der erste Block (zumeißt "Objekt") gedruckt, es sei denn, unmittelbar nach dem Komma wird durch einen Wert ein anderer Belegtyp vorgegeben. Beispiel: {B}{V31.Bezeichnung,1{x4}{b}{I}}{b} wird gedruckt wie auf einem Angebot Es gelten: 1 - Angebot, 2 - Auftragsbestätigung 3 - Tasche 4 - Lieferschein 5 - Rechnung/Gutschrift 6 - Preisanfrage 7 - Bestellung/Stornierung A - alles drucken B - nur 1. Block BB- nur 1. Block ohne Beschriftung Z - nur 1. Zeile ZB- nur 1. Zeile ohne Beschriftung
- w - Wiederholungszeile
Der Befehl muß am Zeilenanfang stehen. Eine Wiederholungszeile kann überall im Formular verwendet werden. Die Zeile wird mit allen Datensätzen der hinter dem 'w' angegebenen Tabelle interpretiert. Das kann sowohl ein Druck, als auch eine Summierung sein.
Folgendes Beispiel zählt zuerst die auf der Auftragsbestätigung zu druckenden Termine. {n}{Vi.1=0} {w34}{n}{Vi.1=+V34.DruckAB} //Boolsche Variablen ergeben FALSE=0, TRUE=1 In Abhängigkeit davon kann dann die Überschrift gedruckt werden. In eckige Klammern eingeschlossen kann hinter der Tabellennummer eine Bedingung für das Ausführen mit dem aktuellen Datensatz erfolgen. Eine optionale Else-Anweisung kann mit Halfpipe angehängt werden. [{Vi.1}>0 Bitte nehmen Sie folgende Termine zur Kenntnis: {w34[{V34.DruckAB}=1]}{V34.Datum} {V34.Bezeichnung}|//Termin nicht drucken ] Ein Beispiel für eine Beschriftung, die nur vor die erste Position gedruckt wird. Dabei wird zuerst der Beschriftungstext in eine Textvariable geladen und nach der Ausgabe der ersten Zeile zurückgesetzt. {n}{Vs.1=Material:} {w35}{Vs.1}{xD1}{V35.Menge}{x2}{V35.Bezeichnung}{Vs.1=} Die Tabellennummer wird zur Standard-Tabelle. Reicht eine Zeile für die Definition nicht aus, kann auch ein Textbaustein für die Verarbeitung der Wiederholungszeile verwendet werden. Geben Sie dazu den Namen mit Komma getrennt hinter der Tabellennummer an. Beispiel: {w34,Termine}
- W - Bereichswechsel
Der Befehl muß am Zeilenanfang stehen.
Folgt in Listen-Formularen hinter dem W eine Nummer, so wird diese Datenquelle als Unterliste abgearbeitet. Die Unterlisten müssen nach den Positionen als vierter Bereich folgen und jede besteht wiederum aus drei Bereichen (Vorspann, Positionen und Nachspann). So kann man beispielsweise in einer Adressenliste zu jeder Adresse alle Ansprechpartner oder Zusatzadressen drucken.
Der Fax-Druck von Belegen kann in eine Datei erfolgen und über folgenden Parameter kann diese in ein Verzeichnis zur Weiterverarbeitung verschoben und zusätzlich Informationen können angehängt oder in einer separaten Datei abgelegt werden.
WX<Quelle>;<Ziel> PostScript-Datei Konvertierung (muß als letzter Bereich stehen) Richten Sie einen PostScript-Drucker so ein, dass der Ausdruck in eine Datei erfolgt. Geben Sie diese Datei samt Verzeichnis als "Quelle" an. Nach dem Ausdruck wird diese Datei geöffnet, in eine Datei mit zufälligem Dateinamen und der Endung "ps" in das in "Ziel" angegebene Verzeichnis kopiert und der Bereich als Text angehängen. Anschließend wird die Datei "Quelle" gelöscht. Auf einem Server kann dann die Weiterverarbeitung der Zieldatei z.B. als Fax erfolgen. WX<Quelle>;<Ziel>;<Erweiterung> wird hinter dem Zielverzeichnis eine Dateierweiterung angegeben, wird der Bereich nicht an die Zieldatei angehängt, sondern es wird eine weitere Datei mit gleichem Namen und der angegebenen Endung erzeugt, in die der Bereich exportiert wird.
Für das automatische Versenden von eMails wird der Text in einer Datei abgelegt. Das Verzeichnis wird im Bereich [AutoMail] der FaktuLux.ini definiert, der Dateiname ergibt sich aus der DruckJobID, die über die Variable {Vx} abgerufen werden kann.
WX<Erweiterung> Wird als Dateierweiterung für die Ausgabedatei verwendet. WX<Erweiterung>;<Erweiterung> Wird eine zweite Dateierweiterung angegeben, wird der Bereich nicht an die Ausgabedatei angehängt, sondern es wird eine weitere Datei mit der angegebenen Endung erzeugt, in die der Bereich exportiert wird.
- x - gehe zu Tab
Der Befehl {x} ruft die im Formular definierten Tabulatoren ab. Die Tablulatoren werden in mm vom Linken Rand definiert und verschieben sich auch mit diesem.
x<Wert> Im Formular lassen sich 10-20 Tabulatorpositionen speichern, die kurz über {x1} bis {x10}/{x20} abgerufen werden können. x0 Linker Rand xx Rechter Rand (+/- möglich) Wählen Sie den rechten Rand, wird automatisch die Ausrichtung rechtsbündig gesetzt. Gruppen von Text und Variablen müssen dann in umgekehrter Reihenfolge angegeben werden. xW Spaltenbreiten-Tabulator Folgt auf das x ein W, wird der Tabulatorwert als Spaltenbreite zum vorhergehenden Tabulator gesetzt; hilfreich bei Listen, z.B. {xW3} geht an die Position um Tabulatorwert 3 weiter Rechts von der zuletzt gesetzte X-Position. Auch die Positionsangabe wird vom vorhergehenden Tabulator übernommen. Eine abweichende Positionsangabe muss nach dem W folgen (Richtig xWD8, Falsch xDW8). Tabulatorwerten kann ein Korrekturwert in mm folgen, z.B. {x12-3,2}. Positionsangaben sind möglich, z.B. {xD8} für einen Dezimaltabulator. Beispiel: Sie möchten im Briefkopf Ort und Lang-Datum vom rechten Rand drucken. {xx}{V30.Belegdatum,X}Koblenz, Ergebnis: Koblenz, 31. Oktober 2012 Vergessen Sie das Leerzeichen hinter dem Komma nicht!
(außer DirectPrint)
- X - gehe zu X
Das groß geschriebene X positioniert den Spaltenzeiger für den Druck relativ zum linken Papierrand, bzw. Etikettenrand, unabhängig vom gesetzten Linken Rand.
XM gehe zu gemerktem X XL(eft),R(ight),C(enter),D(ecimal) Positionsangabe für linksbündig, rechtsbündig, zentriert oder einen Dezimaltabulator, bei dem der Vorkommabereich links und der Rest rechts von der X-Position gedruckt werden. X+/-<Wert> von aktueller Position aus rechts/links Um Text und Variablen von rechts zu drucken, müssen die Einheiten von Text und Variablen in umgekehrter Reihenfolge angegeben werden, da sich der Spaltenzeiger beim rechtsbündigen Druck immer weiter nach links verschiebt.
- y - gehe zu Oberem Rand
Der Befehl {y} setzt den Zeilenzeiger auf die im Formular als Oberer Rand definierte Position. Gleichzeitig wird der Spaltenzeiger X auf den Linken Rand gesetzt. Verschiebungen mittels +/- sind zulässig. Der Befehl {yy} bezieht sich auf den Unteren Rand.
Beispiel: {y+10} positioniert 10mm unterhalb des Oberen Randes
(außer DirectPrint)
- Y - gehe zu Y
Das groß geschriebene Y positioniert den Zeilenzeiger für den Druck relativ zum oberen Papierrand, bzw. Etikettenrand, unabhängig vom gesetzten Oberen Rand.
YM gehe zu gemerktem Y Y<Wert> Absolute Y-Position in mm von oben Y+/-<Wert> von aktueller Position aus runter/hoch wird ein Korrekturwert am Anfang eines Bereiches eingegeben und wurde noch kein Text gedruckt, wird dieser nach einem Seitenwechsel wiederhergestellt YM<Wert> Mindestens absolute Y-Position Wird nur gesetzt, wenn sich der aktuelle Zeilenzeiger oberhalb dieses Wertes befindet. Beispiel: Sie wollen den Betreff eines Briefes so tief drucken, dass er nicht im Fenster eines Umschlages zu sehen ist. {YM100}{V30.Betreff} Nur, wenn die definierte Position noch nicht erreicht ist, wird zu dieser vorgerückt.
- z - Standard-Zeilenabstand des Formulars
Setzt den im Formular hinterlegten Zeilenabstand, bezogen auf die aktuelle Schriftgröße. Wenn im Formular kein anderer Wert definiert ist, wird als Abstand das 1,1-fache der Höhe der aktuellen Schrift verwendet.
Der Befehl {zz} setzt den zu Begin der Ausgabe gesetzten Zeilenabstand, ohne auf die Standardschrift wechseln zu müssen.
- Z - Zeilenabstand
Der Befehl {Z} setzt den Vorschub, der bei jedem Zeilenumbruch nach unten durchgeführt wird. Der Zeilenabstand bleibt auch nach Schriftgrößenwechseln unverändert und muss bei Bedarf mittels {Z} angepasst werden. Geben Sie als Parameter den Faktor für die Abhängigkeit des Zeilenabstandes von der Zeichenhöhe an.
Beispiel: {Z1,5} setzt einen anderthalbfachen Zeilenabstand
Achtung: Der Zeilenumbruch erfolgt immer mit dem am Ende einer Formularzeile geltenden Zeilenabstand. Haben Sie für einen Ausgabebereich den Zeilenabstand verändert, sollten sie diesen frühestens in der nächsten Formularzeile zurücksetzen. Gerade bei der Ausgabe von Fließtexten haben sonst die ersten beiden Zeilen einen anderen Abstand als die übrigen.
- @ - Druckerwechsel nach Seite
Der Befehl unterdrückt den Zeilenvorschub. Ein einzelnes {@} ohne weitere Parameter schließt beim nächsten Seitenwechsel den Druckjob ab und startet mit geänderter Ausrichtung (Hoch-/Querformat) neu.
@<Drucker> Hinter dem @ folgt die Druckernummer 1-8. PDF-Drucker sind mit äußerster Vorsicht zu verwenden. Fax-Drucker sind derzeit nicht zugelassen. Wenn der angegebene Drucker dem aktuellen Drucker entspricht, wird die Funktion ignoriert, es sei denn, es wird explizit definiert, z.B. über {@2,2}. Beim nächsten Seitenwechsel wird der Druckjob abgeschlossen und mit dem neuen Drucker fortgesetzt. ,<Drucker> Der Druckerwechsel wird nur ausgeführt, wenn der angegebene Drucker aktuell gewählt ist Beispiel: {@2,1} Wechselt auf Drucker 2, wenn aktuell auf Drucker 1 gedruckt wird Wollen Sie den Drucker wechseln und gleichzeitig die Ausrichtung ändern, kombinieren Sie die Befehle, z.B. {@}{@3}. @+ Folgt auf das @ ein Pluszeichen, bleibt nach der Ausgabe der Druckjob geöffnet und es erfolgt nur einen Seitenvorschub. So kann der nächste Druck im gleichen Job verarbeitet werden und so recht einfach z.B. ins gleiche Fax oder die gleiche PDF-Datei ausgegeben werden. Wird ein Druckjob ohne diesen Befehl beendet, ein anderer Drucker gewählt oder ein Export durchgeführt, wird der Druckjob abgeschlossen. Ebenso kann der Druckjob über den Menüpunkt Datei/Druckjob beenden im Hauptfenster abgeschlossen werden, der nur sichtbar ist, wenn auch ein Druckjob aktiv ist. Optional kann der Ausdruck über diesen Menüpunkt auch abgebrochen werden. @- Beendet den Druckjob nach der Ausgabe. Standardmäßig ist bei jedem neuen Druckjob der Schalter zum Beenden des Jobs gesetzt. Der Befehl {@+} muß also in jedem Job neu gesetzt werden, um diesen am Ende nicht abzuschließen. Jedoch kann ein während des Jobs gesetztes {@+} durch ein späteres {@-} wieder aufgehoben werden. Entscheidend ist der letzte Befehl vor dem Ende des Druckjobs. Folgt auf ein {@+} in einem späteren Job ein {a} zum sofortigen Abbruch des Druckjobs, so wird der gesamt Job gecancelt, d.h. alles was sich im Spooler angesammelt hat wird nicht mehr gedruckt. Der Befehl beendet auch einen Druckjob, der vom System permanent geöffnet gehalten wird, z.B. beim Druck einer Reihe von Belegen. (Funktionen zum Erhalt der Puffervariablen sind geplant)
- Weitere Verwendung des Klammeraffen {@}
- Innerhalb einer Bedingung gesetzt, liefert das @ die Nummer des aktuellen Druckers zurück.
[{@}=5 (Nicht zu verwechseln mit einer Fragebedingung [@ !!) - Daten-Import
Beim Import von Daten repräsentiert das @ die jeweilige Spalte. Es kann mittels {@} in den Puffer geschrieben, einer Variablen gleichgesetzt oder für Bedingungen verwendet werden. (Für Details siehe gesondertes Kapitel Import über Formular)
- # - Kalenderblatt
Der Befehl {#} druckt das gesamte Kalenderblatt. Im zugehörigen Druckdialog wählen Sie den genauen Umfang und die Detailgenauigkeit.
x<Wert> Tab-Wert (x0 = Linker Rand) xx Rechter Rand y Oberer Rand yy Unterer Rand X<Wert> X-Wert (absolut oder mit +/- relativ von akt. Position) Y<Wert> Y-Wert (absolut oder mit +/- relativ von akt. Position) J<Wert> Jahr (Standard aktuelles Jahr) M<Wert> 1. Monat (Standard 1) A<Wert> Anzahl der Monate (Standard 12) Z<Wert> Anzahl der Monate in einer Zeile (Standard 12) K Kalenderwochen drucken W<Wert> Breite des Kalenders (Standard Seitenbreite) D<Datum> Bestimmtes Datum markieren #<Wert> Form der Markierung 0=Kreis (default), 1=Rechteck, 2=Kreis umrandet, 3=Rechteck umrandet F Schriftart (Standard Formularschriftart)
- Weitere Verwendung der Raute {#}
- Daten-Import:
Beim Import von Daten repräsentiert die # den im Druckpuffer befindlichen Text. - WebShop-Export:
Beim Export von Artikeln und Warengruppen für den WebShop repräsentiert die # einen Zähler mit dem Sie die einzelnen tatsächlich exportierten Datensätze nummerieren können. Verwenden Sie diesen Zähler, werden die exportierten Dateien (Bilder) mit dieser Nummer benannt.
DirectPrint
Beim DirectPrint wird der Ausdruck nicht grafisch auf dem Canvas des Druckertreibers zusammengesetzt, sondern die Befehle werden vom Windows- in den DOS-Zeichensatz konvertiert und direkt zum Drucker geschickt. Auf diesem Weg lassen sich spezielle Drucker in ihrer Sprache direkt ansteuern. Bedingung ist, dass der Druckertreiber diese Funktion unterstützt. Zum Test kann man in den Einstellungen des Treibers den Druck in eine Datei umlenken und den Inhalt nach dem Druck überprüfen.
Zur vereinfachten Erstellung von Formularen gelten folgende Ersetzungen:
€€ Ein Doppel-Euro wird durch ein Escape ersetzt \\<Code> Mit einem Doppel-Backslash wird eine ASCII-Codierung eingeleitet. In Folge muß der ASCII-Wert des Zeichens dreistellig, mit führenden Nullen angegeben werden. Beispiel: \\027 wird ersetzt durch ein Escape x<Wert>, y<Wert> Die beiden Befehle {x} und {y} haben im DirectPrint-Modus eine andere Bedeutung. Sie rechnen die angegebenen Werte von Millimetern horizontal, bzw. vertikal in Druckpunkte (Dots) um.
Kommentierungen
Kommentierungen werden mit einem Doppelslash '//' eingeleitet, d.h. Text hinter einem Doppelslash wird ignoriert. Befindet sich der Doppelslash am Anfang einer Zeile, wird die ganze Zeile ignoriert und es wird auch kein Zeilenvorschub erzeugt. Da ein Kommentar am Ende einer Zeile nur ins Auge fällt, wenn er einen gewissen Abstand zur Befehlszeile hat, werden auch alle Leerzeichen zwischen dem Ende des Befehls und dem Doppelslash gelöscht, es sei denn, auf den Doppelslash folgt unmittelbar ein Leerzeichen.
Bedingungen
Ein wichtiges Mittel zur Steuerung von Ausgaben sind Bedingungen. Mit ihnen kann auf unterschiedliche Zustände reagiert werden. Die Zeichen zur Steuerung von Bedingungen '[, |, ]' müssen am Zeilenanfang stehen und werden nicht in geschweifte Klammern '{}' eingeschlossen. Sie dürfen mit Leerzeichen eingerückt werden, um die Verschachtelungstiefe von Bedingungen hervorzuheben. Nahezu grenzenlose Verschachtelungstiefe und Verknüpfungen der Einzelbedingungen mit and und or sowie Klammersetzung sind erlaubt. Leerzeichen trennen die einzelnene Bedingungen und Verknüpfungen voneinander. Enthält ein Vergleichswert Leerzeichen, so muß er in Hochkommata eingeschlossen werden (keine Anführungszeichen!). Verglichen werden nummerische Werte mit und ohne Nachkommastellen, Text sowie Datumsfelder. Ein Datum kann auch aus Text und Variablen zusammengesetzt werden, z.B. [{V40.BelegDatum}>=01.01.{Vm.Jahr}
[ - if leitet eine Bedingung ein | - else (die HalfPipe erhalten Sie über AltGr+<) ist optional und leitet den Bereich ein, der ausgeführt wird, wenn die Bedingung nicht erfüllt ist ] - end schließt eine Bedingung ab Operatoren: = ist gleich, bzw. ist Element der Menge == Textfelder: enthält Teilstring nummerische und logische Felder: undefiniert / ohne Wert < ist kleiner <= ist kleiner gleich <> ungleich, bzw. ist nicht Element der Menge > ist größer >= ist größer gleich >< Textfelder: Teilstring nicht enthalten nummerische und logische Felder: definiert / hat einen Wert Elemente einer Menge sind durch Semikolon zu trennen [[ = Beginnt die Bedingung mit einer doppelten eckigen Klammen, so wird der "if"-Teil so lange ausgeführt, wie die Bedingung zutrifft (jedoch maximal 200 Mal, beim 201. Mal wird der Druck abgebrochen, um eine Endlosschleife zu verhindern) [@ = Folgt auf die Klammer ein @, so wird der folgende Text als Frage in einem Dialog gestellt und entsprechned der Antwort fortgefahren. Zeilenumbrüche werden durch Halfpipes markiert. Es können Variablen {V.xx} eingefügt werden. [# = Erstellung eines individuellen Sortierindex für den Listendruck Diese Funktion muß in der ersten Zeile des Bereiches stehen und kann nur in folgenden Bereichen verwendet werden: + In der Hauptposition von Listen (Formular-Typ 3, Bereich 3) + In Reporten (Formular-Typ 20, Bereich 3) + Im Artikel-Vorlauf des Artikel-Umsatz (Formular-Typ 23, Bereich 3) + Im Rechnungen-Bereich der Umsatz- & Erlösstatistik (Formular-Typ 30, Bereich 3) Wenn Sie die Sortierfunktion verwenden, wird der Bereich 4 (Gutschriften) aus- schließlich zur Erstellung des Sortierindex verwendet. Alle Belege, egal ob Rechnungen oder Gutschriften, werden im zweiten Durchgang im Else-Zweig der Rechnungen verarbeitet. Die zu druckende Tabelle wird anschließend zweimal durchlaufen. Im ersten Durchgang wird der If-Zweig abgearbeitet und alles, was gedruckt werden soll, wird als Text in eine temporäre Datei geschrieben und bildet den Index für die Sortierung des anschließenden Durchgangs. Achten Sie darauf, nummerische Werte ausreichend mit Nullen zu füllen, z.B. durch Übergabe an eine Textvariable und Formatierung vor der Ausgabe ({Vs.1==L012}), da auch sie als Text im Index landen. Andernfalls ist eine 11 kleiner als eine 2, da an der ersten Stelle ein 1 steht. Der zweite Durchgang erfolgt dann anhand des so erstellten Index und der Else-Zweig wird abgearbeitet und gedruckt/exportiert. Auf das Sortierfelder kann mittels {V97.Sortierung} zugegriffen werden. Soll die Verarbeitung erst ab einem bestimmten Startwert beginnen, schreiben Sie diesen direkt hinter die Halfpipe, welche den Else-Zweig einleitet. Je nach Umfang der Datenquelle und dem Anteil der gewünschten Datensätze kann so die Ausgabe erheblich beschleunigt werden. Die temporäre Datei wird in der Grundeinstellung im Datenverzeichnis abgelegt. Dies kann in einem Netzwerk zu Verzögerungen führen. Wenn Sie jedoch in den Adressen die Option "Markierungen lokal speichern" aktivieren, wird auch die Datei für die Ausgabesortierung auf der lokalen Festplatte "C:" gespeichert. Da der Sortierdruck nur innerhalb eines Bereiches definiert werden kann, können Sie keine Unterlisten für die Bestimmung des Sortierindex verwenden. Wollen Sie dennoch auf verknüpfte Tabellen zugreifen, verwenden Sie eine Wiederholungszeile {w}. Hinter eine else-kennzeichnende HalfPipe kann eine weitere Bedingung geschrieben und so eine beliebig lange If-Kette gebildet werden, ähnlich einer Case-Anweisung, welche aber nur jeweils einen Wert verarbeiten kann. Das erspart eine unübersichtliche Verschachtelung mehrerer Bedingungen im jeweiligen Else-Zweig der vorangegangenen. FaktuLux stellt sicher, dass innerhalb einer Ebene nur eine Bedingung zutreffen kann. Beispiel: [{V10.GruppeIDa}><K ist kein Kunde |{V10.LandIDa}=D deutscher Kunde |{V10.LandIDa}=A or {V10.LandIDa}=CH deutschsprachiger Kunde | Kunde mit Fremdsprache ] Hat ein nummerisches oder logisches Feld keinen Inhalt (bei nummerischen Feldern auch nicht '0', bei logischen Feldern einen grauen Haken) wird der Inhalt '0' angenommen, d.h. ein nummerisches Feld ist auch dann '<1', wenn es keinen Inhalt hat. Möchten Sie explizit abfragen, ob ein Feld einen Inhalt hat oder nicht, verwenden Sie die Operatoren '==' und '><'. Zusätzlich können die absoluten Positionen X und Y abgefragt werden, um beispielsweise zu prüfen, ob auf einer Seite noch Platz für entbehrliche Informationen ist. Dabei müssen X und Y groß geschrieben werden, sowie links und in geschweiften Klammern stehen. Beispiele: [{X}<100 oder [{Y}>24 Schließlich kann mit dem @ in geschweifeten Klammern die Nummer des aktuellen Druckers abgefragt werden. Auch dieser Term muss links stehen. Beispiele: [{@}=8 (entspricht dem PDF-Drucker)
Barcode-Nummern
- 0 - EAN13 (S)
- Europäische-Artikel-Nummer mit eingedruckten Ziffern, wie man ihn von vielen Verkaufsverpackungen kennt
- 1 - EAN8 (S)
- Europäische-Artikel-Nummer mit 8 Ziffern
- 2 - EAN13 (S)
- Europäische-Artikel-Nummer mit 13 Ziffern
- 3 - Code128A
- Großbuchstaben und Sonderzeichen (ASCII 32-95)
- 4 - Code128B
- Groß- und Kleinbuchstaben (ASCII 32-127)
- 5 - Code128C
- Optimiert zur Zifferndarstellung
- 6 - Code128 Auto
- Wählt abhängig vom Inhalt den besten Code128
- 7 - CodeEAN128A
- EAN-Sonderform des Code128A, doppeltes Startzeichen
- 8 - CodeEAN128B
- EAN-Sonderform des Code128B, doppeltes Startzeichen
- 9 - CodeEAN128C
- EAN-Sonderform des Code128C, doppeltes Startzeichen
- 10 - CodeEAN128 Auto
- Wählt abhängig vom Inhalt den besten CodeEAN128
- 11 - Code39
- 0-9, A-Z, Leer und -.*$/+%
- 12 - Code39 Extended
- ASCII
- 13 - Code39 Auto
- Wählt abhängig vom Inhalt den besten Code39
- 14 - Code93
- 0-9, A-Z, Leer und -.*$/+%
- 15 - Code93 Extended
- ASCII
- 16 - Code93 Auto
- Wählt abhängig vom Inhalt den besten Code93
- 17 - CodeUPCA
- Universal-Product-Code - amerikanisch 12 Ziffern
- 18 - CodeUPCE0
- Kurzform
- 19 - CodeUPCE1
- Kurzform
- 20 - CodeUPCSupp2
- zweistelliger Zusatzcode
- 21 - CodeUPCSupp5
- zweistelliger Zusatzcode
- 22 - Code25interleaved
- nur Ziffern, keine Prüfsumme, paarweise Darstellung
- 23 - Code25industrial
- nur Ziffern, keine Prüfsumme
- 24 - Code25matrix
- (Abstände für Nadeldrucker optimiert?)
- 25 - CodeCodabar
- Medizin, 0-9 und -$:/.+
- 26 - CodePostNet
- nur Ziffern, Prüfsumme automatisch
- 27 - CodeMSI
- nur Ziffern
- 28 - GS1-128
- je nach Inhalt CodeEAN128B oder CodeEAN128C
- automatische Umschaltung
- Das Paragraphenzeichen § fügt einen FNC1 ein
(S) = Prüfsumme erforderlich und Standard
Feste Formularnamen
Termine - Termine ArbZeit - Mitarbeiter Arbeitszeitenliste (TBenutzer, TZeiterfassung) AufStatus - Auftrags-Statusreport
Sonstiges ========= if TFormulareInitialisierung.AsString='#' then bStartFromHere:=true;