Fügen Sie datierte Seitenleisten-Link-Anweisungen zum Standard-Fava hinzu und speichern Sie dann eine Abfrage, die negative Endsalden findet, nachdem alle Buchungen summiert wurden. Die Beispiele wurden mit Beancount 3.2.3, beanquery 0.2.0 und Fava 1.30.16 ausgeführt. Verwenden Sie das festgelegte lokale Setup.
Diese URLs zielen auf einen lokalen Standard-Fava-Server. Das gehostete Dashboard von Beancount.io hat andere Berichtspfade und wird unten separat behandelt.
Warum Fava anpassen?
Seitenleisten-Verknüpfungen bewahren eine nützliche gefilterte Ansicht. Eine gespeicherte Abfrage kann dann eine spezifische Buchhaltungsfrage beantworten, ohne wiederholt BQL einzugeben.
Probleme, die dadurch gelöst werden:
- Wiederholtes Auswählen des aktuellen oder vorherigen Monats.
- Erneutes Öffnen eines gespeicherten Berichts.
- Unterscheidung eines Abflusses von einem Konto, das tatsächlich unter null endet.
✨ Benutzerdefinierte Seitenleisten-Links
Fügen Sie diese Anweisungen zum vollständigen sidebar-demo.beancount-Hauptbuch im nächsten Abschnitt hinzu. Starten Sie es mit fava sidebar-demo.beancount und öffnen Sie dessen Journal-Bericht, bevor Sie auf eine Verknüpfung klicken.
2021-01-01 custom "fava-sidebar-link" "Current Month" "/jump?time=month"
2021-01-01 custom "fava-sidebar-link" "Last Month" "/jump?time=month-1"
2021-01-01 custom "fava-sidebar-link" "Clear All" "/jump?account=&time=&filter="Was sie tun:
/jump kehrt zur Seite im Referer-Header des Browsers zurück und ersetzt die bereitgestellten Abfrageparameter. Es öffnet nicht immer den Journal-Bericht. Auf der Bilanz bleibt es auf der Bilanz. Dieses Verhalten wird vom Standard-Fava-Umleitungs-Handler implementiert.
- Aktueller Monat: Setzt
time=monthauf dem aktuellen Bericht. - Letzter Monat: Setzt
time=month-1auf dem aktuellen Bericht. - Alles löschen: Entfernt
account,timeundfilter. Andere Parameter wie Konvertierung und Intervall bleiben erhalten.
Die 2021-Fixture wird keine Transaktionen im heutigen Monat haben; verwenden Sie Alles löschen, bevor Sie deren Abfrageergebnisse reproduzieren. Eine /jump-URL erfordert einen Referrer. Für ein direkt geöffnetes Lesezeichen kopieren Sie stattdessen eine vollständige funktionierende Berichts-URL.
Am Host-Root wurde /jump?time=month von /sidebar-demo/journal/?time=2021&account=Assets getestet: Es gab HTTP 302 zum selben Journal mit account=Assets&time=month zurück. Der Zielbericht gab 200 zurück.
Wenn ein Administrator die gesamte Fava-Anwendung unter /books bereitstellt, muss jede root-relative Verknüpfung dieses Präfix enthalten. Dies ist eine alternative Konfiguration, keine weitere Anweisung, die neben „Aktueller Monat" hinzugefügt wird:
2021-01-01 custom "fava-sidebar-link" "Current Month" "/books/jump?time=month"Ein lokaler WSGI-Mount-Test bestätigte, dass /books/jump zurück zu /books/sidebar-demo/journal/ mit dem neuen Filter umleitet. Ein einfaches /jump liegt außerhalb dieses Mounts und gab 404 zurück. Favas benutzerdefinierte Links bewahren die bereitgestellte URL; ein führendes / bedeutet den Host-Root, nicht den Hauptbuch-Root.
Gehosteter Umfang, geprüft am 2026-09-07: Die Beancount.io-Dashboard-Quelle verwendet Pfade wie /ledger/OWNER/LEDGER/income-statement und /ledger/OWNER/LEDGER/query. Seine Seitenleiste erstellt ihr eigenes Berichtsmenü. Die untersuchte Quelle hat keine /jump-Route oder einen fava-sidebar-link-Konsumenten. Dieses Standard-Rezept ist daher für dieses Dashboard nicht etabliert. Öffnen Sie auf dem gehosteten Produkt den gewünschten Bericht und setzen Sie ein Lesezeichen auf dessen funktionierende Adresse. Der Quell-Schnappschuss beweist nicht, welche Revision eine Live-Bereitstellung ausführt.
🔍 Benutzerdefinierte SQL-Abfragen
Speichern Sie diese vollständige Fixture als sidebar-demo.beancount. Sie enthält absichtlich sowohl positive als auch negative Buchungen auf jedem Vermögenskonto:
option "title" "Sidebar Demo"
option "operating_currency" "USD"
2021-01-01 open Assets:BCM:Positive USD
2021-01-01 open Assets:BCM:Negative USD
2021-01-01 open Equity:Opening-Balances USD
2021-12-01 * "Opening balances"
Assets:BCM:Positive 100.00 USD
Assets:BCM:Negative 20.00 USD
Equity:Opening-Balances -120.00 USD
2021-12-10 * "Outflows"
Assets:BCM:Positive -30.00 USD
Assets:BCM:Negative -50.00 USD
Equity:Opening-Balances 80.00 USD
2022-01-05 * "Refund"
Assets:BCM:Negative 10.00 USD
Equity:Opening-Balances -10.00 USD
2022-01-09 balance Assets:BCM:Positive 70.00 USD
2022-01-09 balance Assets:BCM:Negative -20.00 USDbea --file sidebar-demo.beancount check besteht. Zu Beginn des 9. Januar hält Positive 100 - 30 = 70 USD; Negative hält 20 - 50 + 10 = -20 USD.
Führen Sie diese Abfrage auf der Abfrageseite des Standard-Fava mit gelöschten globalen Filtern aus:
SELECT account, currency, SUM(number) AS ending_balance
FROM postings
WHERE account ~ ':BCM:'
AND date < 2022-01-09
GROUP BY account, currency
HAVING SUM(number) < 0
ORDER BY account, currency;| Konto | Währung | Endsaldo |
|---|---|---|
| Assets:BCM:Negative | USD | -20.00 |
Aufschlüsselung:
WHERE wählt die zu aggregierenden Buchungen aus. Es gibt keine untere Datumsgrenze: Ein Endsaldo benötigt die gesamte frühere Historie, einschließlich der Eröffnungssalden vom 1. Dezember. Die exklusive Obergrenze schließt den 8. Januar ein und schließt Transaktionen vom 9. Januar aus.
GROUP BY account, currency hält verschiedene Währungen getrennt. HAVING SUM(number) < 0 filtert nach dem Summieren der positiven und negativen Mengen jeder Gruppe. Dies ist ein Endmengensaldo pro Währung, nicht der in eine Währung umgerechnete Marktwert. Es meldet jedes genaue Konto, nicht zusammengefasste übergeordnete Konten.
Zum Vergleich beantwortet diese ausführbare Abfrage eine andere Frage: Wie viel wurde während des Überprüfungszeitraums negativ gebucht?
SELECT account, currency, SUM(number) AS negative_postings
FROM postings
WHERE account ~ ':BCM:'
AND number < 0
AND date >= 2021-12-09 AND date < 2022-01-09
GROUP BY account, currency
ORDER BY account, currency;| Konto | Währung | Negative Buchungen |
|---|---|---|
| Assets:BCM:Negative | USD | -50.00 |
| Assets:BCM:Positive | USD | -30.00 |
Die zweite Abfrage lässt die Rückerstattung und Eröffnungssalden aus. Ihre Zeile -30.00 USD bedeutet nicht, dass Positive überzogen ist. Das Hinzufügen einer unteren Datumsgrenze zur ersten Abfrage würde stattdessen die Nettoveränderung während eines Zeitraums erzeugen, nicht einen Endsaldo. Siehe die BQL-Referenz für weitere Abfragesyntax.
Anwendungsfälle:
- Überprüfen Sie Vermögenskonten auf unerwartete negative Mengen.
- Überprüfen Sie negative Buchungen separat, wenn Sie Abflüsse oder Stornierungen untersuchen.
- Gleichen Sie den gemeldeten Saldo mit der Eröffnungshistorie und nachfolgenden Aktivitäten ab, bevor Sie ihn als Anomalie behandeln. Ein negativer Verbindlichkeiten- oder Ertragssaldo kann normal sein.
🛠 Profi-Tipp: Kombinieren Sie Links + Abfragen
Fava unterstützt Links zu Abfragen. Fügen Sie diese gespeicherte Abfrage und Verknüpfung zu sidebar-demo.beancount hinzu:
2021-01-01 query "negative-balances" "SELECT account, currency, SUM(number) AS ending_balance FROM postings WHERE account ~ ':BCM:' AND date < 2022-01-09 GROUP BY account, currency HAVING SUM(number) < 0 ORDER BY account, currency"
2021-01-01 custom "fava-sidebar-link" "Negative Balances" "/sidebar-demo/query/?query_string=.run+%22negative-balances%22"Die Abfrageanweisung erscheint auch in Favas Seitenleiste für gespeicherte Abfragen, vorbehaltlich sidebar-show-queries (Standard 5). Die explizite Verknüpfung zielt auf den sidebar-demo-Slug der Fixture und führt die benannte Abfrage aus. Die Standard-Abfrageseite liest query_string aus der URL; ihre Abfrage-API gab im lokalen Test dieselbe einzelne -20.00 USD-Zeile zurück. Siehe die versionierte Abfragekomponente.
Verwenden Sie den tatsächlichen Slug Ihres Hauptbuchs in einem anderen Buch. Unter dem /books-Mount wird die Verknüpfung zu /books/sidebar-demo/query/?query_string=.run+%22negative-balances%22. Halten Sie globale Filter für einen Endsaldo über die gesamte Historie gelöscht; ein Datumsfilter kann die Eröffnungshistorie entfernen, bevor die gespeicherte Abfrage ausgeführt wird.
Abschließende Gedanken
Verwenden Sie die Monatsverknüpfungen zur Navigation durch Berichte und die gespeicherte Abfrage, um einen reproduzierbaren Endsaldo zu überprüfen. Wenn Sie Ihr Budget überprüfen, unterscheiden Sie Abflüsse, Periodenbewegungen und Schlusssalden, bevor Sie eine negative Zahl interpretieren. Für zusätzliche Berichte siehe Favas Erweiterungsdokumentation und den UI-Leitfaden.