In diesem Artikel
Das Einfügen von JavaScript-Formeln in der Tabelle Budget von Banana Buchhaltung Plus eröffnet zahlreiche Möglichkeiten.
Die Eingabe von Formeln ist ausschliesslich mit dem Advanced-Plan von Banana Buchhaltung Plus möglich. Entdecken Sie alle Vorteile des Advanced-Plans.
Spalte Formel
Die Spalte Formel ermöglicht die Eingabe von Berechnungsformeln. Damit können die Beträge der Finanzplanung auf Grundlage anderer Werte derselben Planung automatisch berechnet werden (siehe Beispiele für Formeln).
Mit Formeln können Sie beispielsweise:
- den Warenwert als Prozentsatz des Umsatzes berechnen;
- den geplanten Umsatz entsprechend einem prozentualen Wachstum erhöhen;
- am Jahresende die Abschreibungen auf Grundlage des Wertes der getätigten Investitionen berechnen;
- vierteljährlich die Zinsen für das Bankkonto anhand der tatsächlichen Nutzung (Tage/365) berechnen;
- monatlich die Gewinnsteuer auf Grundlage des berechneten Gewinns ermitteln.
Wenn Sie in der Spalte Formel einen Wert eingeben, berechnet das Programm den Wert in der Spalte Betrag automatisch anhand der Formel.
Wie in der Dokumentation zur Tabelle Budget erläutert, können JavaScript-Formeln auch in folgenden Spalten verwendet werden:
- Formelanfang
- Beschreibung, für wiederkehrende Buchungen
Datei mit Beispielen
Weitere Informationen und praktische Beispiele zur Verwendung von Formeln finden Sie auf den folgenden Seiten:
- Vorlage mit Buchungen - Verwendung der Spalten Anzahl und Formel
- Vorlage mit Buchungen - Buchhaltung mit Fremdwährungen und Verwendung der Spalte Formel für die Basiswährung
- Beispiele für die Verwendung von Formeln in der Finanzplanung

Berechnungsformeln in JavaScript
- Die Formel muss in der Programmiersprache JavaScript geschrieben werden (nicht zu verwechseln mit der Sprache Java).
- Wenn eine Formel (oder ein Text) vorhanden ist, wird der Wert in der Spalte Betrag anhand des Ergebnisses der Formel berechnet.
- Sie können alle Funktionen der Programmiersprache JavaScript sowie die Funktionen der API-Schnittstelle von Banana verwenden.
Dezimaltrennzeichen
JavaScript verwendet als Dezimaltrennzeichen ausschliesslich den Punkt ".".
Wenn Sie ein anderes Dezimaltrennzeichen verwenden, z.B. das im lokalen Zahlenformat verwendete Komma, wird die Zahl möglicherweise nicht korrekt interpretiert oder abgeschnitten.
Betrag = Ergebnis der letzten Anweisung
In JavaScript wird der Strichpunkt ";" verwendet, um mehrere Anweisungen voneinander zu trennen.
Enthält die JavaScript-Formel mehrere durch ";" getrennte Anweisungen, entspricht der Wert in der Spalte Betrag dem Ergebnis der zuletzt ausgeführten Anweisung.
- 10*3 //gibt 30 zurück.
- Werden mehrere Ausdrücke nacheinander ausgeführt und durch einen Strichpunkt ";" getrennt, wird das Ergebnis des letzten Ausdrucks verwendet:
10*3;7; /-gibt 7 zurück. - Wird Return verwendet, wird der nach Return angegebene Wert zurückgegeben:
return 10; // gibt 10 zurück.
Variablen
JavaScript-Variablen gehören zu den leistungsfähigsten Elementen der Programmierung, da sie es ermöglichen, Werte unter einem Namen zu speichern und später wieder abzurufen.
Variablen gibt es in Excel-Formeln nicht. Sie sind jedoch mit benannten Zellen vergleichbar, mit dem Unterschied, dass der Name frei vergeben werden kann.

