Formeln in Feldern – TecArt Handbuch

Formeln in Feldern

Aus TecArt Handbuch

Wechseln zu: Navigation, Suche

Im TecArt-System können Sie einfache Berechnungen über Angaben in den Feldern durchführen. Diese können Sie z.B. nutzen, um importierte Umsätze aus verschiedenen Jahren zusammen zurechnen oder auch die letzten Aktivitäten eines Kontaktes zu ermitteln und auszuwerten.

Die nachfolgende Beschreibung ermöglicht es Ihnen Formeln in die Felder einzufügen.

Auf welche Module sind die Rechenoperationen anwendbar?

Die Rechenoperationen können in den Modulen Kontakte, Projekte, Verträge, Angebote und Tickets angewendet werden. Zusätzlich haben Sie die Möglichkeit verschiedene Aktivitäten in die Berechnung einfließen zu lassen. Dabei können die Feldtypen verwendet werden, welche klare Ergebnisse wiedergeben können. Berechnen Sie aus zwei Währungsfeldern die Gesamtsumme in einem Feldtyp Währung oder lassen Sie sich aus zwei Textfeldern einen neuen Text erzeugen. Sie könnten auch mit einem Datumsfeld und einer Währung rechnen, jedoch ist das Ergebnis fraglich.


Achtung! Rechenoperationen benötigen viel Rechenkapazität. Vor allem, wenn Sie berechnete Felder in Listenansichten der Module anzeigen lassen und eine Neuberechnung über alle verwendeten Formeln anstoßen.


Berechnete Felder und Grundeinstellungen

Erstellen Sie ein neues benutzerdefiniertes Feld und setzen Sie dieses bei Schreibgeschützt auf Ja. Die Formeln werden in das Standardwert-Feld eingetragen. Sollten Sie den Schreibschutz vergessen, wird die Formel durch den errechneten Wert überschrieben und dauerhaft als solcher in der Datenbank gespeichert. Die Berechnung funktioniert nur mit einer sauberen Administration.


Achtung! Formeln können nur innerhalb eines Modul mit den verknüpften Elementen des jeweiligen Objektes eingesetzt werden. Sie können also die Summe aller Verträge für diesen Kontakt berechnen oder den letzten Anruf ermitteln. Modulübergreifende Berechnungen und Formeln in der Form: Zeige mir im Vertrag die Postleitzahl des verknüpften Kontaktes, gehen hingegen nicht.


Aufbau einer Variable

Alle Variablen für die Formeln beginnen immer mit <# und enden mit #>. Dabei ist auf eine durchgehende Schreibweise der gesamten Variable zu achten. (Beispiel: <#postcode#>) Die Variablen müssen eindeutig zuzuordnen sein und den Anforderungen des oberen Punktes genügen.

Verwenden Sie eine Variable der selben Ebene, als Beispiel einen Kontakt, so verwenden Sie die Variable nur mit den klassischen Feldbezeichnungen, wie z.B. <#postcode#>. Wollen Sie Felder der verknüpften Aktivitäten verwenden, müssen Sie der Variable das gewünschte Modul mitgeben. <#todo.stop#> bezieht sich damit nicht mehr auf den Kontakt, in dem Sie die Formel eintragen, sondern auf das Stoppdatum der mit dem Kontakt verknüpften Aufgaben. Möchten Sie einen Wert eines ganz bestimmten Objektes für die Berechnung heranziehen, können Sie auch noch die ID des Objektes mitführen. So ergibt sich in einer Formal dann <#todo.1332.stop#>.


Achtung! Wie bereits erwähnt, ist es nicht möglich sich über mehrere Felder zu einem anderen Feld zu hangeln, nach dem Muster einer Formel in Verträgen: Hole im Feld <#cid#> den Kontakt, gehe in diesen und nimm dort das Feld <#postcode#> und gib dieses im Vertrag aus.


Für Ihre Formeln benötigen Sie die Feldbezeichnungen Ihrer Felder. Diese finden Sie in der Felderverwaltung jeweils als Feldname bei der Bearbeitung jedes Feldes. Darüber hinaus für die verknüpften Objekte von übergeordneten Objekten die Angaben zu den Modulen.

  • Kontakte = contact
  • Projekte = project
  • Verträge = contract
  • Angebote = offer
  • Anrufe = call
  • Termine = appointment
  • Aufgaben = todo

Aufbau von Formeln und Rechenoptionen

Eine Formel beginnt immer mit einem = <math>=</math>. Dabei gibt es folgende grundlegende Rechenoperationen. Numerischen Rechenoperationen können auch mit Strings vermischt werden.

SUM(): COUNT(): MIN(): MAX():
Zeichen Funktion
+ Addition
- Subtraktion
* Multiplikation
/ Division
. Punkt für die Bildung von Strings die Verbindung von Texten
' Einfachen Anführungszeichen für feste Textbestandteile in einer Formel
( Klammer auf
) Klammer zu
SUM() Summe Summiert die Werte aller Modulelemente, die mit dem aktuellen Modul verknüpft sind.
COUNT() Zählen Liefert die Anzahl aller Elemente eines Objekts.
MIN() Minimum Emittelt den niedrigsten Wert aller Modulelemente, die mit dem aktuellem Modul verknüpft sind.
MAX() Maximum Ermittelt den maximalen Wert aller Modulelemente, die mit dem aktuellem Modul verknüpft sind.
round( ,2) Runden Rundet das Ergebnis innerhalb des Klammerausdrucks auf 2 Stellen nach dem Komma. Dabei wird entsprechend der mathematischen Regeln auf- bzw. abgerundet.
floor() Abrunden Mit floor() wird diejenige ganze Zahl ausgegeben, welche kleiner oder gleich der vorgegebenen Zahl ist. Es wird ausschließlich abgerundet, auch wenn die Nachkommastelle größer als 5 ist.

