myfactory Online-Hilfe

Bereichslayout Editor

Den Editor erreichen Sie über einen Doppelklick auf ein Feld im Bereichsdesigner.
Er bietet die Möglichkeit, Texte zu erfassen und Texte sowie Befehle zu formatieren. Hierbei kann die Schriftarten und –größen festgelegt werden und eine Formatierung erfolgen.

Editor 0


In dem Eingabefeld tragen Sie die Texte sowie die einzelnen Befehle ein.
Jeder komplette Befehl besteht aus „$Definition innerhalb des Programms in englisch ,Darstellungsschlüssel$“. Soll er kopiert werden, muss auf jeden Fall immer alles innerhalb der zwei $-Zeichen markiert werden.

Eine Kombination aus Benutzertext und Befehl ist möglich und sollte zur besseren Gestaltung des Formulars eingesetzt werden, z. B.:
Editor 1

Editor 2

Im ersten Falle steht Endsumme als reiner Text im Feld, während das Währungszeichen aus der Belegerfassung variabel ausgelesen und übernommen wird.
Im zweiten Fall ergänzt % aus einfach die ermittelten Steuerangaben und bildet einen sinnvollen Satz auf dem Formular (zzgl. MwSt 16,00 % aus € 351,69)
Dort, wo der Befehl im Editor in der Reihenfolge der Befehle steht, wird er auch später im Formular erscheinen
Editor 3

Auf diese Weise sind Kombinationen mit mehreren Befehlen möglich. (in diesem Fall Rabatt (´%) 5,00 was DiscountInfoText Discount entspricht; es wäre dazwischen auch noch ein Trennzeichen wie „:“ oder ein Zwischentext möglich).
Um Dezimalstellen und manche Funktionen besser einstellen zu können, gibt es die Darstellungsschlüssel, die durch eine kommagetrennte Zahl dem Befehl noch eine bestimmte Darstellungsform mitgeben:

NummerBeschreibungBeispiel
0Default, StandardFür Text oder Befehle die keinen Wert auf Formatierung legen, Artikelnummer, Benutzertext,Zahlenangaben ohne Formatierung .
1Befehl wird immer dargestellt, egal ob ein definitiver Wert auf dem Beleg vorhanden ist oder nicht (Nichts = 0), aber in GanzzahlenDer Befehl Menge, da auf dem Beleg auf jeden Fall immer 0 bei Menge eingetragen sein soll.Nur für ganzzahlige Mengenangaben
2Befehl wird immer dargestellt, aber mit einer Währungsformatierung = 2 Dezimalstellen (0,00)Gesamtpreis
3Datumsformatierung d.M.yyyyBelegdatum
4Wie 2, wird aber nur im Beleg angezeigt, wenn diese Funktion auch tatsächlich von den Belegdaten erforderlich ist. Wenn 0.00, dann Leer. Darstellung in WährungsformatierungRabattbefehle, sie werden nur dann auf der Rechnung angezeigt, wenn auch ein Rabatt gewährt wurde.
5Wie 1, wird nur im Beleg angezeigt, wenn diese Funktion auch tatsächlich von den Belegdaten erforderlich ist. Wenn 0, dann Leer.Darstellung in Ganzzahlen Evtl. Rabattprozente, Darstellung nicht in 5,00 sondern nur 5
6Bei Befehl , Formatierung wie bei der Mengeneinheit hinterlegt. Bei Befehl , Formatierung wie bei dem Preis hinterlegt.Wahlweise bei Menge,wenn Formatierung einstellbar sein soll.
7Gibt z.B. bei der Beleg-Endsumme nur den Teil vor dem Komma aus.Euro und Cent in verschiedenen Felder eines Formulars
8Gibt z.B. bei der Beleg-Endsumme nur den Teil nach dem Komma aus.Dito
9Wie 0, nur werden noch , durch . ersetztZur Verwendung in SQL-Befehlen mit Berechnungen
10Zahl wird mit Tausenderpunkt-Formatierung ausgegeben.9876 wird zu 9.876
11Wie 10, aber leer, wenn 0.Siehe 10
12String (Zeichenkette), der über das Korrespondenzwörterbuch übersetzt wird."Auftragsbestätigung" wird z.B. in "Confirmation of order" übersetzt.
13String (Zeichenkette), der über das (globale) Anwendungswörterbuch (Systemwörterbuch) übersetzt wird.Verhält sich ähnlich wie 12, nur für das Anwendungswörterbuch.
14Zahlenwert, formatiert mit der Anzahl der vorhandenen NachkommastellenEin Preis mit zwei Nachkommastellen, z.B. 2,45, wird auch genauso dargestellt. Besitzt der Preis jedoch 00 als Nachkommastellen, so werden diese nicht mit ausgegeben (6,00 wird also automatisch in 6 umgewandelt).
15Verhält sich wie 14; Feld bleibt allerdings leer, wenn der Wert 0 ist.Siehe 14
16Gibt HTML-Text 1:1 ausWährend bei Formatkennzeichen 0 ein "div"-Tag im String einfach als Text ausgegeben wird, wird bei Darstellungsschlüssel 16 ein tatsächliches HTML-div erzeugt.
17vbCrLf wird in Text mit Umbruchsetzung durch "br" ersetzt.txt-Langtexte mit Zeilenumbrüchen zeigen diese damit auch in der Druckausgabe an.
18KalenderwocheDamit wird ein Datum als Kalenderwoche im Format KW/YYYY dargestellt.
19Text wird in Großbuchstaben umgewandelt.selbsterklärend
20Datum ohne Zeit bzw. leer, wenn kein gültiges DatumGibt bei einem kombinierten Datums-/Zeit-Feld nur den Datumsanteil aus

