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

Настройки Beancount, плагины и рабочие процессы сообщества

Ознакомьтесь с реальными настройками учёта Beancount от сообщества: плагины, рабочие процессы Fava, проекты на GitHub и специализированные книги.

Реальные конфигурации Beancount

Введение

Beancount — это универсальная система бухгалтерского учета в виде обычного текста, и её пользователи адаптировали её под широкий круг реальных потребностей. В этой витрине сообщества мы представляем анонимизированные примеры того, как разные люди структурируют и используют свои бухгалтерские рабочие процессы в Beancount — от фрилансеров и владельцев малого бизнеса до энтузиастов личных финансов. Эти примеры демонстрируют творческие практики, такие как пометка транзакций метаданными, автоматизация обновлений журнала с помощью пользовательских скриптов, работа с несколькими валютами, бюджетирование и прогнозирование, а также расширение Beancount с помощью плагинов или интеграций (например, веб-интерфейс Fava).

For living overviews of the same tooling cluster, see Beancount v3: What's New?, Essential Beancount Native Plugins You Should Know, The Beancount Ecosystem, and Beancount's Technical Edge. Цель — вдохновить и проинформировать бухгалтеров, разработчиков и финансово подкованных пользователей о том, что возможно с гибкой системой Beancount.

Отчет о прибылях и убытках публичного журнала Apple в Beancount на beancount.io с графиком чистой прибыли и разбивкой доходов и расходов

Пример интерфейса: Многие пользователи Beancount полагаются на Fava — веб-панель с открытым исходным кодом — или на хостинговый аналог на beancount.io для визуализации своих финансов. Эти инструменты превращают журнал Beancount в интерактивные отчеты и диаграммы. Например, этот вид Отчета о прибылях и убытках разбивает доходы и расходы по категориям с течением времени, давая быстрый обзор того, откуда поступают и куда уходят деньги. Пользователи могут фильтровать этот вид по времени, счету или тегам, чтобы углубиться в конкретные проекты или периоды. Такие визуализации помогают сделать данные в виде обычного текста более доступными, позволяя пользователям с первого взгляда замечать тенденции и аномалии.

Каждая конфигурация Beancount уникальна, но общие темы все же проявляются. Ниже мы рассмотрим три сценария — фрилансер, владелец малого бизнеса и продвинутый пользователь личных финансов — чтобы увидеть, как они организуют свои счета и используют возможности Beancount. Все личные данные были удалены или обобщены, с акцентом только на техники и конфигурации.

Фрилансер: отслеживание проектов по тегам и управление счетами-фактурами

Наш первый пример — фрилансер-консультант, который использует Beancount как основу для финансов своего бизнеса. Журнал этого фрилансера организован для отслеживания доходов и расходов по каждому проекту и для управления счетами-фактурами для нескольких клиентов. Они создали выделенные счета для дебиторской задолженности (A/R) в разделе Активы для каждого клиента, что помогает разделить, кто кому должен. Когда они завершают проект и выставляют счет клиенту, они записывают транзакцию, дебетуя счет A/R клиента и кредитуя счет доходов. Например, новый счет-фактура может быть записан так:

2025-08-01 * "Project X Completed" ^INV-0001
    Assets:AccountsReceivable:ClientA   5,000 USD
    Income:Consulting                   -5,000 USD

Здесь обозначение ^INV-0001 — это ссылка (встроенная функция метаданных Beancount), используемая для привязки этой транзакции к номеру счета-фактуры. Когда клиент оплачивает часть или весь счет, транзакция платежа включает ту же ссылку ^INV-0001, которая связывает две записи вместе. Такая связь упрощает распределение платежей по конкретным счетам-фактурам и позволяет видеть непогашенные остатки. Как пояснил один из участников сообщества, вы можете использовать такие теги или ссылки, чтобы отмечать частичные платежи — например, платеж в размере 20 долларов против счета в 30 долларов — как в записи счета-фактуры, так и в записи платежа. Запросив журнал по этой ссылке на счет, фрилансер может мгновенно увидеть, какая часть счета оплачена и что еще остается открытым.

