Zum Hauptinhalt springen

UI-Funktionen

Erkunden Sie die Hauptfunktionen der beancount.io-Weboberfläche zum Bearbeiten, Abfragen, Hochladen von Dokumenten und Anpassen Ihres Beancount-Workflows.

Nutzen Sie den Editor, das Transaktionsformular und die Abfrageberichte, um mit Ihrem Ledger zu arbeiten. Die untenstehenden ausführbaren Rezepte zielen auf Standard-Fava 1.30.16 mit Beancount 3.2.3 und beanquery 0.2.0; folgen Sie dem lokal festgelegten Setup.

Beancount.io verwendet ein separates Dashboard. Seine Produktquelle bestätigt Ledger-Routen für Bearbeitung, Abfrage, Dokumente und Einstellungen sowie Konsumenten für mehrere Fava-Anzeigeoptionen. Das bedeutet nicht, dass die Tastaturkürzel, Einfügeregeln, Plugin-Ausführung oder URL-Pfade von Standard-Fava eine gehostete Kompatibilitätszusage darstellen. Das Bild unten zeigt das gehostete Dashboard, nicht die Standard-UI.

beancount.io-Ledger-Dashboard mit einem Nettovermögens-Trenddiagramm, Kontoständen und einer KI-Assistentenleiste

Live-Ledger erkunden →

1. Bearbeitung und Dateneingabe

Der integrierte Editor

Der Editor von Standard-Fava bietet Vervollständigung für Konten, Zahlungsempfänger und Tags. Verwenden Sie default-file, um seine anfängliche Quelldatei auszuwählen. insert-entry positioniert den Cursor außerdem an der letzten Einfügemarkierung in dieser Datei; es ist keine Kernoption von Beancount.

2000-01-01 custom "fava-option" "default-file"
2024-01-01 custom "fava-option" "insert-entry" "^Expenses:Food$"

Dieses Fragment wählt seine enthaltende Datei aus. Neue Einträge nach dem 1. Januar 2024, die Expenses:Food entsprechen, werden vor der Markierung eingefügt, es sei denn, eine spätere zulässige Regel oder ein späteres Posting-Konto hat Vorrang. Siehe das vollständige Beispiel für das Einfügen in mehrere Dateien.

Hinzufügen von Transaktionen

Klicken Sie in Standard-Fava auf + oder drücken Sie n, um das Transaktionsformular zu öffnen. Das Erzählungsfeld akzeptiert durch Leerzeichen getrennte Tags und Links, wie z. B. Lunch #food ^receipt-001. Kontonamen müssen bereits open-Direktiven haben.

Speichern Sie dieses vollständige Ledger als ui-demo.beancount, um die folgenden Berichte auszuprobieren. Die positive Ausgabe ist ein Soll; die negative Bargeldbuchung ist ihr Haben.

option "title" "UI Demo"
option "operating_currency" "USD"
2024-01-01 open Assets:Checking USD
  fava-uptodate-indication: TRUE
2024-01-01 open Income:Salary USD
2024-01-01 open Expenses:Food USD
 
2024-01-02 * "Salary"
  Assets:Checking    3000.00 USD
  Income:Salary     -3000.00 USD
 
2024-01-03 * "Groceries" #food
  Expenses:Food       400.00 USD
  Assets:Checking    -400.00 USD
 
2024-01-04 balance Assets:Checking 2600.00 USD

Führen Sie bea --file ui-demo.beancount check aus, dann fava ui-demo.beancount. Die Prüfung besteht und der Bestand hält 2.600,00 USD. Eine zukünftig datierte Transaktion mit #template ist immer noch eine echte Transaktion: Dieses Tag macht sie nicht zu einer inerten, wiederverwendbaren Formularvorlage. Halten Sie hypothetische Transaktionen in einem separaten Szenario-Ledger.

2. Dokumentenverwaltung

Standard-Fava kann Dokumente hochladen, indem man sie auf Kontonamen oder Journalzeilen zieht. Konfigurieren Sie ein echtes Dokumentverzeichnis und halten Sie seine Kontenhierarchie konsistent mit Ihren offenen Konten.