Die Darstellungsschlüssel (bis auf 6) sind nicht auf die jeweiligen Befehle festgelegt und können im Editor frei vergeben werden.

Übersetzungen in die Belegsprache

Neben der Möglichkeit, für jede Sprache eine angepasste Druckvariante zu erstellen, kann auch eine Druckvariante an den zu übersetzenden Stellen modifiziert werden:

Zur Unterstützung der Mehrsprachigkeit können im Editor manuell eingegebene Texte über das Wörterbuch in die jeweilige Sprache des Beleges, der gerade gedruckt oder visualisiert wird, übersetzt werden.

Erreicht wird die Übersetzung durch „Einrahmen“ des zu übersetzenden Textes in
$TRA$...Text...$TRE$ .

Damit auch Datacodes übersetzt werden, können diese speziell gekennzeichnet werden. Soll z.B. der Datacode für die Belegart im Belegkopf übersetzt werden, so wird statt „$OrderTypeDesc,0$“ „$OrderTypeDesc,12$“ bzw. „$OrderTypeDesc,13$“ verwendet werden. Der Parameter „12“ gibt an, dass die Übersetzung aus dem Benutzerwörterbuch herangezogen werden soll, der Parameter „13“ ermöglicht eine Übersetzung aus dem globalen Wörterbuch.

Sortierung den Reihenfolge der Belegpositionen

Unabhängig von der Eingabe den Positionen in der Belegerfassung können diese nach einem bestimmten numerischen DataCode neu sortiert werden.
Durch zusätzliches Markieren vor und hinter dem DataCode ($ORDERSTART$ …$ORDEREND$) zeigt der Benutzer an, dass die Positionen im Druck nach diesen DataCode zu sortieren sind.

Es wird genau eine Sortierung pro Positionsbereich unterstützt, werden mehr angegeben, so wird die zuerst decodierte verwendet.
Verwenden Sie $ORDERNUMSTART$ und $ORDERNUMEND$ wenn Sie Zahlenwerte oder Beträge sortieren möchten.


SQL-Feldabfragen mit Bezug auf DateCodes der aktuellen Zeile

Generell besteht die Anforderung, einen Bericht um ein weiteres Feld erweitern zu können, ohne die Datenherkunft anpassen zu müssen.
Dazu besteht die Möglichkeit, ein Feld zu einem bestimmten Wert eines DataCodes unabhängig von der momentanen Datenherkunft abzufragen.
Hierzu können im Editor Abfragen mit Hilfe von DataCodes „zusammengebaut“ werden.