В дополнение к ссылкам фрилансер активно использует теги для категоризации. Теги в Beancount — это метки с префиксом #, которые можно использовать для последующей фильтрации транзакций. Этот пользователь помечает каждый расход, который можно выставить клиенту, кодом проекта, например #ProjectX, а возмещаемые расходы — тегом #Reimbursable. Например, если они покупают авиабилеты для клиентского проекта, запись о расходе может включать #ProjectX #Reimbursable. Эта практика позволяет создавать отчеты по проекту или клиенту, фильтруя по тегам. После завершения проекта фрилансер может выполнить запрос, чтобы перечислить все возмещаемые расходы #Reimbursable по этому проекту и убедиться, что они выставили клиенту счет за каждый из них. Один пользователь Beancount отметил, что пометка командировочных расходов помогла выявить те, которые не были возмещены — в идеале расходы на рабочую поездку должны сходиться к нулю, когда все возмещения от клиента получены. Это подчеркивает, как тегирование в сочетании с возможностями запросов Beancount обеспечивает дополнительный уровень контроля для фрилансеров, управляющих выставляемыми расходами.

Для управления статусом непогашенных платежей наш фрилансер использует специальное соглашение для незакрытой дебиторской задолженности. Они применяют тег #UNRESOLVED к любой транзакции счета-фактуры, которая еще не полностью оплачена. Beancount (и Fava) не принуждает к использованию этого тега, но это устоявшийся в сообществе паттерн для пометки транзакций, ожидающих урегулирования. Например, пока клиент A не оплатит полные 5000 долларов, вышеуказанная транзакция счета-фактуры будет включать #UNRESOLVED. Фильтруя по этому тегу, фрилансер может в любой момент получить список всех открытых счетов-фактур. Как только платеж получен и применен (соответствующая транзакция A/R введена), они удаляют или игнорируют тег #UNRESOLVED, и счет дебиторской задолженности для этого клиента сходится к нулю. Такая система гарантирует, что ни один счет не «выпадет из виду». По сути, это отчет о старении, сделанный в виде обычного текста — если A/R остается ненулевым и помечен как нерешенный, это требует внимания.

Поскольку фрилансеры часто имеют дело с несколькими способами оплаты, а иногда и с несколькими валютами, конфигурация Beancount легко это поддерживает. В нашем примере консультант может выставлять счета одним клиентам в долларах США, а другим — в евро. Обработка нескольких валют в Beancount проста: любой счет может содержать несколько товаров (валюты рассматриваются как товары). Фрилансер может либо вести отдельные субсчета для каждой валюты (например, Assets:AccountsReceivable:ClientA:EUR против ...:USD), либо просто записывать транзакции в соответствующей валюте на один и тот же счет. Beancount будет автоматически отслеживать остатки по каждой валюте. Один пользователь подчеркнул, как замечательно, что «Beancount может отслеживать количества в любой валюте, будь то доллары США или тикер акций», все в одном журнале. Наш фрилансер пользуется этим, записывая обменные курсы с помощью директив price всякий раз, когда им нужно конвертировать валюты для отчетности. Они могут сформировать отчет о доходах, конвертированный в их домашнюю валюту, после ввода периодических обменных курсов или рыночных цен.

Наконец, этот фрилансер интегрирует свой журнал Beancount с практическими инструментами для оптимизации рабочего процесса. Например, они прикрепляют PDF-копии каждого счета-фактуры к журналу с помощью метаданных документов. Типичная запись оплаты счета-фактуры может выглядеть так:

2025-08-30 * "ClientA" "Payment for INV-0001" ^INV-0001
    Assets:Bank:Checking       5,000 USD
    Assets:AccountsReceivable:ClientA  -5,000 USD
    document: "Invoices/ClientA/INV-0001.pdf"