Dieses optionale Fragment kann zu ui-demo.beancount hinzugefügt werden. Erstellen Sie zunächst ein documents-Verzeichnis neben dem Ledger. Um die Erkennung zu testen, legen Sie eine echte Datei namens 2024-01-03-receipt.pdf in documents/Expenses/Food/ ab.

option "documents" "documents"
plugin "fava.plugins.link_documents"
plugin "fava.plugins.tag_discovered_documents"

Dies sind echte Module, die in Fava 1.30.16 enthalten sind. Beancount erkennt datierte Dateien in Kontoverzeichnissen; tag_discovered_documents fügt #discovered hinzu. link_documents gleicht document-Metadaten mit Dokumenteinträgen ab und verknüpft sie. Es leitet keine Transaktionszuordnung aus dem Inhalt einer Quittung ab. Fügen Sie diese Metadaten direkt unter der vorhandenen Überschrift "Lebensmittel" vor deren Postings hinzu:

  document: "2024-01-03-receipt.pdf"

Diese eingerückte Zeile ist ein Metadatenfragment, kein eigenständiges Ledger. Wenn die Datei vorhanden ist, erhält das Dokument #linked und teilt sich ^dok-2024-01-03 mit der Transaktion. Fehlende übereinstimmende Dokumente erzeugen einen Fehler. Für das genaue Standardverhalten siehe das versionsierte Dokumentverknüpfungs-Plugin.

3. Abfragen und Analysen mit BQL

Die Abfrageseite von Standard-Fava führt die Beancount-Abfragesprache aus. Löschen Sie globale Zeit-/Kontofilter, bevor Sie diese Voll-Ledger-Ergebnisse reproduzieren. Diese UI-Filter können Einträge entfernen, bevor eine Abfrage ausgeführt wird.

Ergebnisse können als CSV heruntergeladen werden. Die Diagrammunterstützung hängt von den Ergebnistypen ab: Die Standardhilfe beschreibt genau zwei Spalten, mit einem Datum oder einer Zeichenfolge, gefolgt von einem Inventar. Ein beliebiges Paar numerischer Spalten garantiert kein Diagramm.

Praktische Abfragebeispiele

Führen Sie diese Abfragen gegen ui-demo.beancount auf der Abfrageseite von Fava aus oder übergeben Sie jede in Anführungszeichen gesetzte Abfrage an bea --file ui-demo.beancount query.

Monatliche Ausgabenübersicht:

SELECT account, SUM(position) AS total
FROM postings
WHERE account ~ '^Expenses:'
  AND date >= 2024-01-01 AND date < 2024-02-01
GROUP BY account
ORDER BY account;

Erwartetes Ergebnis: Expenses:Food, 400,00 USD.

Einnahmen vs. Ausgaben nach Monat:

SELECT YEAR(date) AS year, MONTH(date) AS month,
       ROOT(account, 1) AS category, currency,
       SUM(number) AS signed_total
FROM postings
WHERE account ~ '^(Income|Expenses):'
GROUP BY year, month, category, currency
ORDER BY year, month, category, currency;
JahrMonatKategorieWährungVorzeichenbehaftete Summe
20241AusgabenUSD400,00
20241EinnahmenUSD-3000,00

Die Abfrage behält die Vorzeichen von Beancount bei und gruppiert Einheiten getrennt nach Währung. Einnahmen von 3.000,00 USD abzüglich Ausgaben von 400,00 USD ergeben 2.600,00 USD. Es ist ein Einheitenbericht, kein Umrechnungs- oder Kostenbasisbericht. IIF ist in beanquery 0.2.0 nicht verfügbar, und unäres -position wird nicht unterstützt; das Gruppieren der beiden Kontokategorien vermeidet beide Operationen.

4. Anpassung und Workflow

Anpassen der Ansicht

Fügen Sie diese Fava-Direktiven zum Beispiel-Ledger hinzu, um Konten mit Nullsaldo auszublenden und Anlagezweige zu reduzieren:

2000-01-01 custom "fava-option" "show-closed-accounts" "false"
2000-01-01 custom "fava-option" "show-accounts-with-zero-balance" "false"
2000-01-01 custom "fava-option" "collapse-pattern" "^Assets:Investments"

