1.4. Verwendung von Formeln in Produkten
Auf dieser Seite ist erläutert, wie Sie Formeln in Templates verwenden können und was dabei zu beachten ist.
Version: Dieser Artikel ist mindestens gültig ab der Version 5.5.
1. Voraussetzungen
Es wird eine Fabrik mit mindestens einer Produktlinie und einem Produkt im Bereich der Datenerfassung benötigt.
2. Verwendungsanleitung
2.1. Überblick
OCT ermöglicht es, in einer Wertreihe der Datenerfassung mit Formeln zu arbeiten, welche den Excel Formeln sehr ähnlich sind. Diese werden von einer Web-Spreadsheet Komponente bereitgestellt und decken einen Teil des Formelumfangs von Excel ab.
Bitte machen Sie nicht Ihr umfangreiches Excel Formelwissen zur Grundlage des Designs von OCT.
In Excel sind die Formeln der Motor Ihrer Kalkulation. In OCT sind die Formeln die Würze, der Motor ist die Datenbank!
Formeln sind gut geeignet,
… wenn Daten primär manuell erfasst erfasst werden.
… wenn die Formel primär in einer Zeile arbeitet (A = B+C; mathematische Grundoperationen).
… wenn es keine tiefe Schachtelung der Formel gibt (wenn die Formelzeile für Ihre Formel zu kurz ist, ist die Formel wahrscheinlich zu lang).
… wenn Sie den Wert, welchen die Formel berechnet, nur im Produkt brauchen (als optische / anschauliche Würze beim Blick in das Produkt) - aber nicht später per Abfrage auswerten wollen.
Formel sind weniger geeignet,
… wenn die Werte in Produkten (teilweise) importiert werden.
… wenn per Formel ganzen Spalten durchsucht werden.
Formeln sind nie dazu geeignet,
… Werte aus anderen Produkten zu laden.
… die Summe mehrerer Produkte zu zeigen.
Was ist der Grund ?
Der Formelwert wird neu berechnet, sobald man das Produkt betritt. Die Datenbank kann die Formel nicht neu berechnen - daher ist die Formel der Feind der Automatisierung. Falls die Datenbank Werte importiert, welche in eine Formelberechnung eingehen, muss Sie danach erst einen Unterstützungsprozess starten. Dieser startet den OCT Server, welcher unsichtbar jedes Produkt öffnet, neu berechnet und speichert (Powerloading).
Der Motor der Datenbank ist SQL. Formeln können Sie in vielen Fällen durch ein SQL Skript ersetzen. Dieses kann idealerweise …
… die Werte in einem Produkt rechnen / eintragen (wird beim Laden des Produkts ausgeführt).
… die Werte aller Produkte dieses Templates neu berechnen (wird per Pipeline ausgeführt).
2.2. Allgemein
Ausführliche Informationen zum Bearbeiten von Produkten finden Sie hier: https://help.saxess-software.de/oct-handbuch/v511/3-3-5-produkte
Um Formeln in einer Produktdatentabelle zu bearbeiten, sollte das Produkt in den Designmodus geschalten werden. Dieser kann in der Menüleiste der PDT über das Icon
“Designmodus” oder über das Icon
“Wertreihen bearbeiten” aktiviert werden.

Designmodus aktivieren - Menüleiste