Директива document в Beancount или метаданные позволяют связать файлы с записями, и Fava покажет гиперссылку для этих вложений. Это означает, что фрилансер (или его бухгалтер) может щелкнуть прямо из отчета журнала, чтобы просмотреть исходный PDF-файл счета-фактуры, что обеспечивает легкий доступ к резервной документации. Фрилансер также использует отчеты Fava для мониторинга своего бизнеса: фильтруя Отчет о прибылях и убытках или Баланс по клиенту, они могут видеть прибыльность по каждому клиенту и проверять, что все проекты оплачены. В итоге система Beancount этого фрилансера демонстрирует активное использование тегов и ссылок для управления проектным учетом. Она превращает текстовый журнал в надежный инструмент бухгалтерского учета для фрилансера с четкой видимостью расходов по проектам, доходов в нескольких валютах и статусов счетов-фактур.

Ключевые практики в конфигурации фрилансера: Использование тегов для группировки транзакций по проекту или назначению, связывание счетов-фактур и платежей уникальными идентификаторами, пометка непогашенной дебиторской задолженности тегом #UNRESOLVED, прикрепление документов счетов к записям журнала для справки и использование поддержки нескольких валют в Beancount для выставления счетов международным клиентам без хлопот. Все это достигается с помощью записей в виде обычного текста и нескольких вспомогательных инструментов, демонстрируя мощь метаданных в Beancount.

Малый бизнес: автоматизация и учет в нескольких валютах

Далее мы рассмотрим владельца малого бизнеса — в частности, основателя стартапа — который внедрил Beancount для ведения бухгалтерских книг компании. У малого бизнеса схожие потребности с фрилансерами (счета-фактуры, расходы, несколько валют), но часто в большем масштабе и с большим акцентом на автоматизацию, последовательность и совместную работу. В этом случае основатель был технически подкован и создал высокоавтоматизированный рабочий процесс Beancount, чтобы минимизировать ручной учет. После оценки традиционного бухгалтерского программного обеспечения, такого как QuickBooks, они выбрали подход Beancount с обычным текстом, чтобы сохранить полный контроль над данными. За несколько лет они итеративно разработали собственные инструменты для достижения 95% автоматизации бухгалтерского процесса.

Автоматизированный импорт и сверка: Одной из первых задач был импорт транзакций из различных источников (банковские счета, кредитные карты, платежные процессоры) в журнал. Вместо ручного ввода каждой транзакции этот пользователь настроил скрипты импорта для получения и преобразования данных в формат Beancount. Они написали пользовательские импортеры на Python для CSV-файлов или API каждого финансового учреждения, чтобы одной командой можно было загружать новые транзакции и добавлять их в журнал. Например, используя импортеры beangulp, основатель может запустить скрипт, который сканирует папку загрузок на наличие новых выписок и выводит их в виде записей Beancount. Другой пользователь, Райд Льюис, описал аналогичную настройку, где у него есть отдельные скрипты импортера для каждого банка, и он может вызывать их простой командой (используя Justfile) для обновления своего журнала. Наш владелец малого бизнеса делает то же самое — все банковские транзакции, операции по кредитным картам и даже платежи через PayPal или Stripe автоматически загружаются и добавляются в книги, с категоризацией по соответствующим счетам.

Чтобы обеспечить целостность данных даже при автоматическом добавлении этих записей, они проверяют журнал перед каждым коммитом и используют плагины Beancount. Например, включен плагин beancount.plugins.noduplicates, чтобы предотвратить случайный импорт одной и той же транзакции дважды, а beancount.plugins.nounused отмечает счета без записей (полезно для удаления устаревших счетов). Для этого шага проверки мы рекомендуем bea check. Основатель также использует форматтер из сообщества (например, beancount-black), чтобы поддерживать единый стиль файла журнала. Это важно, потому что при множестве автоматических правок единый стиль упрощает дифы и аудит. Фактически, основатель хранит журнал в Git-репозитории, относясь к обновлениям журнала как к изменениям кода. Каждая новая партия импортированных транзакций становится Git-коммитом, и они могут просматривать дифы, чтобы видеть, что изменилось. На одном скриншоте они показывают историю Git, где транзакция по кредитной карте для «Costco» переходит из состояния ожидания в состояние очищено в журнале без ручного вмешательства. Контроль версий обеспечивает аудиторский след: можно точно увидеть, когда транзакция была добавлена или изменена, и даже откатить изменения, если что-то было импортировано неправильно. Это отличный пример переноса лучших практик разработки программного обеспечения (таких как контроль исходного кода) в бухгалтерские записи.