So kann man zu jedem Datensatz "beliebige" Felder aus der Anwendungs-Datenbank anzeigen lassen und es ist auch ein Rechnen mit DataCodes möglich. Falsche Syntax wird ignoriert und steht im Ereignisprotokoll.

Aus Sicherheitsgründen sind nur Abfragen auf die aktuelle Datenbank erlaubt, und der Anwender (Betrachter) des Berichtes mit solch erweiterten Feldern benötigt dazu eine Berechtigung, zu vergeben unter „…Aufgaben/Sonstiges/ SQL-Druckausgabe“, ansonsten werden diese Felder leer dargestellt.
Die Syntax setzt sich wie folgt zusammen: § Felder ; Tabellen ; Bedingung §

Der komplette Befehl muss von §…§ eingeschlossen sein, und Sie können im Feld- und Bedingungsbereich alle anderen in der Datenherkunft existenten DataCodes verwenden.

(Hinweis: Verwenden Sie in der Bedingung bei String-Vergleichen bitte “ =doppeltes Hochkomma)

Beispiele für SQL-Statements


Belegkopf:


Anzeige der Beschreibung der Lieferbedingung:
§DeliveryCondDesc;tdDeliveryConditions;DeliveryCondName="$DeliveryCondition,0$"§

Anzeige Uhrzeit und Datum:
Datum und Uhrzeit des Druckes: §GETDATE();tdSalesorders;OrderID=$OrderID,0$§