Sie wirken sich auf die Kontenbäume des Berichts aus. Konten mit einem Saldo ungleich Null bleiben sichtbar. Kernformulare wie option "show-closed-accounts" "false" bestehen die Beancount-Validierung nicht.

Die Metadaten fava-uptodate-indication: TRUE des Beispiels stehen auf einer eigenen eingerückten Zeile unter open. Setzen Sie sie nicht auf die open-Zeile und setzen Sie den booleschen Wert nicht in Anführungszeichen. Eine letzte erfolgreiche Saldenprüfung erzeugt Grün; eine fehlgeschlagene Prüfung erzeugt Rot; eine nachfolgende Transaktion erzeugt Gelb. Der 4. Januar-Bestand ist grün. Ein separater grauer Aktualitätsindikator kann ebenfalls erscheinen, da diese Daten alt sind.

Für das Standardbeispiel mit dem Titel UI Demo führen diese vollständigen Pfade zu seinen Berichten:

2024-01-01 custom "fava-sidebar-link" "January Expenses" "/ui-demo/income_statement/?time=2024-01"
2024-01-01 custom "fava-sidebar-link" "All Documents" "/ui-demo/documents/"

Diese Pfade gehen davon aus, dass Standard-Fava im Host-Stammverzeichnis montiert ist. Ersetzen Sie /ui-demo durch Ihren tatsächlichen Ledger-Slug und fügen Sie ein etwaiges Server-Mount-Präfix hinzu. Siehe benutzerdefinierte Seitenleisten-Links für getestetes /jump-Verhalten und die gehostete Routenbegrenzung.

Allgemeine Konfiguration

Das Starten von Standard-Fava mit mehreren Hauptdateien erstellt separate Ledger in seinem Ledger-Umschalter. Dateien, die über include eingebunden werden, bleiben Teil eines Ledgers und erscheinen als bearbeitbare Quellen; sie sind keine separaten Bücher.

Verwenden Sie Fava-Optionen für language, default-file und use-external-editor. Ein externer Editor benötigt einen beancount://-Handler und Zugriff auf die Quelldateien. Echte Standard-Erweiterungsmodule umfassen auch fava.ext.auto_commit und fava.ext.portfolio_list. Erweiterungen verwenden custom "fava-extension" mit ihren eigenen Voraussetzungen; sie unterscheiden sich von den oben verwendeten plugin-Direktiven. Siehe Favas versionsierte Erweiterungshilfe.

5. Leistung und Fehlerbehebung

Umgang mit großen Dateien

Verwenden Sie Includes, um ein Ledger nach Konto oder Zeitraum zu organisieren. Beancount lädt die enthaltenen Dateien weiterhin, sodass das Aufteilen eines Buches die Eingabe des Berichts nicht selbst reduziert. Begrenzen Sie angezeigte Daten und vereinfachen Sie teure Abfragen, wenn Sie einen kleineren Bericht benötigen.

Häufige Probleme und Lösungen

  • Ledger-Fehler: Führen Sie bea check aus und prüfen Sie den Fehlerbericht von Fava. Eine Seite kann gerendert werden, während der Lader Fehler hat.
  • Unerwartetes Optionsverhalten: Überprüfen Sie die getestete Laufzeit und verwenden Sie datierte benutzerdefinierte Fava-Direktiven. bea check kann eine unbekannte Fava-Option nicht allein erkennen.
  • Unerwartete Abfragesummen: Löschen Sie globale Filter, schließen Sie die Eröffnungshistorie ein und halten Sie Währungen getrennt.
  • Fehlende Dokumente: Überprüfen Sie, ob das Verzeichnis existiert, das Konto offen ist, der Dateiname mit einem gültigen Datum beginnt und die Metadaten der Transaktion mit dem Dokument übereinstimmen.

Zum Vergleich sind dies absichtlich ungültige Beispiele. Sie dürfen nicht in ein funktionierendes Ledger kopiert werden:

option "insert-entry" "Expenses:Food"
custom "fava-sidebar-link" "Label" "/jump?time=month"

Das erste verwendet eine unbekannte Kernoption. Das zweite lässt das erforderliche Datum aus. Die Referenz der Standardfunktionen beschreibt das UI-Verhalten für diese Version.

Quelle: https://beancount.io/de/docs/Tips/ui-features