Несколько валют и международные транзакции: Малый бизнес часто совершает операции в нескольких валютах — например, стартап может иметь расходы в долларах США, но также получать платежи в евро или иметь банковский счет в фунтах стерлингов. Наша показательная компания использует мультивалютные возможности Beancount, чтобы консолидировать все это в одном журнале. Они открыли отдельные счета для каждой валюты (например, Assets:Bank:Checking:USD и Assets:Bank:Checking:EUR), что является одним из распространенных подходов. Однако даже если разные валюты находятся на одном счете, Beancount будет отслеживать остаток каждой валюты отдельно и требовать, чтобы транзакции сходились по каждой валюте. Основатель часто запускает отчеты оценки, чтобы видеть общие остатки компании, конвертированные в базовую валюту. Поскольку Beancount поддерживает поиск цен, он настроил ежедневные потоки цен для обменных курсов валют (и цен на акции для любых инвестиций) с помощью скрипта, получающего котировки по расписанию. В результате в любой момент он может сформировать балансовый отчет, скажем, в долларах США, включающий счет в евро, пересчитанный по последнему курсу. Участники сообщества отмечают, что работа с несколькими валютами в бухгалтерском учете в стиле журнала проста — вы просто добавляете транзакции в данной валюте и записываете обменные курсы по мере необходимости. Например, один пользователь поделился примером конвертации USD в EUR в CAD через промежуточные счета как способ управления конвертацией валют в Beancount. В нашем случае малый бизнес не обязательно конвертирует валюты в транзакциях (они хранят их в исходной валюте), но использует отчеты для консолидации. Такая гибкость была крайне важна по мере глобального расширения стартапа.

Пользовательские скрипты и расширения: Не все, что нужно основателю, было доступно из коробки, поэтому они расширили Beancount с помощью пользовательских плагинов. Со временем они написали библиотеку парсера, инструмент форматирования и основанный на правилах импортер транзакций, выпустив многие из них как пакеты с открытым исходным кодом. Например, они создали механизм импорта на основе правил, который использует YAML-конфигурацию для автоматической категоризации транзакций. Фрагмент этой конфигурации показывает, как конкретные получатели или описания (например, «Comcast» или «PG&E») сопоставляются с определенными счетами расходов и описаниями, так что когда они появляются в банковской выписке, создается правильная запись Beancount без ручного редактирования. По сути, это пользовательская автоматизация для применения правил бухгалтерского учета (для коммунальных услуг, подписок и т. д.) на лету. Другой плагин гарантирует, что журнал всегда остается сбалансированным и отформатированным. Все эти инструменты запускаются как часть рабочего процесса основателя при вводе новых данных. Результатом является журнал, который «обновляется сам» с минимальным вмешательством, что, по словам основателя, приносит ему «чистую радость» как одержимому автоматизацией разработчику.

Безопасность и доступность также были проблемами. Основатель хотел, чтобы его финансовой команде (и даже его супруге, выступающей в роли наблюдателя) было легко просматривать книги. Для этого он настроил частное развертывание Fava в облаке. Каждый раз, когда он отправляет новый коммит журнала в частный Git-репозиторий, конвейер CI (использующий GitHub Actions и AWS Elastic Beanstalk) развертывает обновленный экземпляр Fava. Веб-интерфейс защищен паролем (с использованием Nginx-прокси с базовой аутентификацией), поэтому видеть его могут только авторизованные лица. Таким образом, последние финансовые отчеты всегда доступны через браузерную панель без необходимости устанавливать что-либо локально. Диаграмма архитектуры ниже иллюстрирует эту настройку: файл Beancount и необходимая конфигурация упакованы в образ Docker вместе с Fava и размещаются на AWS, с Cloudflare впереди для безопасности.