Anzeige Kalenderwoche
-- Liefert die Kalenderwoche
§datepart(wk,CONVERT(datetime, $BookingDate$",104));tdSalesOrders;OrderID=$OrderID,0$§


Anzeige der Vertreternummer
§RepresentativeNumber;tdRepresentatives;RepresentativeID="$RepresentativeID,0$"§

Anzeige des Vertreternamen:
§tdAddresses.Name1;tdAddresses,tdRepresentatives,tdSalesOrders;(tdSalesOrders.RepresentativeID=tdRepresentatives.RepresentativeID and tdRepresentatives.AddressID=tdAddresses.AddressID and tdSalesOrders.OrderID=$OrderID,0$)§

Anzeige von User-Informationen aus der wfglobal
§UserEMail;tdSalesOrders,wfGlobal..tsUsers;UserInitials="$UserName,0$" and OrderID=$OrderID,0$§

Anzeige der FaxNr des Kunden
§FaxNr;tdCustomers,tdSalesOrders,tdAddresses;tdCustomers.AddressID=tdAddresses.AddressID And tdSalesOrders.CustomerID=tdCustomers.CustomerID And OrderID=$OrderID,0$§

Anzeige der DUNSNummer (mit bedingtem Sub Select)
Ein Kunde möchte den Wert aus der DUNSNumber auf seinem Beleg angezeigt bekommen. Falls invoiceTo null ist, dann soll die aktuelle DUNSNumber verwendet werden. Das passt soweit auch. Nun soll aber, falls invoiceTo (also abweichende Rechnungsanschrift) ungleich null ist, die DUNSNumber der anderen AddressID (die gleich invoiceTo ist) angezeigt werden.
DUNSNumber bei InvoiceTo:$InvoiceTo,1$:
§CASE WHEN $InvoiceTo,1$=0 THEN tdAddresses.DUNSNumber ELSE (Select DUNSNumber FROM tdAddresses INNER JOIN tdCustomers ON tdAddresses.AddressID=tdCustomers.AddressID WHERE CustomerID=$InvoiceTo,1$) END;tdSalesOrders Join tdAddresses ON tdSalesOrders.AddressID=tdAddresses.AddressID;tdSalesOrders.OrderID=$OrderID,0$§

Lieferbedingung: (dabei muss man die Beschreibung aus ner anderen Tabelle nehmen)
§DeliveryCondDesc;tdSalesOrders,tdDeliveryConditions;tdDeliveryConditions. DeliveryCondName=tdSalesOrders. DeliveryCondition AND OrderID=$OrderID,0$ AND tdSalesOrders. DeliveryCondition ="$DeliveryCondition,0$"§

Anzeige des Lieferdatum eines vorhergehenden Beleges/Lieferscheines
§case when (select tdSalesordertypes.OrderType from tdsalesorders join tdSalesordertypes on tdsalesorders.ReferenceOrderID =tdSalesordertypes.OrderType where orderid=$OrderID,0$) =3 then "Liefertermin:" +(Select convert(nvarchar,DeliveryDate,4) from tdSalesOrders WHERE OrderID=$ReferenceOrderID,0$) ELSE "" END;tdSalesOrders;OrderID=$OrderID,0$§


Positionszeile:


Anzeige des Herstellers
§ManufacturerName;tdManufacturers;ManufacturerID IN(Select ManufacturerID From tdProducts Where ProductID="$ProductID,0$") §

Steuersatz
Steuersatz:§TaxRate;tdSalesOrderPos,tdSalesOrderTaxes;tdSalesOrderPos.OrderID=tdSalesOrderTaxes.OrderID AND tdSalesOrderPos.OrderPosID=$OrderPosID,0$ AND tdSalesOrderPos.TaxKey=tdSalesOrderTaxes.Taxkey§%

Gewichtsberechnung:
Ges.Gewicht der Pos:
§SUM(ProductWeight*Quantity);tdProducts,tdSalesOrderPos;tdProducts.ProductID=tdSalesOrderPos.ProductID AND OrderPosID=$OrderPosID,0$§
Gesamtgew. des Belges:
§SUM(ProductWeight*Quantity);tdProducts,tdSalesOrderPos;tdProducts.ProductID=tdSalesOrderPos.ProductID AND OrderID=$OrderID,0$§

EAN Nummer mit bedingtem Text
§CASE WHEN EANNumber="" THEN "" ELSE "$TRA$EANNummer$TRE$:"+EANNumber END;tdProducts;tdProducts.ProductID=$ProductID,0$§

Preis mit Rabatt
§replace(convert(decimal(8,2),PriceS+DiscountS),".",",");tdSalesOrderPos;OrderPosID=$OrderPosID,0$§

Belegfuß:
Gewichtsberechnung über alle Positionszeilen: (Menge mal Gewicht pro Zeile)
§SUM(ProductWeight*Quantity);tdProducts,tdSalesOrderPos;tdProducts.ProductID=tdSalesOrderPos.ProductID AND OrderID=$OrderID,0$§

Seitenfuß:


Übertrag nicht auf letzter Seite
§CASE WHEN "$OrderPosID,0$"<>"" THEN "$CarrierCompleteFooter,2$" ELSE "" END;tdSalesOrders;OrderID=$OrderID,0$§

Belegnummer und Buchungsdatum
§OrderNumber;tdSalesorders;OrderID=$OrderID,0$§
§BookingDate;tdSalesorders;OrderID=$OrderID,0$§

Verschachtelte Abfragen:
Anzeige der Faxnummer des Ansprechpartners. Ist diese nicht vorhanden, wird die Faxnummer der Adresse abgezeigt
§CASE WHEN tdContacts.FaxNr is NULL THEN tdAddresses.FaxNr WHEN tdContacts.FaxNr is NOT NULL THEN tdContacts.FaxNr END;tdSalesOrders Join tdAddresses ON tdSalesOrders.AddressID=tdAddresses.AddressID Left Join tdContacts ON tdSalesOrders.ContactID=tdContacts.ContactID;tdSalesOrders.OrderID=$OrderID,0$§

Anzeiger der Steuer nur, wenn der Steuerbetrag > 0
Anzeige des Textes
§CASE WHEN convert(money,"$TaxValue$")=0 THEN "" ELSE "$TaxInfoText$ $TaxRate$ % aus $CurrencySign$ $TaxBase$" END;tdSalesOrders;OrderID=$OrderID,0$§

Anzeige des Betrags:
§CASE WHEN convert(money,"$TaxValue$")=0 THEN "" ELSE "$TaxValue$" END;tdSalesOrders;OrderID=$OrderID,0$§

Formatieren einer Zahl:
Soll das Ergebnis einer Berechnung formatiert werden so kann man mit folgendem „Convert“ -Befehl die Stelligkeit der Zahl vorgeben

Beispiel:

mit Komma:
§replace(convert(decimal(8,2),SUM(PriceS)),".",",");tdSalesOrderPos;OrderID=$OrderID,0$ and Taxation="0"§

oder Punkt:
§convert(nvarchar,convert(decimal(8,2),SUM(PriceS)));tdSalesOrderPos;OrderID=$OrderID,0$ and Taxation="0"§

ergibt die 8 Vorkomma- und 2 Nachkommastellen. Beachten Sie hierzu auch die dadurch entstehende Rundung.

Optionale Formatierung von Werten

§CASE WHEN $PosNumber,0$=1 THEN "$PosNumber,0$" ELSE "$PosNumber,0$" END;tdSalesOrders;OrderID=$OrderID,0$§

Rechnen mit Datacodes

Beachten Sie, dass bei Datacodes, mit denen gerechnet wird, der Formatierungstyp 9 zu verwenden ist.

Soll das Ergebnis z.B. fett dargestellt werden, so können sie analog zu dem normalen DataCode Handling den kompletten SQL-Befehl, also z. B. §….§ , formatieren.

Mit dieser Syntax können auch Abfragen über mehrere Tabellen erzeugt werden.

Beispiel:

§SUM(ProductWeight*Quantity);tdProducts,tdSalesOrderPos;tdProducts.ProductID=tdSalesOrderPos.ProductID AND OrderID=$OrderID,0$§

Verwenden Sie bitte keine Formatierung innerhalb solcher Abfragen, z.B. in der Bedingung, da dies Einfluss auf die Syntax haben könnte. Sollte eine Abfrage keinen Wert liefern, so kontrollieren Sie bitte das Ereignisprotokoll des Servers, dort werden fehlerhafte Abfragen angezeigt. Prüfen Sie ob nach der Funktion „Formatierung entfernen“ im Editor die gewünschten Daten erscheinen.

Bedingter Text

Man kann eigene IF Then Else End Abfragen um jeden Datacode, SQL oder einfachen Text konstruieren
.
Dabei kann man im IF auf „=“ , „<“, „>“, oder „<>“ prüfen

Ziel: z.B. abhängig von einem SQL-Wert oder einem anderen DataCode Text oder Daten darzustellen.

Beispiele:

1)DataCode mit festem Wert und „=“ vergleichen
Test Bedingter Text mit "="
ProductNumber=A000002: |IF|$ProductNumber$=A000002|THEN|Artikel2|ELSE|anderer Artikel|END|

2)„>“
Test "Bedingter Text" mit DataCode
ProductID:=$ProductID$
Preis >100 : |IF|$Price$>100|THEN|Preis >100.00|ELSE|Preis kleiner als 100.00|END|

