Im TecArt CRM 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.
Administrator |
Auf welche Module sind die Rechenoperationen anwendbar? #
Die Rechenoperationen können in allen Modulen angewendet werden, welche Sie über die Felderverwaltung bearbeiten können. 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.
Berechnete Felder und Grundeinstellungen #
Grundeinstellungen für ein Formelfeld #
Erstellen Sie ein neues Feld oder nutzen Sie ggf. ein bestehendes Systemfeld und setzen Sie dieses im Feld Schreibgeschützt auf Ja. Die Formeln werden in das Feld Standardwert eingetragen. Die Berechnung funktioniert nur mit einer sauberen Administration.
Formel in den Objekten berechnen #
Sobald Formeln in einem Modul vorhanden sind, wird in den Objekten ein weiterer Button angezeigt. Sofern ein Benutzer darüber hinaus auch das Recht besitzt Formeln in Übersichten zu berechnen, wird auch in der Listenansicht Ihres Moduls ein weiterer Button zur Berechnung der Formeln eingeblendet. Formeln werden also erst mal nicht grundlegend berechnet, sondern man muss die Berechnung anstoßen.
Variante 1: Über diesen Button werden alle Formeln im ausgewählten Datensatz neu berechnet. Der Button wird nur angezeigt, sofern es hinterlegte Formeln gibt.
Variante 2: Nutzen Sie den Button in der Übersicht, um die Berechnung für alle markierten oder gefilterten Objekte auszuführen. Der Button wird nur angezeigt, sofern es hinterlegte Formeln gibt.
Variante 3: Über Ihre persönlichen Einstellungen können Sie die Formelberechnung aktivieren, sobald Sie ein Objekt öffnen. Dabei werden sofort die enthaltenen Formeln erneut berechnet.
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#>)
Verwenden Sie eine Variable derselben Ebene, als Beispiel innerhalb eines Kontaktes, 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 Formel dann <#todo.1332.stop#>.
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 = Istgleich. Dabei gibt es folgende grundlegende Rechenoperationen. Numerische Rechenoperationen können auch mit Strings vermischt werden.
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 Objekt verknüpft sind. |
COUNT() | Zählen – Liefert die Anzahl aller Elemente eines Objekttyps, welche mit dem aktuellen Objekt verknüpft sind. |
MIN() | Minimum – Ermittelt den niedrigsten Wert aller Modulelemente, die mit dem aktuellem Objekt verknüpft sind. |
MAX() | Maximum – Ermittelt den maximalen Wert aller Modulelemente, die mit dem aktuellem Objekt 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 #
Um die nachfolgende Berechnung durchführen zu können, müssten Sie die folgende Teilschritte einleiten:
Sie möchten die Summe und ein Produkt miteinander dividieren.
Variante 1 mit Teilschritten
- Standardwert für Ihr Feld (z.B. user40) =<#user30#>+<#user31#>
- Standardwert für Ihr Feld (z.B. user41) =<#user32#>*<#user33#>
- Standardwert für Ihr Feld (z.B. user45) =<#user40#>/<#user41#>
In der Variante 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
- Standardwert für Ihr Feld (z.B. user40) =<#user30#>+<#user31#>
- Standardwert für Ihr Feld (z.B. user41) =<#user32#>*<#user33#>
- Standardwert für Ihr Feld (z.B. user45) =<#user30#>+<#user31#>/<#user32#>*<#user33#>
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.
Beispiele für einfache Formeln #
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. |
Datum | =MAX(<#todo.start#>.'<#>'.<#note.date#>.'<#>'.<#call.time#>.'<#>'.<#appointment.start#>) |
Liefert gleichzeitig den jeweils höchsten Wert der enthaltenen Aktivitäten des aktuellen Objektes und gibt den insgesamt höchst ermittelten Wert aus. |
Datum | =<#createtime#>+10*86400 =<#createtime#>+(10*24*60*60) |
Rechnet auf das Erstellungsdatum 10 Tage hinzu. Die 86400 Sekunden entsprechen dabei einem Tag von 60 Sekunden * 60 Minuten * 24 Stunden Auch diese Formel rechnet 10 Tage hinzu und zeigt die Detailberechnung in der Klammer |
Datum | =<#start#>+(<#maturity#>*24*60*60*30.42) |
Diese Formel kann man für die Berechnung eines Datums, z.B. einer Wiedervorlage, nutzen. Start ist dabei das Beginn-Datum eines Vertrages. Auf dieses Datum wird nun anhand des Indexes der Fälligkeit (maturity) eine Anzahl von Sekunden drauf gerechnet. Steht maturity also für 12 Monate. werden diese Sekunden berechnet und auf das Beginn-Datum aufaddiert. 30.42 gibt die durchschnittliche Anzahl der Tage eines Monats wieder. Dabei ist klar, dass es entsprechende Rundungsdifferenzen der Tage geben kann, gerade, wenn Laufzeiten Schaltjahre überschreiten oder mit weniger als 12 Monaten gerechnet wird. |
Datum oder Text | =date('U') =date('d.m.Y', date('U')); |
date('U') liefert grundlegend den aktuellen Unit-Timestamp zurück. In Verbindung mit dem Feldtyp Datum wird dabei das aktuelle Datum in der für den Benutzer eingestellten Darstellung ausgegeben. Wird hingegen ein Textfeld verwendet, würde ohne die Formatierung nur eine fortlaufende Zahl ausgegeben werden. Mit der Formatierung in unserem Beispiel dann das richtige Datum.
z.B. 2025-04-04 |
Text | =<#todo.done#>.' %' |
Liefert alle Erledigungsstatus 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 oder Nummer | =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 oder Nummer | =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.09.2025, 16:42:19 des letzten Anrufes aus. |
Text | =substr('<#bank_account_iban#>', 2) =substr('<#bank_account_iban#>', 0, 11) =(substr('<#bank_account_iban#>', 0, 11)).'XXX' |
Diese Formel kürzt Texte von links bzw. von rechts. Die erste Zahl gibt die Stelle nach der begonnen werden soll und die zweite Stelle, wie viele Zeichen dargestellt werden sollen. Wird die zweite Zahl weggelassen, werden alle Zeichen nach der angegebenen Stelle ausgegeben. Verwenden kann man dies z.B. bei einer IBAN zur Ermittlung der Bankleitzahl und Kontonummer oder zum Anonymisieren.
Die IBAN lautet z.B. DE123987654321 dabei sind die Ergebnisse: |
Text | =round((date('U')-<#createtime#>)/3600/24,0) =round((date('U')-<#createtime#>)/86400,1) =round((date('U')-<#createtime#>)/86400,-2) |
Berechnet das Alter eines Objektes seit dessen Erstellung. U in der Klammer von date steht dabei für Sekunden seit der Unix-Epoche (1. Januar 1970 00:00:00 GMT). Abgezogen wird das Erstellungsdatum durch die Anzahl der Sekunden. Die Zahl nach dem Komma gibt die Genauigkeit für die Rundung an. 0 steht dabei für 0-Nachkommastellen, 1 für eine Nachkommastelle und -2 z.B. für das Abrunden auf Hunderter.
Ausgehend von einem Datum 01.01.2025 12:00 und einem aktuellen Datum 01.01.2026 11:00 würden sich folgende Beispiele Ergeben. |
Besondere Lösungen mit Hilfe von Formeln #
Bezeichnung | Beschreibung | Daten und Formel |
---|---|---|
Berechnung des Alters oder eines anderen Ereignisses | Um das Alter oder ein anderes Ereignis auf Basis eines Feldes, wie Geburtstag (birthday) oder einem Userfeld bei Personen zu berechnen, ist ein weiteres Feld erforderlich. Ausgangsgrundlage hierbei ist immer ein Datumsfeld, auf welches Bezug genommen werden muss. In dieser Variante der Berechnung kommt es aufgrund von Rundungsdifferenzen zu Rundungsfehlern. Hintergrund ist die Einbeziehung des Schaltjahres. Dabei wird nicht mit 365 und 366 Tagen sondern gleichbleibend mit 365,25 Tagen gerechnet. |
|
Berechnung der Anzahl der Tage oder eines anderen Ereignisses anhand eines beliebigen Datums auf Basis des Datums | Um die Anzahl der Tage bis zum Eintreten eines Ereignisses auf Basis eines Feldes, wie Geburtstag (birthday) oder einem Userfeld bei Personen zu berechnen, ist ein weiteres Feld erforderlich. Ausgangsgrundlage hierbei ist immer ein Datumsfeld, auf welches Bezug genommen werden muss. Das kleine z gibt dabei die Anzahl der Tage des aktuellen Jahres dieses Datums wieder. Möglich wären auch dm oder md. m steht für den Monat 01 bis 12 und d für den Tag 01 bis 31. |
|