flowchart LR
    A[Edit ledger locally] --> B[Push to private Git repo]
    B --> C[CI builds Docker image<br/>Fava + Nginx basic auth]
    C --> D[Deploy to AWS<br/>Elastic Beanstalk]
    D --> E[Cloudflare proxy]
    E --> F[Owner & team view<br/>reports in browser]

Автоматизация Beancount в облаке: пользователь обновляет файл журнала локально и отправляет в Git; контейнер Docker (включая Fava и Nginx для аутентификации) собирается и развертывается на сервере AWS Beanstalk, а Cloudflare выступает в роли прокси. Результатом является защищенный веб-портал, где финансовые данные малого бизнеса доступны из любого места (владельцу или команде) в реальном времени. Эта продвинутая настройка демонстрирует, как малый бизнес может интегрировать Beancount с современными облачными инструментами для достижения удобства без отказа от владения данными.

В повседневном использовании владелец малого бизнеса сосредоточен на обработке исключений, а не на вводе данных. Каждый месяц он кратко просматривает автоматически импортированные транзакции (используя Git-дифы или представление журнала Fava), чтобы выявить любые некатегоризированные или неправильные записи. Он также использует проверки баланса в Beancount для сверки счетов. Например, после ввода всех июньских транзакций он может добавить проверку баланса, чтобы подтвердить, что итоговый остаток банковского счета соответствует выписке; если нет, Beancount выдаст ошибку, указывая, что что-то отсутствует или введено неправильно. Это гарантирует точность книг.

Ключевые практики в конфигурации малого бизнеса: Высокая степень автоматизации с помощью пользовательских импортеров и скриптов (что делает журнал «на 95% автоматическим»), использование контроля версий для аудиторских следов и совместной работы, мультивалютный учет с потоками цен для оценки и развертывание Fava для легкого и общего доступа к финансовым отчетам. Сценарий малого бизнеса показывает, насколько далеко можно продвинуть Beancount с инженерными усилиями — превращая учет в в значительной степени автоматизированный конвейер, сохраняя при этом прозрачность и гибкость. Даже если вы не программист, многих из этих преимуществ можно достичь, используя плагины из сообщества (для форматирования, обнаружения дубликатов и т. д.) и приняв текстовый рабочий процесс, который поощряет частые проверки и резервное копирование.

Энтузиаст личных финансов: бюджетирование и пользовательский анализ

Наш последний пример — энтузиаст личных финансов — человек, использующий Beancount для управления домашними финансами и инвестициями с высокой степенью детализации. Этот пользователь относится к своим личным финансам с тщательностью бухгалтера и любопытством аналитика данных. Результатом является журнал Beancount, который не только отслеживает каждую копейку, но и служит основой для бюджетирования, прогнозирования и аналитических экспериментов.

Организация личного журнала: Многие люди начинают с одного файла Beancount для всех своих счетов, и этот энтузиаст не исключение. Они ведут один главный журнал (например, main.beancount), который включает все счета (банковские счета, кредитные карты, кредиты, инвестиционные портфели и т. д.) и транзакции. Со временем они внесли некоторую структуру, разделив разделы — например, у них есть файл для открытия/закрытия счетов и отдельные файлы для годовых транзакций, которые включаются в основной файл. Такая модульная организация упрощает навигацию по многолетним данным (можно архивировать старые годы в отдельных файлах), оставаясь при этом логически одним журналом. Другой личный пользователь на форуме сообщества описал аналогичную структуру: основной файл, включающий другие по категориям (например, Income.beancount, Expenses.beancount, Investments.beancount). Наш энтузиаст пока ведет все просто: один файл, синхронизируемый между устройствами.