Designmodus aktivieren - über Dialog “Wertreihen bearbeiten”
Durch den aktivierten Designmodus …
werden Zeilen und Spaltenköpfe eingeblendet.
wird die Formelleiste dauerhaft sichtbar.
werden die Wertreihen vom Typ “XLS-Strict” bearbeitbar, welche sonst geschützt sind.
Die Formelnamen müssen in Englisch erfasst werden - um Formeln zu übersetzen, kann ein Tool wie dieses verwendet werden: https://de.excel-translator.de/translator/.
Formeln müssen mit einem Gleichheitszeichen “=” beginnen, sie dürfen nicht, wie in Excel auch möglich, mit “+” starten. Formeln, die mit “+” starten können zeitweise funktionieren, werden jedoch vom Powerload ignoriert.
Punkt / Komma als Dezimaltrennzeichen und Komma / Semikolon als Trenner von Formelteilen müssen passend zur eingestellten Sprache verwendet werden.
Das Ziehen von Formelfeldern mit relativer Formelanpassung ist unterstützt.
Das "Durchschießen" von Formeln (per Doppelklick auf untere Ecke) wie in Excel ist leider nicht möglich, es gibt stattdessen die Funktion "Füllen bis zum Ende" oder man kann mit der Tastenkombination STRG+C → SHIFT+STRG+PFEIL UNTEN → STRG+V arbeiten.
Beim Bearbeiten von vorhandenen Formeln sollte man immer erst ganz ans Ende der Formel klicken und dann ENTER drücken - nicht ENTER drücken solange der CURSOR noch mitten in der Formel steht.
Beim Editieren bestehender Formeln sollte man die Strg-Taste beim Anklicken von Zellen gedrückt halten. Dann wird die vorhandene Zellreferenz nicht ersetzt, sondern die neue Zellreferenz davor eingefügt.
Ob eine Zelle leer ist, sollte man mit ISBLANK(A1) prüfen - nicht mit WENN(A1=””;…) (Beispiel siehe weiter unten im Text).
Formeln sollten immer einen Wert passend zum Typ der Wertreihe zurückgeben - in einer numerischen Wertreihe muss also eine Formel immer zu einem numerischen Ergebnis führen. Das heißt,
nicht Fehlerzweige, die zum falschen Typ führen =WENN(A5=1;0,33;”Fehler”) verwenden.
nicht numerische Zeilen auf leeren Text enden lassen =WENN(A=B;1;””).
wenn Formeln den falschen Typ liefern, speichert die Datenbank diesen nicht - somit wird der aus der Datenbank geladene Wert 0 von der Formel mit leer ““ überschrieben - und die Zelle erscheint grün als geändert.
2.3. Zugriff auf IDs und Globalattribute im Template
Wie IDs und Globalattribute per Formel in der Produktdatentabelle referenziert werden können, bedarf komplexes Wissen zum Bearbeiten von Produkten.
Sowohl die StrukturIDs (Factory, Productline, Product) als auch die Globalattribute werden in einen ausgeblendeten Bereich des Produkts geladen und können per Formel referenziert werden. Dieser Bereich ist identisch für die horizontale und vertikale Ausrichtung eines Templates.
Um diesen Bereich sichtbar zu machen, muss der ausgeblendete Bereich (alle Spalten und Zellen) sichtbar gemacht werden. Die Vorgehensweise wird anschließend beschrieben.
Beispiel

1. Ansicht: Standard

2. Ansicht: mit aktivierten Designmodus

3. Ansicht: Zeilen 2 und 25 markieren und mit Rechtsklick auf die Zeilennummer ein Kontextmenü öffnen

4. Ansicht: Alles markierten und mit Rechtsklick auf die erste Spalte ein Kontextmenü öffnen.

5. Ansicht: kompletter vorher ausgeblendeter Bereich ist sichtbar
In der PDT sind die Werte bereits vorausgefüllt, entsprechend dem Produkt, in welchem man sich befindet:
in Zelle B22 steht die Fabrik-ID - im Beispiel Fabrik “Leipzig” mit Fabrik-ID “1”
in Zelle B23 steht die Produktlinien-ID - im Beispiel Produktlinie “Verträge für Räume und Gebäude” mit Produktlinien-ID “1”
in Zelle B24 steht die Produkt-ID - im Beispiel Produkt “Mietvertrag Gebäude Hainstr.9” mit Produkt-ID “1”
in Zelle B25 steht das Globalattribut 1
in Zelle B26 steht das Globalattribut 2
etc.
Um alle Bereiche wieder zu verbergen, kann einfach der Designmodus deaktiviert werden.
Um z.B. ein Globalattribut in einer PDT zu referenzieren, muss dieses zuerst über das Kontextmenü der Produktlinie im Navigationsbaum angelegt werden.

Kontextmenü öffnen

Anlegen von Globalattribut 1
Das angelegte Globalattribut 1 kann nun über “B25” in der PDT referenziert werden.

Das Globalattribut 1 ist nun auch im verborgenen Bereich in der Zelle “B25” der PDT sichtbar.

2.4. Formeln im Zusammenhang mit skalierter Speicherung
Werte werden in OCT immer mit einer festen Nachkommastelle (Maßstab) skaliert gespeichert.
1 = Keine Nachkommastellen
10 = 1 Nachkommastelle
100 = 2 Nachkommastellen
1000 = 3 Nachkommastellen
10000 = 4 Nachkommastellen
Sofern eine Formel mehr Nachkommastellen zur Laufzeit berechnet, erscheint der Wert als gerundet in der Anzeige.
Beispiel: Die Formel =0,5 * 7,01 ergibt mathematisch 3,505 in der Datenbank, wird aber mit Maßstab 100 (zwei Nachkommastellen) mit dem Wert 3,51 gespeichert und angezeigt.
Es kann jedoch trotzdem mit Formelfeldern korrekt weitergearbeitet werden, da diese bei Öffnen des Templates neu berechnet werden.
Multipliziert man das Ergebnis der Formel mit 2, ergibt sich 7,01 und nicht 7,02, wie es bei einer Berechnung mit den gerundeten Werten der Fall gewesen wäre.Vorsichtig muss man jedoch bei der Eingabe in Inputfelder sein. Trägt man in ein solches Feld beispielsweise eine 3,505 ein, wird der Eintrag nur bis zum Speichern als 3,505 behandelt und danach als gerundete 3,51.

