Utilisez l'éditeur, le formulaire de transaction et les rapports de requête pour travailler avec votre journal. Les recettes exécutables ci-dessous ciblent Fava 1.30.16 standard avec Beancount 3.2.3 et beanquery 0.2.0 ; suivez la configuration locale épinglée.
Beancount.io utilise un tableau de bord séparé. Sa source de produit confirme des routes de journal pour l'édition, les requêtes, les documents et les paramètres, ainsi que des consommateurs pour plusieurs options d'affichage de Fava. Cela ne fait pas des raccourcis clavier, des règles d'insertion, de l'exécution de plugins ou des chemins d'URL de Fava standard une promesse de compatibilité hébergée. L'image ci-dessous montre le tableau de bord hébergé, pas l'interface standard.

Explorer le journal en direct →
1. Édition et saisie de données
L'éditeur intégré
L'éditeur de Fava standard propose la complétion pour les comptes, les bénéficiaires et les tags. Utilisez default-file pour choisir son fichier source initial. insert-entry positionne également le curseur au dernier marqueur d'insertion de ce fichier ; ce n'est pas une option de base de Beancount.
2000-01-01 custom "fava-option" "default-file"
2024-01-01 custom "fava-option" "insert-entry" "^Expenses:Food$"Ce fragment sélectionne le fichier qui le contient. Les nouvelles entrées après le 1er janvier 2024 qui correspondent à Expenses:Food sont insérées avant le marqueur, sauf si une règle éligible ultérieure ou le compte d'une écriture postérieure a la priorité. Voir l'exemple complet d'insertion multi-fichiers.
Ajout de transactions
Dans Fava standard, cliquez sur + ou appuyez sur n pour ouvrir le formulaire de transaction. Le champ de narration accepte les tags et liens séparés par des espaces, comme Lunch #food ^receipt-001. Les noms de comptes doivent déjà avoir des directives open.
Enregistrez ce journal complet sous ui-demo.beancount pour essayer les rapports ci-dessous. La dépense positive est un débit ; l'écriture de caisse négative en est le crédit.
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 USDExécutez bea --file ui-demo.beancount check, puis fava ui-demo.beancount. La vérification passe et le contrôle contient 2 600,00 USD. Une transaction datée dans le futur avec #template reste une transaction réelle : ce tag ne la transforme pas en modèle de formulaire réutilisable inerte. Gardez les transactions hypothétiques dans un journal de scénario séparé.
2. Gestion des documents
Fava standard peut télécharger des documents en les déposant sur les noms de comptes ou les lignes de journal. Configurez une racine de documents réelle et gardez sa hiérarchie de comptes cohérente avec vos comptes ouverts.
Ce fragment facultatif peut être ajouté à ui-demo.beancount. Créez d'abord un répertoire documents à côté du journal. Pour tester la découverte, placez un fichier réel nommé 2024-01-03-receipt.pdf dans documents/Expenses/Food/.
option "documents" "documents"
plugin "fava.plugins.link_documents"
plugin "fava.plugins.tag_discovered_documents"Ce sont des modules réels fournis dans Fava 1.30.16. Beancount découvre les fichiers datés dans les répertoires de comptes ; tag_discovered_documents ajoute #discovered. link_documents fait correspondre les métadonnées document aux entrées de document et les lie. Il ne déduit pas une association de transaction à partir du contenu d'un reçu. Ajoutez ces métadonnées directement sous l'en-tête Groceries existant, avant ses écritures :
document: "2024-01-03-receipt.pdf"Cette ligne en retrait est un fragment de métadonnées, pas un journal autonome. Avec le fichier présent, le document reçoit #linked et partage ^dok-2024-01-03 avec la transaction. Les documents correspondants manquants produisent une erreur. Pour le comportement exact de la version standard, voir le plugin de liaison de documents versionné.
3. Requêtes et analyse avec BQL
La page Requête de Fava standard exécute le langage de requête Beancount. Effacez les filtres globaux de temps/compte avant de reproduire ces résultats à l'échelle du journal. Ces filtres d'interface peuvent supprimer des entrées avant l'exécution d'une requête.
Les résultats peuvent être téléchargés en CSV. La prise en charge des graphiques dépend des types de résultats : l'aide standard décrit exactement deux colonnes, avec une date ou une chaîne suivie d'un inventaire. Une paire arbitraire de colonnes numériques ne garantit pas un graphique.
Exemples pratiques de requêtes
Exécutez ces requêtes contre ui-demo.beancount dans la page Requête de Fava ou passez chaque requête entre guillemets à bea --file ui-demo.beancount query.
Résumé mensuel des dépenses :
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;Résultat attendu : Expenses:Food, 400,00 USD.
Revenus et dépenses par mois :
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;| Année | Mois | Catégorie | Devise | Total signé |
|---|---|---|---|---|
| 2024 | 1 | Expenses | USD | 400.00 |
| 2024 | 1 | Income | USD | -3000.00 |
La requête préserve les signes de Beancount et groupe les unités séparément par devise. Revenus de 3 000,00 USD moins dépenses de 400,00 USD laissent 2 600,00 USD. Il s'agit d'un rapport d'unités, pas d'un rapport de conversion ou de coût de base. IIF est indisponible sur beanquery 0.2.0 et le -position unaire n'est pas pris en charge ; regrouper les deux catégories de comptes évite les deux opérations.
4. Personnalisation et flux de travail
Personnalisation de l'affichage
Ajoutez ces directives Fava au journal d'exemple pour masquer les comptes à solde nul et replier les branches d'investissement :
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"Elles affectent les arbres de comptes des rapports. Les comptes avec des soldes non nuls restent visibles. Les formes de base comme option "show-closed-accounts" "false" échouent à la validation Beancount.
Les métadonnées fava-uptodate-indication: TRUE de l'échantillon se trouvent sur sa propre ligne en retrait sous open. Ne les placez pas sur la ligne open et ne mettez pas le booléen entre guillemets. Une dernière vérification de solde réussie produit du vert ; une vérification échouée produit du rouge ; une transaction ultérieure produit du jaune. L'assertion du 4 janvier est verte. Un indicateur de fraîcheur gris séparé peut également apparaître car ces dates sont anciennes.
Liens de la barre latérale
Pour l'exemple standard intitulé UI Demo, ces chemins complets mènent à ses rapports :
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/"Ces chemins supposent que Fava standard est monté à la racine de l'hôte. Remplacez /ui-demo par votre slug de journal réel et incluez tout préfixe de montage serveur. Voir liens personnalisés de la barre latérale pour le comportement /jump testé et la frontière de routage hébergée.
Configuration générale
Démarrer Fava standard avec plusieurs fichiers principaux crée des journaux séparés dans son sélecteur de journaux. Les fichiers inclus via include restent partie d'un seul journal et apparaissent comme sources modifiables ; ils ne constituent pas des livres séparés.
Utilisez les options Fava pour language, default-file et use-external-editor. Un éditeur externe nécessite un gestionnaire beancount:// et l'accès aux fichiers sources. Les modules d'extension standard réels incluent également fava.ext.auto_commit et fava.ext.portfolio_list. Les extensions utilisent custom "fava-extension" avec leurs propres prérequis ; elles sont distinctes des directives plugin utilisées ci-dessus. Voir l'aide d'extension versionnée de Fava.
5. Performances et dépannage
Gestion des fichiers volumineux
Utilisez les inclusions pour organiser un journal par compte ou période. Beancount charge toujours les fichiers inclus, donc diviser un livre ne réduit pas en soi l'entrée du rapport. Limitez les dates affichées et simplifiez les requêtes coûteuses lorsque vous avez besoin d'un rapport plus petit.
Problèmes courants et solutions
- Erreurs de journal : Exécutez
bea checket inspectez le rapport Erreurs de Fava. Une page peut s'afficher alors que le chargeur a des erreurs. - Comportement d'option inattendu : Vérifiez l'environnement d'exécution testé et utilisez des directives Fava personnalisées datées.
bea checkne peut pas détecter une option Fava inconnue à lui seul. - Totaux de requête inattendus : Effacez les filtres globaux, incluez l'historique d'ouverture et gardez les devises séparées.
- Documents manquants : Vérifiez que le répertoire existe, que le compte est ouvert, que le nom de fichier commence par une date valide et que les métadonnées de la transaction correspondent au document.
Pour contraste, voici des exemples invalides intentionnels. Ils ne doivent pas être copiés dans un journal fonctionnel :
option "insert-entry" "Expenses:Food"
custom "fava-sidebar-link" "Label" "/jump?time=month"Le premier utilise une option de base inconnue. Le second omet la date requise. La référence des fonctionnalités standard décrit le comportement de l'interface pour cette version.