Beispiele für Formeln und deren Ergebnisse

Hinweis! Eine Berechnung durch Formeln von mehreren bereits berechneten Feldern ist nur eingeschränkt möglich, da Sie den Formeln die Reihenfolge, in denen sie berechnet werden sollen, nicht mitgeben können. Wenn Sie sowohl die Einzelergebnisse als auch ein Gesamtergebnis berechnen möchten, müssen Sie für das Gesamtergebnis eine Gesamtformel aus den einzelnen Formeln bilden. Andernfalls müssen Sie die Berechnung so oft anstoßen, wie Sie Formelfelder untereinander verknüpft haben.


Um die nachfolgende Berechnung durchführen zu können, müssten Sie die folgende Teilschritte einleiten:

<#user45#>=(<#user30#>+<#user31#>)/(<#user30#>*<#user31#>)
Variante 1 mit Teilschritten
<#user40#>=<#user30#>+<#user31#>
<#user41#>=<#user30#>*<#user31#>
<#user45#>=<#user40#>/<#user41#>

In der Variant 1 werden die einzelnen Teilschritte berechnet und die Ausgabe erfolgt durch die Berechnung der einzelnen Teilschritte. Diese Variante wird nacheinander berechnet und benötigt bis zu zwei Aktualisierungen. Erste Berechnung User40 und User41, da diese eigenständige Ergebnisse für sich sind. Zweite Berechnung User45, da erst die Ergebnisse von User40 und User41 vorliegen müssen.

Variante 2 mit direkter Berechnung
<#user40#>=<#user30#>+<#user31#>
<#user41#>=<#user30#>*<#user31#>
<#user45#>=(<#user30#>+<#user31#>)/(<#user30#>*<#user31#>)

In der Variante 2 wird jede Formel für sich betrachtet und kann mit einer Aktualisierung berechnet werden, da keine der Formeln auf ein bereits berechnetes Feld zurückgreift.

Feldtyp Formel Beschreibung
Datum =MAX(<#appointment.stop#>) Liefert das Datum des Termins mit der größten Fälligkeit im aktuell geöffneten Objekt.
Datum =MAX(<#todo.stop#>) Liefert das höchste Fälligkeitsdatum einer Aufgabe im aktuell geöffneten Objekt.
Datum =MAX(<#call.time#>) Liefert das letzte Anrufdatum im aktuell geöffneten Objekt.
Text =<#todo.done#>.' %' Liefert alle Erledigungsstati aller mit dem aktuellen Modul verknüpften Aufgaben in Prozent.
Text oder Nummer =SUM(<#todo.achieved#>) Liefert die Summe der geleisteten Stunden aller mit dem Modul verknüpften Aufgaben
Text oder Nummer =COUNT(<#appointment#>) Zählt die Anzahl der mit dem Objekt verknüpften Termine
Text oder Nummer =COUNT(<#appointment#>)+COUNT(<#call#>) Zählt die Anzahl der mit dem Objekt verknüpften Anrufe und Termine und addiert diese zu einer Gesamtzahl dieser beiden Aktivitäten
Text oder Nummer =MIN(<#todo.done#>) Liefert den prozentualen Wert der Aufgabe, welche am wenigsten fortgeschritten ist
Text oder Nummer =MAX(<#todo.done#>) Liefert den prozentualen Wert der Aufgabe, welche am meisten fortgeschritten ist
Nummer oder Währung =<#user21#>+<#user22#> Diese Formel addiert zwei nummerische Felder miteinander und liefert eine Summe.
Text =<#user21#>.' '.<#user22#> Diese Formel verknüpft das Textfeld User21 mit einem Leerzeichen und einem weiteren Textfeld User22
Nummer oder Währung =(<#user21#>+<#user22#>)*<#user23#> Berechnet wird zuerst die Summe in den Klammern, welche dann mit dem Feld "User23" multipliziert wird.
Text oder Nummer oder Währung =(<#user23#>*<#user24#>/100+<#user23#>)/<#user25#> Berechnet die Summe aus einem Anfangswert User23 mit einem prozentualen Aufschlag User24 und gibt diese als Quotient wieder, weil diese durch User25 dividiert wurde.
Text =floor((date('U')-(<#user29#>))/86400/365.25) Diese Formel berechnet das Alter einer Person aufgrund eines eingetragenen Datums im Feld User29. Der Wert wird als ganze Zahl ausgegeben. date('U') liefert dabei das aktuelle Datum inkl. Uhrzeit. Datumsfelder liegen als Timestamp in Sekunden seit dem 1.1.1970 vor. Demzufolge muss das Zwischenergebnis durch die Anzahl der Sekunden und durch Jahre (365.25) inkl. Schaltjahr gerechnet werden.
Text =round((date('U')-(<#user29#>))/86400/365.25,2) Diese Formel berechnet das Alter einer Person aufgrund eines eingetragenen Datums im Feld User29. Der Wert wird als gerundete Zahl mit 2 Nachkommastellen ausgegeben.
Nummer oder Währung =(<#user21#>+<#user22#>)*<#user23#> Berechnet wird zuerst die Summe in den Klammern, welche dann mit dem Feld User23 multipliziert wird.
Text oder Nummer =SUM(<#todo.achieved#>) Diese Formel liefert die Summe der geleisteten Stunden aller mit dem Modul verknüpften Aufgaben.
Text =date('d.m.Y, G:i:s', MAX(<#call.time#>)) Diese Formel gibt Datum und Uhrzeit im angegeben Format 14.02.2012, 16:42:19 des letzten Anrufes aus.


Tipp! Mehr Möglichkeiten der Formatierung finden Sie hier: http://phpforum.de/php/php-handbuch/static/function.date.html.