2.5. Formeln mit Datumsangaben
Datumsangaben in der Produktdatentabelle
Legen Sie eine Wertreihe mit folgenden Eigenschaften an: numerisch, Maßstab 1, Format “Eingabe Datum”

In der Produktdatentabelle erscheint nach einem Linksklick in eine Zeile ein Kalender-Icon.

Ein Linksklick auf das Icon öffnet dann einen Tageskalender, auf welchem das gewünschte Datum ausgewählt werden kann.

Das Datum wird intern als Zahl gespeichert.
Typische Datumsformeln wie MONTH(..) können auf das Feld angewendet werden.
Diese Datumswerte sind sprachfest und zeigen ein zur Sprache passendes Datumsformat bei Aufruf in verschiedenen Sprachen.
Im SQL kann aus der Datumzahl per folgendem Befehl ein DATE Format erzeugt werden
TRY_CONVERT(DATE,DATEADD(day,(ValueInt)-2,'19000101'))
Datumangaben aus Globalattributen
Expertenwissen (siehe: 1.4. Verwendung von Formeln in Produkten | 2.3.-Zugriff-auf-IDs-und-Globalattribute-im-Template)
Datumsangaben in Globalattributen können über den ausgeblendeten B25-B50 Bereich an die Produktdatentabelle durchgereicht werden und dort in Formeln verarbeitet werden
ACHTUNG: diese Datumsangaben sind immer Strings
Die Erfassung am Globalattribut gewährleistet nicht, das ein gültiger Datumswert erfasst wird.
Der String hat keinerlei Sprachbezug, daher ist für Globalattribute folgende Vorgehensweise zu empfehlen:
Erfassen Sie Datumswerte im ISO Format z.B. 20221004 für den 4. Oktober 2020 - diese lassen sich international gleich auflösen.
Sofern der Tag nicht unbedingt nötig ist, sollten Sie mit Periodenstrings arbeiten (2022-11 etc.), welche als Drop-Down Liste angeboten werden.
2.6. Beispiele für Formeln mit anderer Schreibweise als in Excel
Problematik | Excel Schreibweise | Webclient Alternative | Bemerkungen |
---|---|---|---|
Prüfung auf leere Zelle | =WENN(A1="";1;2) | WENN(ISBLANK(A1);1;2) | |
Datumsdifferenz in Tagen | = DATEDIF(Datum1, Datum2, "d") | =Date(Jahr,Monat,Tag) - Date(Jahr,Monat,Tag) | |
Datum aus der TimeID generieren | =Datum(Jahr,Monat,Tag) | =Date(Jahr,Monat,Tag) | |
Wochentagermittlung | =WOCHENTAG(Datum;2) | =Weekday(Datum;1) | Typ 2 steht für Montag = 1, wird im WebClient nicht verarbeitet, es muss mit Typ 1 (Sonntag = 1) gerechnet werden |
3. Hintergrundinformationen
Die Komponente, welche in OCT eingebettet ist, ist hier beschrieben: https://docs.telerik.com/kendo-ui/controls/data-management/spreadsheet/end-user/user-guide. Es sind jedoch nur zu OCT passende Funktionen aktiviert.
Die verfügbaren Formeln sind hier zu finden: https://docs.telerik.com/kendo-ui/controls/data-management/spreadsheet/end-user/list-of-formulas
ACHTUNG: Nicht alle Formeln werden auch vom Powerloading unterstützt, es funktionieren nur die folgenden Formeln:
sowie die von uns zusätzlich implementierte Funktion: IFERROR
Die unterstützten Tastatur Shortcuts sind hier zu finden: https://docs.telerik.com/kendo-ui/controls/data-management/spreadsheet/end-user/list-of-shortcuts
Es scheint Excel Formeln zu geben, die nicht dokumentiert sind oder per Alias verwendet werden, z.B. Runden() = Round() ist verwendbar, aber nicht dokumentiert.