3)SQL und Bedingter Text kombinieren
Test "Bedingter Text" mit SQL:
SQL alleine:§ProductID;tdSalesOrderPos;OrderID=$OrderID,0$ AND OrderPosID=$OrderPosID,0$§
If ProductID=2 then ...: |IF|§ProductID;tdSalesOrderPos;OrderID=$OrderID,0$ AND OrderPosID=$OrderPosID,0$§=2|THEN|ArtikelID=2|ELSE||END|

Zahlen und Datumsformatierungen

Neben der Formatierung von Werten mit SQL (s.O.) können alternativ beliebige DataCodes, bzw. deren Inhalte, entweder als Zahl oder als Datum / Uhrzeit formatiert werden.
Benutzen Sie hierzu folgende Syntax (analog zu „Bedingtem Text“):

|FORMAT,formatstring|$DataCode$|FORMATEND|

Im „formatstring“ können Sie sowohl Anzeige, Stelligkeit, Reihenfolge und Trennzeichen bestimmen.

Bedeutung der Symbole im Formatstring:
0 Fester Platzhalter ##.00 ergibt zwei Nachkommastellen
# Variabler Platzhalter

Format-Beispiele:

1)Decimal |FORMAT,0,###.00|$PriceS,2$|FORMATEND|

2)Decimal |FORMAT,0,###.00|100000|FORMATEND|

3)Time |FORMAT,h:m:s|5.10.05 6:7:12|FORMATEND|

4)Date |FORMAT,dd-mm-yy,hh:mm|5.10.05 6:7:12|FORMATEND|

5)Date |FORMAT,dd.mm.yyyy hh:mm:ss|5.10.05 6:7:12|FORMATEND|