Говоря о синхронизации, поскольку это личные финансы, этот пользователь хочет фиксировать транзакции где бы они ни находились. Они используют мобильное приложение под названием Beancount Mobile, чтобы быстро добавлять записи на ходу (например, записывая наличные расходы прямо в магазине). Файл журнала распространяется через облачную синхронизацию (в данном случае Syncthing), так что их телефон, ноутбук и VPS (сервер) имеют самую свежую копию. На компьютере они предпочитают использовать Emacs с beancount-mode для удобного редактирования с подсветкой синтаксиса. Такая настройка гарантирует, что независимо от того, находятся ли они за столом или в пути, они могут мгновенно записывать транзакции и не забывать ничего. Это отличный пример адаптации технологических инструментов для личного удобства — по сути, создание самостоятельного аналога коммерческих приложений для бюджетирования.

Теги и метаданные для детального отслеживания: Этот пользователь использует теги, чтобы добавить второе измерение к своим данным помимо плана счетов. Для обычных категорий бюджета достаточно счетов (у них есть счета, такие как Expenses:Groceries, Expenses:Rent и т. д.), но для сквозных тем, таких как события или цели, они используют теги. Например, они помечают все транзакции, связанные с их проектом домашнего ремонта, тегом #HomeReno, будь то покупка пиломатериалов в хозяйственном магазине (расход) или получение скидки от производителя (доход). Таким образом, они могут легко сформировать отчет об общей стоимости проекта, не разделяя эти расходы по разным счетам. Один пользователь Reddit продемонстрировал этот подход, помечая расходы, такие как #garage-improvement или #lighting-improvement, для домашних проектов, что делает тривиальным фильтрацию и суммирование с помощью запросов Beancount. Наш энтузиаст делает то же самое для отпусков (#ItalyTrip2025), крупных покупок и разовых событий.

Метаданные (пары ключ-значение в транзакциях) также используются для некоторых конкретных целей. Например, они добавляют метаданные location: ... к крупным расходам, чтобы отслеживать, где они потратили деньги, или note: ... для дополнительного контекста помимо получателя и описания. В нескольких случаях они даже создали пользовательские поля метаданных, чтобы помочь с прогнозированием. Один из примеров — добавление budget: X и frequency: monthly к определенным повторяющимся расходам — идея, вдохновленная обсуждением в списке рассылки Beancount, где пользователь хранил бюджетные прогнозы в метаданных для каждого расхода. Эти поля метаданных не влияют на ядро Beancount, но энтузиаст написал небольшой скрипт на Python, который читает их и сравнивает фактические расходы с прогнозируемым бюджетом. Это альтернатива использованию встроенных бюджетов Fava (описанных ниже), показывающая, как метаданные можно приспособить к нуждам пользователя. Как отметил создатель Beancount, метаданные «существуют только для вас [для использования в пользовательских скриптах] — Beancount их парсит, но игнорирует» сам по себе. Короче говоря, этот пользователь не боится расширять журнал дополнительной информацией для помощи в личном анализе.

Бюджетирование с Beancount: Одна из главных целей этого пользователя — придерживаться ежемесячного бюджета. Ранее они использовали приложение для бюджетирования (YNAB) и хотели воспроизвести некоторые его концепции конвертного бюджетирования. Есть несколько способов бюджетирования в Beancount, но самый простой — использовать бюджетные директивы Fava. Наш энтузиаст добавляет записи budget в журнал следующим образом:

2025-01-01 custom "budget" Expenses:Groceries   "monthly" 500 USD
2025-01-01 custom "budget" Expenses:DiningOut   "monthly" 200 USD
2025-01-01 custom "budget" Expenses:Travel      "yearly" 3000 USD

