Используйте редактор, форму транзакций и отчеты запросов для работы с вашей бухгалтерской книгой. Приведенные ниже исполняемые рецепты предназначены для стандартной Fava 1.30.16 с Beancount 3.2.3 и beanquery 0.2.0; следуйте фиксированной локальной настройке.
Beancount.io использует отдельную панель управления. Ее исходный код подтверждает маршруты книги для редактирования, запросов, документов и настроек, а также подписчиков для нескольких параметров отображения Fava. Это не делает сочетания клавиш, правила вставки, выполнение плагинов или пути URL стандартной Fava гарантией совместимости хостинга. Изображение ниже показывает размещенную панель управления, а не стандартный интерфейс.

1. Редактирование и ввод данных
Встроенный редактор
Редактор стандартной Fava предлагает автодополнение для счетов, плательщиков и тегов. Используйте default-file, чтобы выбрать его начальный исходный файл. insert-entry также позиционирует курсор на последнем маркере вставки в этом файле; это не основная опция Beancount.
2000-01-01 custom "fava-option" "default-file"
2024-01-01 custom "fava-option" "insert-entry" "^Expenses:Food$"Этот фрагмент выбирает содержащий его файл. Новые записи после 1 января 2024 года, соответствующие Expenses:Food, вставляются перед маркером, если только более позднее подходящее правило или счет более поздней проводки не имеет приоритета. См. полный пример вставки в несколько файлов.
Добавление транзакций
В стандартной Fava нажмите + или клавишу n, чтобы открыть форму транзакции. Поле описания принимает теги и ссылки, разделенные пробелами, например Lunch #food ^receipt-001. Имена счетов должны уже иметь директивы open.
Сохраните эту полную книгу как ui-demo.beancount, чтобы опробовать приведенные ниже отчеты. Положительный расход — это дебет; отрицательная проводка по наличным — его кредит.
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Запустите bea --file ui-demo.beancount check, затем fava ui-demo.beancount. Проверка проходит, и на балансе 2 600,00 USD. Транзакция с будущей датой и тегом #template по-прежнему является реальной транзакцией: этот тег не делает ее инертной формой многоразового шаблона. Держите гипотетические транзакции в отдельной книге сценария.
2. Управление документами
Стандартная Fava может загружать документы, перетаскивая их на имена счетов или строки журнала. Настройте реальный корень документов и поддерживайте иерархию его счетов согласованной с вашими открытыми счетами.
Этот необязательный фрагмент можно добавить в ui-demo.beancount. Сначала создайте каталог documents рядом с книгой. Чтобы попробовать обнаружение, поместите реальный файл с именем 2024-01-03-receipt.pdf внутри documents/Expenses/Food/.
option "documents" "documents"
plugin "fava.plugins.link_documents"
plugin "fava.plugins.tag_discovered_documents"Это реальные модули, поставляемые в Fava 1.30.16. Beancount обнаруживает файлы с датами в каталогах счетов; tag_discovered_documents добавляет #discovered. link_documents сопоставляет метаданные document с записями документов и связывает их. Он не выводит ассоциацию транзакций из содержимого чека. Добавьте эти метаданные непосредственно под существующим заголовком Groceries, перед его проводками:
document: "2024-01-03-receipt.pdf"Эта строка с отступом — фрагмент метаданных, а не отдельная книга. При наличии файла документ получает #linked и разделяет ^dok-2024-01-03 с транзакцией. Отсутствие соответствующих документов вызывает ошибку. Точное поведение стандартной версии см. в плагине связывания документов.
3. Запросы и анализ с помощью BQL
Страница запросов стандартной Fava выполняет Язык запросов Beancount. Очистите глобальные фильтры времени/счетов перед воспроизведением этих результатов по всей книге. Эти фильтры интерфейса могут удалять записи до выполнения запроса.
Результаты можно загрузить в формате CSV. Поддержка диаграмм зависит от типов результатов: стандартная справка описывает ровно два столбца, с датой или строкой, за которыми следует инвентаризация. Произвольная пара числовых столбцов не гарантирует диаграмму.
Практические примеры запросов
Выполните эти запросы к ui-demo.beancount на странице запросов Fava или передайте каждый запрос в кавычках в bea --file ui-demo.beancount query.
Ежемесячная сводка расходов:
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;Ожидаемый результат: Expenses:Food, 400,00 USD.
Доходы и расходы по месяцам:
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;| Год | Месяц | Категория | Валюта | Итоговая сумма |
|---|---|---|---|---|
| 2024 | 1 | Расходы | USD | 400.00 |
| 2024 | 1 | Доходы | USD | -3000.00 |
Запрос сохраняет знаки Beancount и группирует единицы отдельно по валютам. Доход 3 000,00 USD за вычетом расходов 400,00 USD оставляет 2 600,00 USD. Это отчет по единицам, а не отчет по конвертации или себестоимости. IIF недоступен в beanquery 0.2.0, а унарный -position не поддерживается; группировка двух категорий счетов позволяет избежать обеих операций.
4. Настройка и рабочий процесс
Настройка представления
Добавьте эти директивы Fava в пример книги, чтобы скрыть счета с нулевым балансом и свернуть инвестиционные ветки:
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"Они влияют на деревья счетов в отчетах. Счета с ненулевым балансом остаются видимыми. Базовые формы, такие как option "show-closed-accounts" "false", не проходят проверку Beancount.
Метаданные образца fava-uptodate-indication: TRUE находятся на отдельной строке с отступом под open. Не помещайте их в строку open и не заключайте логическое значение в кавычки. Последняя прошедшая проверка баланса дает зеленый цвет; неудачная проверка — красный; последующая транзакция — желтый. Проверка от 4 января — зеленая. Отдельный серый индикатор свежести также может появиться, потому что эти даты старые.
Ссылки на боковой панели
Для стандартного примера под названием UI Demo эти полные пути ведут к его отчетам:
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/"Эти пути предполагают, что стандартная Fava установлена в корне хоста. Замените /ui-demo на фактический слаг вашей книги и включите любой префикс серверного пути. См. custom sidebar links для протестированного поведения /jump и границы маршрутизации хостинга.
Общая конфигурация
Запуск стандартной Fava с несколькими основными файлами создает отдельные книги в ее переключателе книг. Файлы, подключаемые через include, остаются частью одной книги и появляются как редактируемые источники; они не являются отдельными книгами.
Используйте опции Fava для language, default-file и use-external-editor. Внешнему редактору требуется обработчик beancount:// и доступ к исходным файлам. Реальные стандартные модули расширений также включают fava.ext.auto_commit и fava.ext.portfolio_list. Расширения используют custom "fava-extension" со своими собственными предварительными условиями; они отличаются от директив plugin, используемых выше. См. справку по расширениям Fava.
5. Производительность и устранение неполадок
Работа с большими файлами
Используйте include, чтобы организовать книгу по счетам или периодам. Beancount по-прежнему загружает включенные файлы, поэтому разделение одной книги само по себе не уменьшает входные данные отчета. Ограничьте отображаемые даты и упростите дорогостоящие запросы, когда вам нужен меньший отчет.
Частые проблемы и их решения
- Ошибки книги: Запустите
bea checkи проверьте отчет об ошибках Fava. Страница может отображаться, даже если загрузчик имеет ошибки. - Неожиданное поведение опций: Проверьте протестированную среду выполнения и используйте датированные пользовательские директивы Fava.
bea checkсам по себе не может обнаружить неизвестную опцию Fava. - Неожиданные итоги запросов: Очистите глобальные фильтры, включите историю открытий и держите валюты раздельно.
- Отсутствующие документы: Проверьте, что каталог существует, счет открыт, имя файла начинается с допустимой даты и метаданные транзакции соответствуют документу.
Для контраста, ниже приведены преднамеренно неверные примеры. Их нельзя копировать в рабочую книгу:
option "insert-entry" "Expenses:Food"
custom "fava-sidebar-link" "Label" "/jump?time=month"Первый использует неизвестную основную опцию. Во втором отсутствует обязательная дата. Справочник стандартных функций описывает поведение интерфейса для этого выпуска.