Eine Variable wird mit einem Namen und dem Gleichheitszeichen (=) definiert.
Variablen können direkt in den Zeilen definiert und verwendet werden. Wenn Sie den Variablennamen in einer Formel verwenden, wird der gespeicherte Wert übernommen.
Im folgenden Beispiel wird die Variable Price mit dem Wert 10 definiert.
var price = 10;
oder einfach
price = 10;
Hier erstellen wir die Variable Total mit dem Wert Price multipliziert mit 5.
total = price * 5;
Der Variablen kann ein neuer Wert zugewiesen werden.
price = 20;
Objekte
JavaScript-Objekte ermöglichen es, mehrere Werte in einer Variablen zu speichern. Jeder Wert wird dabei einer Eigenschaft zugeordnet.
Im folgenden Beispiel wird das Objekt Prices mithilfe der geschweiften Klammern {} erstellt. Auf die einzelnen Werte kann über eckige Klammern [] oder über den Namen der Eigenschaft nach dem Objektnamen zugegriffen werden.
prices = {}
prices['car'] = 10;
prices.car = 10;
prices['computer'] = 20;
prices.computer = 20;
Arrays
Arrays in JavaScript ermöglichen es, mehrere Werte in einer Variablen zu speichern und über die Position darauf zuzugreifen.
Arrays werden mit eckigen Klammern [] erstellt. Auf die einzelnen Werte wird über ihren Index zugegriffen. Das erste Element eines Arrays hat den Index 0.
costs = [1,2,3]; costs[0]=3; result = prices['car'] - costs[0];
Wiederholungen und Variablen
Weitere Informationen zur Berechnungsreihenfolge finden Sie unter Planungslogik.
- Alle Zeilen, einschliesslich der durch Wiederholungen erzeugten Zeilen, werden nach Datum sortiert. Haben mehrere Zeilen dasselbe Datum, entspricht ihre Reihenfolge derjenigen in der Tabelle.
- Nach dem Sortieren werden alle Zeilen und Formeln neu berechnet.
- In den Formeln haben Sie daher nur Zugriff auf die Budgetdaten bis zum jeweiligen Datum.
- Eine Variable muss in einer Zeile mit einem Datum definiert werden, das vor dem Datum der Zeile liegt, in der die Variable verwendet wird.
- Wenn ein Budgeteintrag wiederholt wird, wird die Variable bei jeder Wiederholung neu zugewiesen:
sum = 10; - Wenn Sie stattdessen eine fortlaufende Gesamtsumme berechnen möchten:
- Erstellen Sie zunächst in einer vorhergehenden Zeile die Variable mit dem Wert Null:
sum = 0; - Addieren Sie in der wiederholten Zeile den neuen Wert zum bisherigen Wert der Variablen:
sum = sum + 10;
oder verwenden Sie den Operator "+=":
sum += 10
- Erstellen Sie zunächst in einer vorhergehenden Zeile die Variable mit dem Wert Null:
Automatische Variablen
- budgetCurrent
Ein Objekt, das die Tabelle mit den Budgetzeilen nach dem Erzeugen der Wiederholungen enthält.
Es wird verwendet, um zusammen mit JRepeatNumber auf die Werte der einzelnen Wiederholungen zuzugreifen. - DEBUG
Eine Variable, die den Wert "true" (wahr) oder "false" (falsch) haben kann. Hat sie den Wert "true", werden die Ergebnisse aller Formeln in den Meldungen angezeigt. - row
Ein JavaScript-Objekt, das sich auf die aktuelle Zeile bezieht.- Die Zellwerte können mit der Funktion value ("columnNameXml") abgerufen werden.
row.value ("date") gibt das Datum der Buchung zurück. - row.value ("JRepeatNumber") gibt die fortlaufende Nummer der Wiederholung zurück.
Die erste Wiederholung hat den Wert 0.
- Die Zellwerte können mit der Funktion value ("columnNameXml") abgerufen werden.
Budgetfunktionen
Zusätzlich zu den in der API der Klasse Buchhaltung definierten Budget-APIs stehen weitere spezifische Funktionen zur Verfügung.
budgetGetPeriod(tDate, period)
Bei wiederkehrenden Budgeteinträgen empfiehlt es sich, einen Berechnungszeitraum anstelle eines bestimmten Datums zu verwenden.
- Parameter tDate
Das Datum, auf das sich die Berechnung des Zeitraums bezieht. In der Regel handelt es sich um das Datum der Buchung. - Parameter period
Ein Kürzel zur Angabe des gewünschten Zeitraums:- Aktueller Zeitraum:
- "MC" aktueller Monat
- "QC" aktuelles Quartal
- "YC" aktuelles Jahr
- Vorheriger Zeitraum:
- "MP" vorheriger Monat
- "QP" vorheriges Quartal
- "YP" vorheriges Jahr
- Ab Version 9.1 können Sie auch die folgenden Kürzel verwenden:
- "DC" aktueller Tag
- "DP" vorheriger Tag
- "WC" aktuelle Woche
- "WP" vorherige Woche
- "BC" aktueller Zweimonatszeitraum (2 Monate)
- "BP" vorheriger Zweimonatszeitraum
- "SC" aktuelles Halbjahr
- "SP" vorheriges Halbjahr
- Aktueller Zeitraum:
- Rückgabewert
Ein Objekt, das zwei Datumswerte enthält:- startDate (Anfangsdatum des Zeitraums)
- endDate (Enddatum des Zeitraums)
// example
t = BudgetGetPeriod ('2015-01-01', 'MP'); Rückgabewerte
t.startDate // 2014-12-01
t.endDate // 2014-12-31Spezifische Budgetfunktionen
Die folgenden Funktionen entsprechen denjenigen von Banana.document, können jedoch ohne das Präfix Banana.document verwendet werden.
Beachten Sie Folgendes:
- Anstelle des Parameters startDate kann eines der unter budgetGetPeriode erläuterten Periodenkürzel verwendet werden, z.B. "MC" oder "MP".
- Wird anstelle eines Datums ein Periodenkürzel angegeben, dient das Datum der aktuellen Buchungszeile als Bezugsdatum.
- Die Angabe eines Enddatums ist nur sinnvoll, wenn dieses vor dem Datum der aktuellen Zeile liegt. Ist es gleich oder später, hat es keine Wirkung, da die Werte nach der aktuellen Zeile noch nicht verarbeitet wurden und deshalb nicht verfügbar sind.
- Hat die aktuelle Buchungszeile beispielsweise das Datum 15. April:
- budgetBalance("1000","MP") gibt den Saldo des Kontos 1000 am Ende des Monats März zurück.
- budgetBalance("1000","MC") gibt den Saldo des Kontos 1000 bis zur aktuellen Zeile zurück. Das Ergebnis entspricht budgetBalance("1000").
- budgetTotal("1000","QP") gibt die Gesamtsumme der Bewegungen des vorherigen Quartals zurück.
- budgetTotal("1000","QC") gibt die Gesamtsumme der Bewegungen des aktuellen Quartals bis zur aktuellen Zeile zurück.
budgetBalance(account, startDate, endDate, extraParam)
Gibt den Saldo bis zur aktuellen Zeile zurück.
budgetBalance('1000', 'MP'); //Gibt den Saldo des Kontos 1000 am Ende des Vormonats zurück.- Wenn budgetBalance einen negativen Betrag zurückgibt, erzeugt das Programm eine Fehlermeldung, da in der Spalte Betrag der Budgettabelle keine negativen Werte eingegeben werden können.
- Ist der Saldo des Kontos im Voraus nicht bekannt, kann es hilfreich sein, zwei Buchungen mit den Funktionen debit() und credit() zu erfassen.
- Abhängig davon, ob ein Soll- oder Habensaldo vorliegt, weist nur eine der beiden Buchungen den korrekten Betrag auf, während die andere den Betrag 0 enthält.
- In den beiden Buchungen müssen die Soll- und Habenkonten vertauscht werden. Beispiel: In der ersten Buchung wird 2210 im Soll und 1000 im Haben erfasst; in der zweiten Buchung 1000 im Soll und 2210 im Haben.
debit(budgetBalance('1000')); //Gibt den Saldo des Kontos 1000 am Buchungstag zurück; bei einem negativen Saldo 0.
credit(budgetBalance('1000')); //Gibt den Saldo des Kontos 1000 am Buchungstag zurück; bei einem positiven Saldo 0.budgetOpening(account, startDate, endDate, extraParam)
Gibt den Saldo zu Beginn des Zeitraums zurück.
budgetTotal(account, startDate, endDate, extraParam)
Gibt die Differenz zwischen den Soll- und Habenbewegungen des Zeitraums zurück.
budgetTotal('1000', 'MC'); //Gibt die Summe der Bewegungen des Kontos 1000 für den aktuellen Monat zurück.budgetInterest(account, interest, startDate, endDate, extraParam)
Berechnet die Zinsen für ein Konto im angegebenen Zeitraum, höchstens jedoch bis zum Datum der aktuellen Buchungszeile.
Werden die Zinsen am Ende einer Periode berechnet, muss die Zeile mit der Formel die letzte Buchungszeile dieses Datums sein.
- Parameter account:
Die Nummer des Kontos, für dessen Bewegungen die Zinsen berechnet werden. - Parameter interest:
Der Zinssatz in Prozent:- Ein positiver Wert (z.B. 2.5, 4 oder 10) berechnet die Zinsen auf den Sollbewegungen des Kontos.
- Ein negativer Wert (z.B. -2.5, -4 oder -10) berechnet die Zinsen auf den Habenbewegungen des Kontos.
credit(amount)
- Ist der Parameter amount (Betrag) negativ, gibt die Funktion den Betrag als positiven Wert zurück:
credit(-100) // Gibt 100 zurück. - Ist der Parameter amount (Betrag) positiv, gibt die Funktion 0 (Null) zurück:
credit(100) // Gibt 0 zurück.
Diese Funktion ist in Verbindung mit anderen Budgetfunktionen wie budgetBalance nützlich, wenn nur Habensalden berücksichtigt werden sollen.
Auch bei der Berechnung eines Prozentsatzes des Umsatzes (Verkaufserlöse) vereinfacht diese Funktion die Formel.
credit(budgetTotal('1000')); //Gibt den Wert nur zurück, wenn er negativ ist.debit(amount)
- Ist der Parameter amount (Betrag) positiv, gibt die Funktion den Betrag zurück:
debit(100) // Gibt 100 zurück. - Ist der Parameter amount (Betrag) negativ, gibt die Funktion 0 (Null) zurück:
debit(-100) //Gibt 0 zurück.
Diese Funktion ist nützlich, wenn bei Berechnungen nur Sollbeträge und keine Habenbeträge berücksichtigt werden sollen.
Include (einbinden)
- include "file:test.js"
Führt den Inhalt der angegebenen Datei aus. Der Dateiname bezieht sich auf eine Datei, die sich im selben Verzeichnis wie die aktuell verwendete Datei befindet. - include "documents:test.js"
Führt den Inhalt des Textdokuments aus, das sich in der Tabelle Documents (Dokumente) befindet.
Das Dokument muss vom Dateityp "text/javascript sein.
Funktionen für Buchhaltungen mit Fremdwährungen
Diese Funktionen können auch für Buchhaltungen ohne Fremdwährungen verwendet werden. In diesem Fall wird das Konto immer in der Basiswährung geführt.
budgetBalanceCurrency(account, startDate, endDate, extraParam)
Gibt den Saldo in der Kontowährung bis zur aktuellen Zeile zurück.
budgetExchangeDifference(account, [date, exchangeRate])
Diese Formel ruft die Funktion Banana.document.budgetExchangeDifference auf.
budgetOpeningCurrency(account, startDate, endDate, extraParam)
Gibt den Saldo in der Kontowährung zu Beginn der Periode zurück.
budgetTotalCurrency(account, startDate, endDate, extraParam)
Ab Version 9.0.1 sind auch die Funktionen budgetCreditCurrency und budgetDebitCurrency verfügbar.
Benutzerdefinierte Funktionen
Benutzer können mithilfe der JavaScript-Sprache eigene Funktionen definieren und in den Formeln aufrufen.
Funktionen können an folgenden Stellen definiert werden:
- direkt in der Formel;
- in einem Anhang des Codetyps JavaScript, der in einem Dokument mit der Zeilen-ID "_budget.js" enthalten ist;
- in einem Textdokument in der Tabelle Documents (Dokumente), das mit dem Befehl "include" eingebunden wird.
Wichtig: In benutzerdefinierten Funktionen können derzeit keine Funktionen verwendet werden, die auf die aktuellen Buchhaltungsdaten zugreifen (z.B. "currentBalance", ...).
function Steuerberechnen(Gewinn)
{
var Steuersatz = 10;
if (Gewinn > 50000)
Steuersatz = 10;
else if (Gewinn > 100000)
Steuersatz =20;
zurückgeben Gewinn * Steuersatz / 100;
}