Каждая строка устанавливает бюджет для счета (категории) на период. Затем Fava отображает столбцы бюджет против фактического в веб-интерфейсе, позволяя пользователю видеть, например, что они потратили 480 долларов США на продукты в этом месяце из 500 запланированных, и, возможно, 220 на рестораны (сверх бюджета). Энтузиаст регулярно проверяет Отчет о прибылях и убытках и Расходы в Fava, которые показывают как ежемесячные итоги, так и целевые бюджеты. Fava удобно сворачивает ежедневные/еженедельные бюджеты в соответствующие временные промежутки. Используя интерфейс Fava для этого, пользователю не нужна отдельная электронная таблица для бюджетирования; все интегрировано. (Они также экспериментировали с более автоматизированной «конвертной» системой, перемещая средства на фиктивные счета в начале каждого месяца, как предлагалось на форумах, но нашли пользовательские бюджетные директивы проще в обслуживании.)

Для прогнозирования, помимо бюджетов, они следят за предстоящими счетами. Некоторые участники сообщества создали плагины для генерации будущих транзакций для подписок или графиков амортизации кредитов, но этот пользователь выбрал более простой подход: они ведут отдельный раздел журнала с транзакциями с будущей датой для известных позиций (например, арендная плата за следующий месяц или предстоящий ежегодный страховой платеж). Они остаются в журнале, но не влияют на сегодняшние остатки, и как только наступает дата и транзакция становится текущей, она служит напоминанием (и они скорректируют сумму при необходимости, чтобы она соответствовала фактическому списанию). Это немного хакерский подход, но он работает для прогнозирования денежного потока без сложных инструментов.

Отслеживание инвестиций и многотоварный учет: Как финансовый энтузиаст, этот пользователь также использует Beancount для консолидации инвестиционных счетов — акций, взаимных фондов и криптовалют — наряду с денежными счетами. У них есть брокерские счета, чьи активы (например, акции AAPL, GOOG и т. д.) записываются в Beancount как товары. Например, покупка 10 акций Apple будет записью, которая кредитует брокерские денежные средства и дебетует счет активов с 10 AAPL в качестве количества товара. Способность Beancount обрабатывать любой товар здесь очень полезна; можно свободно смешивать валюты и акции. «Beancount может отслеживать количества в любой валюте, будь то доллары США или тикер акций», — как указал один пользователь, что было большим улучшением по сравнению с приложениями для личных финансов, которые часто плохо поддерживают позиции по акциям. Наш энтузиаст использует cron-задание, выполняемое каждую ночь, для получения последних рыночных цен по всем своим ценным бумагам и иностранным валютам. Каждую ночь в 4 часа утра скрипт получает цены (из Yahoo Finance или другого источника) и добавляет записи цен в журнал за этот день. Таким образом, в следующий раз, когда они откроют Fava или запустят отчет, они увидят актуальную стоимость портфеля и даже эффективность инвестиций с течением времени. Весь собственный капитал, включая банковские счета, пенсионные фонды и криптовалютные кошельки, доступен в едином представлении. Это мечта для инвестора, ориентированного на данные: не нужно входить на несколько платформ, чтобы увидеть полную картину. По сути, они создали личную финансовую панель на основе Beancount.

Анализ и интеграция: Что действительно отличает этого продвинутого пользователя личных финансов, так это то, как они анализируют данные, оказавшись в Beancount. Со всеми транзакциями в базе данных SQLite (Beancount может запрашивать данные через встроенный язык запросов, похожий на SQL), пользователь может выполнять пользовательский анализ. Они написали скрипты на Python, чтобы отвечать на такие вопросы, как «Какова средняя скользящая за 3 месяца моих расходов на продукты?» или «Как расходы этого года на коммунальные услуги соотносятся с прошлым годом?» Один скрипт запрашивает журнал по конкретным тегам и выводит результаты в dataframe Pandas для дальнейших вычислений. Поскольку журнал представляет собой обычный текст, они также использовали блокноты Jupyter для экспериментов с различными визуализациями (помимо того, что предлагает Fava). Например, они создали пользовательскую столбчатую диаграмму ежемесячной нормы сбережений с помощью Matplotlib, агрегируя данные Beancount в Python. Такой специальный анализ возможен только потому, что Beancount хранит данные в доступной и машиночитаемой форме. Как сказал один пользователь, извлечение данных тривиально — «У меня есть один скрипт на Python, который извлекает данные из Beancount с помощью языка запросов, а затем я использую dataframe pandas для подготовки данных в отчет». У нашего энтузиаста есть репозиторий таких небольших скриптов, которые они запускают для своего ежегодного финансового обзора.

