Перейти к основному содержимому

Возможности интерфейса

Изучите основные возможности веб-интерфейса beancount.io для редактирования, запросов, загрузки документов и настройки вашего рабочего процесса Beancount.

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

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

Панель управления книгой beancount.io, показывающая график изменения чистой стоимости, балансы счетов и панель ИИ-ассистента

Изучите живую книгу →

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;
ГодМесяцКатегорияВалютаИтоговая сумма
20241РасходыUSD400.00
20241Доходы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"

Первый использует неизвестную основную опцию. Во втором отсутствует обязательная дата. Справочник стандартных функций описывает поведение интерфейса для этого выпуска.

Источник: https://beancount.io/ru/docs/Tips/ui-features