Конечно, не все требует программирования — большую часть времени они полагаются на встроенные диаграммы Fava. Fava предоставляет линейный график собственного капитала, тренд доходов и расходов и даже древовидную диаграмму (как показано ранее), которые доступны одним щелчком мыши. Пользователь ценит, что вся история их финансов с 2018 года доступна для запросов и аудита. Например, если они задаются вопросом «Сколько я потратил на ремонт автомобиля за последние 5 лет?», они могут написать быстрый запрос или фильтр в Fava, чтобы получить ответ, вместо того чтобы копаться в чеках. Эта возможность — именно то, что привлекло их в Beancount: полное владение данными и бесконечная гибкость в анализе. Кроме того, текстовый журнал устойчив к будущему — его можно контролировать версиями, мигрировать или даже анализировать другими инструментами при необходимости. В отличие от приложения с закрытым исходным кодом, нет риска потерять доступ к своей финансовой истории.

Ключевые практики в личной конфигурации: Использование мобильных и настольных инструментов для удобного ввода данных, использование тегов и пользовательских метаданных для отслеживания жизненных событий и перекрестных группировок, реализация бюджетов через директивы budget в Fava для текущих целевых показателей расходов, отслеживание инвестиций и нескольких валют в одном журнале (с автоматическим обновлением цен) и выполнение пользовательского анализа путем прямого запроса данных журнала. Этот случай показывает, что при небольшой настройке даже энтузиасты личных финансов могут достичь уровня понимания и контроля, обычно доступного бизнесу, — и все это, сохраняя процесс интересным и увлекательным для технически подкованного пользователя.

Заключение

В этих примерах из сообщества четко прослеживается тема: гибкость Beancount позволяет создать высоко персонализированную систему бухгалтерского учета. Продвинутые пользователи сообщества использовали простые текстовые файлы для создания решений, которые по возможностям сопоставимы с коммерческим программным обеспечением, но при этом адаптированы под их рабочие процессы. Фрилансеры помечают и связывают записи, чтобы легко управлять клиентскими проектами и счетами-фактурами. Владельцы малого бизнеса автоматизируют утомительные бухгалтерские задачи и интегрируют Beancount с современной инфраструктурой для всегда актуальных финансовых данных. Энтузиасты личных финансов используют журнал как единый источник истины для бюджетирования, инвестирования и принятия решений, дополняя его тегами и инструментами, чтобы ответить практически на любой вопрос о своих деньгах. Все это достигается при сохранении ключевых преимуществ учета в виде обычного текста: прозрачности, аудита и контроля над своими данными.

Сообщество Beancount также создало богатую экосистему плагинов и интеграций. От режимов редактора и мобильных приложений для ввода, до веб-интерфейса Fava для визуализации, до бесчисленных импортеров и утилит на GitHub — есть ресурсы почти для любой потребности. Пользователи часто делятся своими конфигурациями журналов на форумах и в блогах, чтобы другие могли учиться и перенимать лучшие практики. Важно, что конфиденциальная информация может оставаться закрытой (или легко редактироваться для обмена) благодаря человекочитаемому формату, как мы сделали в этой витрине. Приведенные выше примеры демонстрируют, что независимо от того, являетесь ли вы фрилансером-разработчиком, основателем стартапа или любителем личных финансов, вы можете приспособить Beancount под свои нужды. Творчески используя теги и метаданные, автоматизируя там, где это возможно, обрабатывая мультивалютные транзакции, планируя с помощью бюджетов и расширяя функциональность плагинами, сообщество продолжает раздвигать границы возможного в обычном тексте. Результатом являются бухгалтерские журналы профессионального уровня, которые также увлекательно вести, давая пользователям как ясность, так и контроль над своими финансами.

Источник: https://beancount.io/ru/docs/community-showcase