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

3 записи с тегом "бухучет"

Посмотреть все теги

Экосистема Beancount: Комплексный анализ

· 35 минут чтения
Mike Thrift
Mike Thrift
Marketing Manager

Основные функции и философия Beancount

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

2025-04-15-beancount-ecosystem

Философия – корректность и минимализм: Дизайн Beancount отдает приоритет целостности данных и простоте. Его создатель, Мартин Блейс, описывает Beancount как «пессимистичный», предполагая, что пользователь будет совершать ошибки, и поэтому накладывает дополнительные проверки и ограничения. Например, Beancount не позволит вам удалить активы, которые никогда не были добавлены (предотвращая отрицательные остатки акций или денежных средств), и может требовать, чтобы каждый счет был открыт перед использованием. В нем отсутствует концепция «виртуальных» или автоматически балансируемых проводок, присущая Ledger, — это преднамеренный выбор, чтобы обеспечить полностью сбалансированные записи. Beancount эффективно «жестко придерживается» корректности, предлагая больше перекрестных проверок, чем предоставляет базовая двойная запись. Этот осторожный подход привлекает пользователей, которые «не слишком доверяют себе» и хотят, чтобы программное обеспечение выявляло их ошибки.

Минимум опций, максимум согласованности: В отличие от множества флагов командной строки и опций настройки Ledger, Beancount выбирает минимализм. Существует очень мало глобальных опций, и ни одна из них не изменяет семантику транзакций за пределами файла бухгалтерского журнала. Вся конфигурация, влияющая на учет (например, методы учета себестоимости товаров или допущения по проводкам), выполняется в файле с помощью директив или плагинов, что гарантирует, что загрузка одного и того же файла всегда дает одинаковые результаты независимо от того, как генерируются отчеты. Такая конструкция позволяет избежать сложности множества настроек Ledger и тонких взаимодействий между ними. Философия Beancount заключается в том, что инструмент учета должен быть стабильным, детерминированным конвейером от входного файла до отчетов. Это достигается за счет обработки бухгалтерского журнала как упорядоченного потока директив, которые могут быть программно обработаны последовательно. Даже то, что Ledger рассматривает как специальный синтаксис (например, начальные остатки или ценовые заявления), являются первоклассными директивами в модели данных Beancount, что делает систему очень расширяемой.

Расширяемость через плагины и язык запросов: Beancount реализован на Python и предоставляет хуки для внедрения пользовательской логики в конвейер обработки. Пользователи могут писать плагины на Python, которые работают с потоком транзакций (например, для применения пользовательского правила или генерации автоматических записей). Эти плагины запускаются по мере обработки файла, эффективно расширяя основные функции Beancount без необходимости изменения исходного кода. Beancount также включает мощный язык запросов (вдохновленный SQL) для анализа и обработки бухгалтерского журнала. Инструмент bean-query рассматривает разобранный бухгалтерский журнал как базу данных и позволяет выполнять аналитические запросы к нему – например, суммировать расходы по категориям или извлекать все транзакции для данного получателя платежа. В Beancount 3.x эта возможность запросов была перенесена в отдельный пакет beanquery, но с точки зрения пользователя она по-прежнему обеспечивает гибкую отчетность с помощью SQL-подобных запросов.

Простой текст и контроль версий: Как инструмент учета на основе простого текста, Beancount подчеркивает контроль пользователя и долговечность данных. Бухгалтерский журнал — это просто текстовый файл .beancount, который можно редактировать в любом текстовом редакторе. Это означает, что вся ваша финансовая история хранится в удобочитаемой форме, и вы можете поместить ее в Git или другую систему контроля версий (VCS) для отслеживания изменений с течением времени. Пользователи часто хранят свой файл Beancount под контролем версий, чтобы поддерживать аудиторский след каждой правки (с сообщениями коммитов, описывающими изменения). Этот подход соответствует философии Beancount, согласно которой учетные данные, особенно личные или финансовые данные малого бизнеса, должны быть прозрачными и «устойчивыми к будущему» – не запертыми в проприетарной базе данных. По словам самого Мартина Блейса, Beancount — это «труд любви», созданный, чтобы быть простым, долговечным и бесплатным для сообщества. Он был впервые разработан около 2007 года и развивался посредством крупных переписываний (с v1 на v2, а теперь и v3 в 2024 году), чтобы усовершенствовать свой дизайн, сохраняя при этом свою основную философию минимализма и корректности.

Инструменты, Плагины и Расширения в Экосистеме Beancount

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

Утилиты для импорта данных (Импортеры)

Одной из важнейших потребностей для практического использования является импорт транзакций из банков, с кредитных карт и других финансовых учреждений. Beancount предоставляет фреймворк для импорта и скрипты импорта, разработанные сообществом, для этой цели. В Beancount 2.x встроенный модуль beancount.ingest (с командами, такими как bean-extract и bean-identify) использовался для определения плагинов импорта на Python и их применения к загруженным выпискам. В Beancount 3.x это было заменено внешним проектом под названием Beangulp. Beangulp — это специализированный фреймворк для импортеров, который развился из beancount.ingest и теперь является рекомендуемым способом автоматизации импорта транзакций для Beancount 3.0. Он позволяет писать скрипты на Python или инструменты командной строки, которые считывают внешние файлы (например, выписки в форматах CSV или PDF) и выводят записи Beancount. Этот новый подход отделяет логику импорта от ядра Beancount – например, старая команда bean-extract была удалена в версии 3, и вместо этого ваши скрипты импорта сами генерируют транзакции через CLI-интерфейс Beangulp.

Десятки готовых импортеров существуют для различных банков и форматов, разработанных сообществом. Существуют скрипты импорта для учреждений по всему миру – от Alipay и WeChat Pay в Китае, до различных европейских банков (Commerzbank, ING, ABN AMRO и т.д.), до американских банков, таких как Chase и Amex. Многие из них собраны в публичных репозиториях (часто на GitHub) или в пакетах, таких как beancount-importers. Например, проект Tarioch Beancount Tools (tariochbctools) предоставляет импортеры для швейцарских и британских банков и даже обрабатывает импорт криптотранзакций. Другим примером является Lazy Beancount, который объединяет набор общих импортеров (для Wise, Monzo, Revolut, IBKR и т.д.) и предоставляет настройку на основе Docker для легкой автоматизации. Независимо от того, какой банк или финансовый сервис вы используете, велика вероятность, что кто-то уже написал импортер Beancount для него – или вы можете написать свой собственный, используя фреймворк Beangulp. Гибкость Python означает, что импортеры могут обрабатывать парсинг файлов CSV/Excel, загрузки OFX/QIF или даже скрапинг API, а затем выдавать транзакции в стандартизированном формате Beancount.

Редактирование и интеграция с редакторами

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

  • Emacs Beancount-Mode: Основной режим Emacs (beancount-mode) доступен для редактирования файлов .beancount, предлагая такие функции, как раскраска синтаксиса и интеграция с проверщиком Beancount. Он может даже запускать bean-check в фоновом режиме, чтобы ошибки в учетной книге (например, несбалансированная транзакция) помечались по мере редактирования.
  • Расширение VS Code: Расширение Beancount на VSCode Marketplace предоставляет аналогичные удобства для пользователей Visual Studio Code. Оно поддерживает подсветку синтаксиса, выравнивание сумм, автозаполнение для счетов/получателей платежей и даже проверку баланса на лету при сохранении файла. Оно также может интегрироваться с Fava, позволяя запускать веб-интерфейс Fava из VSCode.
  • Плагины или режимы также существуют для Vim, Atom и других редакторов. Например, существует грамматика Tree-sitter для Beancount, которая обеспечивает подсветку синтаксиса в современных редакторах и даже была принята в веб-компоненте редактора Fava. Короче говоря, независимо от вашей среды редактирования, сообщество, вероятно, предоставило плагин, чтобы сделать редактирование файлов Beancount удобным и безошибочным.

Для быстрого ввода транзакций вне традиционных редакторов также существуют такие инструменты, как Bean-add и мобильные приложения. Bean-add — это инструмент командной строки, который позволяет добавлять новую транзакцию через запрос или одной строкой, обрабатывая предложения по дате и счету. На мобильных устройствах проект под названием Beancount Mobile предоставляет простой интерфейс для ввода транзакций на ходу (например, запись покупки наличными с вашего телефона). Кроме того, существует Бот Beancount для Telegram для захвата транзакций через сообщения — вы можете отправить сообщение с деталями транзакции, и бот отформатирует его в ваш файл учетной книги.

Веб-интерфейсы и инструменты визуализации

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

Флагманским интерфейсом для Beancount является Fava, современный веб-интерфейс. Fava работает как локальное веб-приложение, которое считывает ваш файл Beancount и создает насыщенный интерактивный опыт в вашем браузере. Оно предлагает полный набор отчетов: бухгалтерский баланс, отчет о прибылях и убытках, изменение чистой стоимости активов с течением времени, состав портфеля, графики производительности, бюджеты и многое другое – все готово к использованию. Пользователи часто называют Fava главной причиной выбора Beancount среди других инструментов учета в виде обычного текста. С помощью одной команды (fava ledger.beancount) вы можете просматривать свои финансы с помощью графиков и таблиц вместо текста. Fava поддерживает такие функции, как: детализация счетов, фильтрация транзакций по получателю или тегу, редактор запросов (позволяющий выполнять запросы Beancount и просматривать результаты в браузере) и даже встроенный веб-редактор для вашей бухгалтерской книги. Он очень удобен в использовании, делая учет в виде обычного текста доступным для тех, кто предпочитает визуальные интерфейсы.

Внутри Fava написан на Python (Flask на бэкенде) и JavaScript (Svelte на фронтенде). У него свой цикл выпуска, и он активно поддерживается. Примечательно, что Fava идет в ногу с развитием Beancount – например, Fava 1.30 добавила поддержку Beancount v3, переключившись на использование новых пакетов beanquery и beangulp внутри. (Он по-прежнему поддерживает Beancount 2 для старых бухгалтерских книг.) Внимание Fava к удобству использования включает такие приятные мелочи, как автозаполнение в веб-редакторе, и элегантный пользовательский интерфейс с темным режимом и адаптивными графиками. Существует также ответвление под названием Fava-GTK, которое упаковывает Fava в настольное приложение для пользователей GNOME/Linux, предпочитающих ощущение нативного приложения.

Помимо Fava, существуют и другие варианты визуализации и анализа. Поскольку данные Beancount могут быть экспортированы или запрошены в виде таблиц, пользователи часто используют такие инструменты, как Jupyter notebooks или Pandas, для пользовательского анализа. Например, один пользователь описывает извлечение данных из Beancount через интерфейс запросов в Pandas DataFrame для подготовки пользовательского отчета. Существуют также скрипты, разработанные сообществом, для конкретных отчетов – например, инструмент анализа распределения портфеля или контрольная карта процесса для расходов по сравнению с чистой стоимостью активов. Однако для большинства людей Fava предоставляет более чем достаточную мощность отчетности без необходимости писать код. Он даже поддерживает расширения: вы можете добавлять файлы Python, которые добавляют новые страницы отчетов или графики в Fava. Заметным расширением является fava-envelope для конвертного бюджетирования внутри Fava. В целом, Fava служит центральным центром визуализации экосистемы Beancount.

Утилиты и скрипты командной строки

Beancount поставляется с различными CLI-инструментами (особенно в старой ветке v2, некоторые из которых были сокращены в v3). Эти инструменты обрабатывают ваш файл главной книги для его проверки или генерации конкретных отчетов в текстовом формате или HTML:

  • bean-check: валидатор, который проверяет файл на наличие синтаксических или бухгалтерских ошибок. Запуск bean-check myfile.beancount уведомит вас о любом дисбалансе, отсутствующем счете или других проблемах и не выведет ничего, если файл не содержит ошибок.
  • bean-format: форматтер, который упорядочивает вашу главную книгу путем выравнивания чисел в аккуратные столбцы, подобно запуску форматтера кода для исходного кода. Это помогает поддерживать чистоту и читаемость файла.
  • bean-query: интерактивная оболочка или пакетный инструмент для выполнения языка запросов Beancount в вашей главной книге. Вы можете использовать его для создания пользовательских табличных отчетов (например, bean-query myfile.beancount "SELECT account, sum(amount) WHERE ...").
  • bean-report: универсальный генератор отчетов (в v2), который может выводить предопределенные отчеты (бухгалтерский баланс, отчет о прибылях и убытках, оборотно-сальдовая ведомость и т. д.) в консоль или в файлы. Например, bean-report file.beancount balances выведет остатки по счетам. (На практике многие из этих текстовых отчетов были заменены более приятным представлением Fava.)
  • bean-web / bean-bake: старый веб-интерфейс, который обслуживал отчеты на localhost или «запекал» их в виде статических HTML-файлов. Они в основном использовались до того, как Fava стала популярной; bean-web предоставлял базовый веб-просмотр тех же отчетов, которые мог генерировать bean-report. В Beancount 3 bean-web был удален (поскольку Fava теперь является рекомендуемым веб-интерфейсом, предлагающим превосходный опыт).
  • bean-example: утилита для генерации примера файла главной книги (полезно для новичков, чтобы увидеть шаблон записей Beancount).
  • bean-doctor: инструмент отладки, который может диагностировать проблемы в вашей главной книге или окружении.

Стоит отметить, что начиная с Beancount v3, многие из этих инструментов были вынесены из основного проекта. Основной пакет Beancount был оптимизирован, а такие инструменты, как движок запросов и импортеры, были разделены на отдельные пакеты (beanquery, beangulp и т. д.) для упрощения обслуживания. Например, функциональность bean-query теперь предоставляется инструментом beanquery, который устанавливается отдельно. С точки зрения пользователя функциональность остается доступной; она просто была модулирована. Сообщество Arch Linux отметило это изменение при обновлении Fava: пакет Fava добавил зависимости от beanquery и beangulp для поддержки Beancount 3.x. Такой модульный подход также позволяет другим членам сообщества вносить вклад в эти вспомогательные инструменты более независимо от цикла выпуска Beancount.

Плагины и расширения Beancount

Выдающейся сильной стороной экосистемы Beancount является система плагинов. Добавив строку plugin "module.name" в ваш файл Beancount, вы можете включить пользовательскую логику Python, которая выполняется во время обработки бухгалтерской книги. Сообщество создало множество плагинов для расширения возможностей Beancount:

  • Качество данных и правила: Примеры включают beancount-balexpr, который позволяет утверждать уравнения, включающие несколько счетов (например, Актив A + Актив B = Обязательство X), и beancount-checkclosed, который автоматически вставляет утверждения баланса при закрытии счета, чтобы убедиться, что он обнуляется. Существует даже плагин для обеспечения сортировки транзакций в файле по дате (autobean.sorted) для выявления записей не по порядку.
  • Автоматизация: Плагин beancount-asset-transfer может генерировать записи о натуральных переводах между счетами (полезно для перемещения акций между брокерами с сохранением первоначальной стоимости). Другой плагин, autobean.xcheck, сверяет вашу бухгалтерскую книгу Beancount с внешними выписками на предмет расхождений.
  • Повторяющиеся транзакции и бюджеты: Плагин «repeat» или interpolate от Akuukis позволяет определять повторяющиеся транзакции или распределять годовые расходы по месяцам. Для бюджетирования расширение fava-envelope (используемое через Fava) поддерживает методологию конвертного бюджетирования в простом тексте. Также есть MiniBudget от Фрэнка Дэвиса – небольшой автономный инструмент, вдохновленный Beancount, для помощи в бюджетировании для личного или малого бизнеса.
  • Налоги и отчетность: Некоторые плагины помогают с налоговым учетом, например, тот, который автоматически классифицирует прирост капитала на краткосрочный и долгосрочный. Другой (fincen_114 от Джастуса Пендлтона) генерирует отчет FBAR для налогоплательщиков США с иностранными счетами, демонстрируя, как данные Beancount могут быть использованы для регуляторной отчетности.
  • Репозитории плагинов сообщества: Существуют тщательно отобранные наборы плагинов, такие как beancount-plugins (от Дэйва Стивенса), ориентированные на такие вещи, как записи об амортизации, и beancount-plugins-zack (от Стефано Заккироли), которые включают различные вспомогательные средства, такие как директивы сортировки.

В дополнение к плагинам, другие вспомогательные инструменты, окружающие Beancount, решают специфические задачи. Например, beancount-black – это автоформаттер, похожий на форматтер кода Black, но предназначенный для файлов бухгалтерской книги Beancount. Существует Бот Beancount (Telegram/Mattermost) для добавления транзакций через чат, как упоминалось, и рабочий процесс Alfred для macOS для быстрого добавления транзакций в ваш файл. Инструмент под названием Pinto предлагает «усовершенствованный» CLI с интерактивным вводом (подобно улучшенному bean-add). Для тех, кто переходит с других систем, существуют конвертеры (YNAB2Beancount, CSV2Beancount, GnuCash2Beancount, Ledger2Beancount), которые помогают импортировать данные из других источников.

Таким образом, экосистема Beancount весьма обширна. Таблица 1 ниже перечисляет некоторые основные инструменты и расширения с их ролями:

Tool/ExtensionDescription
Fava (web interface)Полнофункциональное веб-приложение для просмотра и редактирования книг Beancount. Предоставляет интерактивные отчеты (балансовый отчет, отчет о прибылях и убытках и т. д.), графики и возможности запросов. Значительно повышает удобство использования Beancount.
Beangulp (import framework)Автономный фреймворк для импорта для Beancount v3, заменяющий старый модуль ingest. Помогает конвертировать банковские выписки (CSV, PDF и т. д.) в записи Beancount с использованием скриптов плагинов.
Beanquery (query tool)Автономный SQL-подобный движок запросов для данных Beancount. Заменяет bean-query в v3, позволяя выполнять расширенные запросы транзакций и балансов с помощью знакомого синтаксиса SELECT-FROM-WHERE.
Bean-check / Bean-formatОсновные инструменты командной строки (CLI) для проверки файла Beancount (поиск ошибок) и его автоматического форматирования для обеспечения согласованности. Полезны для поддержания правильной и чистой бухгалтерской книги.
Editor Plugins (Emacs, VSCode, Vim, etc.)Плагины/режимы, которые добавляют поддержку синтаксиса Beancount и линтинг в текстовых редакторах. Улучшают опыт ручного редактирования файлов .beancount с такими функциями, как автозаполнение и подсветка ошибок в реальном времени.
Community ImportersКоллекции скриптов для импорта банковских данных (многие на GitHub), охватывающие банки в США, ЕС, Азии и других регионах. Позволяют пользователям автоматически импортировать транзакции из своих финансовых учреждений в Beancount.
Plugins (Ledger extensions)Опциональные встроенные плагины для применения правил или добавления функциональности (например, распределение расходов, повторяющиеся записи, пользовательские утверждения баланса). Написаны на Python и запускаются во время обработки файла для настройки.

| Converters (Migration tools) | Утилиты для конвертации данных из других форматов в Beancount, например, из GnuCash или Ledger CLI в формат Beancount. Облегчают внедрение Beancount без необходимости начинать с нуля. |

Сравнение с Ledger, hledger и аналогичными системами

Beancount относится к семейству инструментов учета двойной записи в виде обычного текста, среди которых выделяются Ledger CLI (Ledger Джона Уигли) и hledger. Хотя все эти системы объединяет основная идея использования текстовых файлов бухгалтерской книги и двойной записи, они различаются по синтаксису, философии и зрелости экосистемы. В следующей таблице представлены ключевые различия между Beancount, Ledger и hledger:

| Аспект | Beancount (Python)

Сценарии использования Beancount

Beancount достаточно универсален для использования как для учета личных финансов, так и (в некоторых случаях) для бухгалтерского учета малого бизнеса. Его основной принцип двойной записи одинаков в обоих сценариях, но масштабы и конкретные методы могут различаться.

Личные финансы

Многие пользователи Beancount используют его для управления своими личными или семейными финансами. Типичная настройка личных финансов в Beancount может включать счета для текущих и сберегательных счетов, кредитных карт, инвестиций, займов, категорий доходов (зарплата, проценты и т.д.) и категорий расходов (аренда, продукты, развлечения и т.д.). Пользователи записывают ежедневные транзакции либо вручную (вводя квитанции, счета и т.д.), либо импортируя их из банковских выписок с помощью ранее обсуждавшихся инструментов импорта. Преимущества Beancount для личных финансов включают:

  • Консолидация и анализ: Все ваши транзакции могут храниться в одном текстовом файле (или наборе файлов), который представляет годы финансовой истории. Это упрощает анализ долгосрочных тенденций. С помощью языка запросов Beancount или Fava вы можете за считанные секунды ответить на вопросы типа «Сколько я потратил на путешествия за последние 5 лет?» или «Каков мой средний ежемесячный счет за продукты?». Один пользователь отметил, что после перехода на Beancount «анализ финансовых данных (расходы, пожертвования, налоги и т.д.) становится тривиальным» либо через Fava, либо путем запроса данных и использования таких инструментов, как Pandas. По сути, ваша бухгалтерская книга становится личной финансовой базой данных, которую вы можете запрашивать по своему усмотрению.
  • Бюджетирование и планирование: Хотя Beancount не навязывает систему бюджетирования, вы можете ее реализовать. Некоторые пользователи используют «конвертное» бюджетирование, создавая бюджетные счета или используя плагин fava-envelope. Другие просто используют периодические отчеты для сравнения расходов с целевыми показателями. Поскольку это простой текст, интеграция Beancount с внешними инструментами бюджетирования или электронными таблицами проста (экспорт данных или использование вывода CSV из запросов).
  • Отслеживание инвестиций и чистой стоимости активов: Beancount отлично справляется с отслеживанием инвестиций благодаря надежной обработке себестоимости и рыночных цен. Вы можете записывать покупки/продажи акций, криптовалюты и т.д. с указанием деталей себестоимости, а затем использовать директивы Prices для отслеживания рыночной стоимости. Fava может отображать график чистой стоимости активов с течением времени и разбивку портфеля по классам активов. Это чрезвычайно полезно для управления личным капиталом – вы получаете информацию, аналогичную той, что предоставляют коммерческие инструменты, такие как Mint или Personal Capital, но полностью под вашим контролем. Поддержка нескольких валют также встроена, поэтому, если вы держите иностранные валюты или криптовалюту, Beancount может отслеживать их и конвертировать для отчетности.
  • Сверка и точность: Личные финансы часто включают сверку с банковскими выписками. С Beancount можно регулярно сверять счета, используя утверждения баланса или функцию документов. Например, каждый месяц вы можете добавлять запись balance Assets:Bank:Checking <date> <balance>, чтобы подтвердить, что ваша бухгалтерская книга соответствует выписке банка на конец месяца. Инструмент bean-check (или отображение ошибок Fava) предупредит вас, если что-то не совпадает. Один пользователь упоминает ежемесячную сверку всех счетов, что «помогает выявить любую необычную активность» – хорошая практика гигиены личных финансов, которую облегчает Beancount.
  • Автоматизация: Технически подкованные люди автоматизировали значительную часть своего рабочего процесса по управлению личными финансами с помощью Beancount. Используя импортеры, задания cron и, возможно, немного Python, вы можете настроить свою систему так, чтобы, например, каждый день ваши банковские транзакции извлекались (некоторые используют OFX или API) и добавлялись в ваш файл Beancount, категоризированные по правилам. Со временем ваша бухгалтерская книга становится в основном автоматически обновляемой, и вам остается только просматривать и корректировать по мере необходимости. Участник сообщества на Hacker News поделился, что через 3 года их учетные записи Beancount были «на 95% автоматическими». Такой уровень автоматизации возможен благодаря открытости Beancount как простого текста и его возможностям скриптования.

Пользователи личных финансов часто выбирают Beancount вместо электронных таблиц или приложений, потому что он дает им полное владение данными (нет зависимости от облачного сервиса, который может закрыться – например, Mint был прекращен) и потому что глубина анализа больше, когда все ваши данные интегрированы. Кривая обучения нетривиальна – нужно изучить основы бухгалтерского учета и синтаксис Beancount – но такие ресурсы, как официальная документация и учебные пособия сообщества, помогают новичкам начать работу. После настройки многие обнаруживают, что это приносит душевное спокойствие, имея четкую, достоверную картину своих финансов в любое время.

Учет для малого бизнеса

Использование Beancount для малого бизнеса (или некоммерческой организации, клуба и т. д.) встречается реже, чем для личного использования, но это, безусловно, возможно, и некоторые успешно это реализовали. Система двойной записи Beancount по сути является той же системой, которая лежит в основе корпоративного учета, но без некоторых функций более высокого уровня, которые предоставляет специализированное бухгалтерское программное обеспечение (например, модули выставления счетов или интеграция с расчетом заработной платы). Вот как Beancount может быть применен в контексте малого бизнеса:

  • Главная книга и финансовая отчетность: Малый бизнес может рассматривать файл Beancount как свою главную книгу. У вас будут счета активов для банковских счетов, дебиторской задолженности, возможно, запасов; счета обязательств для кредитных карт, займов, кредиторской задолженности; капитал для собственного капитала владельца; счета доходов от продаж или услуг; и счета расходов для всех бизнес-расходов. Ведя эту книгу, вы можете в любое время формировать Отчет о прибылях и убытках (ОПиУ) и Бухгалтерский баланс, используя отчеты или запросы Beancount. Фактически, встроенные отчеты Beancount или Fava могут генерировать баланс и ОПиУ за считанные секунды, что полностью соответствует принципам бухгалтерского учета. Этого может быть достаточно для небольшой компании, чтобы оценить прибыльность, финансовое положение и денежный поток (с небольшим количеством запросов для денежного потока, поскольку прямые отчеты о движении денежных средств не встроены, но могут быть получены).
  • Счета-фактуры, дебиторская и кредиторская задолженность: Beancount не имеет встроенной системы выставления счетов; пользователи обычно обрабатывают выставление счетов вне системы (например, создают счета в Word или приложении для выставления счетов), а затем записывают результаты в Beancount. Например, при выставлении счета вы записываете проводку: дебетуете счет дебиторской задолженности и кредитуете счет доходов. При поступлении платежа вы дебетуете счет денежных средств/банка и кредитуете счет дебиторской задолженности. Таким образом, вы можете отслеживать непогашенную дебиторскую задолженность, просматривая остаток по счету дебиторской задолженности. То же самое относится к счетам к оплате (кредиторской задолженности). Хотя это более ручной процесс, чем в специализированном бухгалтерском программном обеспечении (которое может отправлять напоминания или интегрироваться с электронной почтой), это вполне осуществимо. Некоторые пользователи делились шаблонами или рабочими процессами по управлению счетами-фактурами с помощью Beancount и обеспечению контроля за неоплаченными счетами (например, используя метаданные или пользовательские запросы для составления списка неоплаченных счетов).
  • Запасы или себестоимость реализованной продукции: Для предприятий, продающих товары, Beancount может отслеживать покупки и продажи запасов, но это требует дисциплинированных записей. Вы можете использовать функции Inventory (Запасы) и учета затрат: покупка запасов увеличивает счет активов (с привязкой стоимости к товарам), а их продажа перемещает стоимость в расходы (Себестоимость реализованной продукции) и записывает доход. Поскольку Beancount настаивает на сопоставлении партий, он обеспечивает правильное уменьшение запасов по корректной стоимости, что фактически может гарантировать точность расчетов вашей валовой прибыли при правильном выполнении. Однако автоматического отслеживания SKU или чего-либо подобного нет – все происходит на финансовом уровне (количество и стоимость).
  • Расчет заработной платы и сложные операции: Beancount может записывать операции по расчету заработной платы (расходы на зарплату, удержания налогов и т. д.), но расчет этих сумм может выполняться внешне или с помощью другого инструмента, а затем просто заноситься в Beancount. Для очень малого бизнеса (например, с одним или двумя сотрудниками) это управляемо. Вы бы, например, записывали одну бухгалтерскую проводку за каждый расчетный период, которая разделяет заработную плату, удержанные налоги, расходы работодателя на налоги, выплаченные денежные средства и т. д. Выполнение этого вручную похоже на то, как это делается в бухгалтерских проводках QuickBooks – это требует знания того, какие счета задействовать.
  • Многопользовательский режим и аудит: Одной из проблем в бизнес-среде является ситуация, когда нескольким людям нужен доступ к бухгалтерским книгам или когда бухгалтеру необходимо их проверить. Поскольку Beancount является текстовым файлом, он не поддерживает многопользовательский режим в реальном времени. Однако размещение файла в репозитории Git может обеспечить совместную работу: каждый человек может редактировать и фиксировать изменения, а различия могут быть объединены.
  • Соблюдение нормативных требований: Для подачи налоговой отчетности или соблюдения нормативных требований данные Beancount могут быть использованы для генерации необходимых отчетов, но это может потребовать пользовательских запросов или плагинов. Мы видели пример плагина сообщества для отчетности по требованиям индийского правительства и один для отчетности FinCEN FBAR. Это показывает, что при определенных усилиях Beancount может быть адаптирован для удовлетворения конкретных требований к отчетности. Малые предприятия в юрисдикциях с простыми требованиями (кассовый метод учета или базовый метод начисления) безусловно могут вести учет в Beancount и формировать финансовую отчетность для налоговых деклараций. Однако такие функции, как графики амортизации или амортизация нематериальных активов, могут потребовать от вас самостоятельного ввода записей или использования плагина (например, плагины амортизации Дэйва Стивенса помогают автоматизировать это). Нет графического интерфейса для «нажатия кнопки амортизации актива», как в некоторых бухгалтерских программах; вы бы кодировали амортизацию как транзакции (что в некотором смысле демистифицирует ее – каждая запись является тем, что вы можете проверить).

На практике многие технически подкованные владельцы малого бизнеса использовали Beancount (или Ledger/hledger), если они предпочитают контроль и прозрачность удобству QuickBooks. В обсуждении на Reddit отмечалось, что для стандартного учета малого бизнеса с ограниченным объемом транзакций Beancount работает отлично. Ограничивающим фактором обычно является уровень комфорта – насколько владелец бизнеса (или его бухгалтер) чувствует себя комфортно с текстовым инструментом. Одним из преимуществ является стоимость: Beancount бесплатен, тогда как бухгалтерское программное обеспечение может быть дорогостоящим для малого бизнеса. С другой стороны, отсутствие официальной поддержки и характер «сделай сам» означают, что он лучше всего подходит для тех, кто является одновременно владельцем бизнеса и в некоторой степени технически подкован. Для фрилансеров или индивидуальных предпринимателей с навыками программирования Beancount может быть привлекательным выбором для управления финансами без использования облачных бухгалтерских услуг.

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

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

Сообщество и активность в разработке

Beancount обладает преданным сообществом и историей разработки, отражающей его открытый, нишевый, но страстный характер. Ниже приведены ключевые моменты, касающиеся его сообщества, сопровождающих и связанных проектов:

  • Сопровождение проекта: Основным автором Beancount является Мартин Блейс, который начал проект около 2007 года и провел его через множество версий. Долгое время разработка была в основном усилием одного человека (помимо вкладов сообщества в виде патчей). Философия Мартина заключалась в создании инструмента для учета, «полезного прежде всего для меня, а также для других, самым простым и долговечным способом». Эта личная мотивация поддерживала проект как труд любви. По состоянию на 2025 год Мартин Блейс по-прежнему является ведущим сопровождающим (его имя фигурирует в коммитах, и он отвечает на вопросы в списке рассылки/трекере задач), но экосистема вокруг Beancount имеет множество других участников в их соответствующих проектах.

  • GitHub и репозитории: Исходный код размещен на GitHub в репозитории beancount/beancount. Проект лицензирован под GPL-2.0 и за годы привлек умеренное количество участников. В середине 2024 года Beancount Version 3 был официально выпущен как новая стабильная ветка. Этот выпуск включал разделение некоторых компонентов: например, репозиторий beangulp (для импортеров) и репозиторий beanquery (для инструмента запросов) теперь являются частью организации beancount на GitHub и поддерживаются относительно независимо. Основной репозиторий Beancount сосредоточен на ядре учетного движка и парсере файлов. По состоянию на 2025 год GitHub Beancount показывает активные обсуждения задач и некоторую текущую разработку – хотя и не в большом объеме, задачи и запросы на слияние поступают постепенно, и время от времени выпускаются обновления для исправления ошибок или доработки функций.

  • Разработка Fava: Fava, веб-интерфейс, начинался как отдельный проект (созданный Домиником Аумайром, который зарегистрировал на него авторские права в 2016 году). У него есть собственное сообщество участников, и он также находится на GitHub в репозитории beancount/fava. Сопровождающие и участники Fava (например, Якоб Шнец, Стефан Отте и другие в последние годы) активно улучшают интерфейс, выпуская релизы каждые несколько месяцев. Чат Fava на Gitter (ссылка на который есть в документации Fava) и трекер задач на GitHub – это места, где пользователи и разработчики обсуждают новые функции или ошибки. Проект приветствует вклады, о чем свидетельствует примечание в CHANGELOG, благодарящее нескольких членов сообщества за их PR. Тесное соответствие разработки Fava с разработкой Beancount (такое как быстрое добавление поддержки Beancount v3 и нового синтаксиса beanquery) указывает на хорошее сотрудничество между двумя проектами.

  • Списки рассылки и форумы: У Beancount есть официальный список рассылки (ранее на Google Groups, называвшийся «Beancount» или иногда обсуждавшийся в общем списке Ledger). Этот список рассылки – кладезь знаний: пользователи задают вопросы о том, как моделировать определенные сценарии, сообщают об ошибках и делятся советами. Мартин Блейс известен тем, что отвечает в списке рассылки с подробными объяснениями. Кроме того, сообщество Plain Text Accounting (учет в виде простого текста) сильно пересекается. Список рассылки Ledger CLI часто также рассматривает вопросы о Beancount, и есть форум на plaintextaccounting.org, а также сабреддит r/plaintextaccounting, где часто поднимаются темы Beancount. Пользователи на этих платформах обсуждают сравнения, делятся личными настройками и помогают новичкам. Общий тон сообщества очень кооперативный – пользователи Beancount часто помогают пользователям Ledger и наоборот, признавая, что все эти инструменты имеют схожие цели.

  • Чаты: Помимо списков рассылки, существуют чат-каналы, такие как Plaintext Accounting Slack/Discord (организованные сообществом) и Fava Gitter. Это менее формальные, более оперативные способы получить помощь или обсудить функции. Например, можно зайти в Slack, чтобы спросить, есть ли у кого-нибудь импортер для конкретного банка. Также есть канал Matrix/IRC (исторически #ledger или #beancount на IRC), где находятся некоторые давние пользователи. Хотя эти каналы не так многочисленны, как сообщества для массового программного обеспечения, в них есть знающие люди, которые часто могут ответить на сложные бухгалтерские вопросы.

  • Участники и ключевые члены сообщества: Несколько имен выделяются в сообществе Beancount:

    • «Redstreet» (Red S): Плодовитый участник, написавший множество плагинов (таких как beancount-balexpr, sellgains и другие) и часто оказывающий поддержку. Он также поддерживает набор скриптов-импортеров и инструмент bean-download для получения выписок.
    • Василий М (Evernight): Автор некоторых фреймворков для импортеров и плагинов, таких как beancount-valuation, а также вкладов в Fava, касающихся инвестиций.
    • Стефано Заккироли (zack): Разработчик Debian, создавший beancount-mode для Emacs и свой собственный репозиторий плагинов. Он также выступал за учет в виде простого текста в академических кругах.
    • Саймон Майкл: Хотя он в основном является руководителем hledger, он управляет plaintextaccounting.org, который включает Beancount. Это перекрестное опыление помогло привлечь внимание пользователей Ledger/hledger к Beancount.
    • Франк Хелл (Tarioch): Участник Tarioch Beancount Tools, крупного набора импортеров и сборщиков цен, особенно для европейских учреждений.
    • Сиддхант Гоэл: Член сообщества, который ведет блог о Beancount (например, его руководство по миграции на v3) и поддерживает некоторые импортеры. Его посты в блоге помогли многим новым пользователям.

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

  • Статистика GitHub и форки: Репозиторий Beancount на GitHub набрал несколько сотен звезд (что указывает на интерес) и форков. Заметные форки самого Beancount редки – нет широко известного расходящегося форка, который пытался бы быть «Beancount, но с функцией X». Вместо этого, когда пользователи хотели чего-то другого, они либо писали плагин, либо использовали другой инструмент (например, hledger), а не форкали Beancount. Можно считать hledger своего рода форком Ledger (не Beancount), а сам Beancount – независимым переосмыслением идей Ledger, но внутри репозитория Beancount нет крупных разрозненных проектов. Сообщество в целом объединилось вокруг основного репозитория и расширило его через интерфейс плагинов вместо фрагментации кодовой базы. Это, вероятно, связано с тем, что Мартин Блейс был открыт для внешних вкладов (в его документации даже есть раздел, посвященный внешним вкладам и модулям), а архитектура плагинов сделала ненужным поддержание форка для большинства новых функций.

  • Ресурсы сообщества: Существует несколько высококачественных ресурсов для изучения и использования Beancount, созданных сообществом:

    • Документация Beancount на GitHub Pages (и исходные Google Docs, которые поддерживает Мартин) – очень полная, включая теорию бухгалтерского учета и то, как Beancount ее реализует.
    • Многочисленные посты в блогах и личные заметки – например, на LWN.net была статья «Counting beans… with Beancount», и многие личные блоги (перечисленные в разделе «Blog Posts» Awesome Beancount) делятся опытом и советами. Это помогает накапливать знания и привлекать новых пользователей.
    • Доклады и презентации: Beancount был представлен на встречах и конференциях (например, доклад на PyMunich 2018 о управлении финансами с помощью Python/Beancount). Такие доклады знакомят инструмент с более широкой аудиторией и часто вызывают интерес на форумах, таких как Hacker News.
  • Заметные связанные проекты: Помимо Fava, некоторые другие проекты, связанные с Beancount, имеют свои собственные сообщества:

    • Сайт Plain Text Accounting – поддерживаемый Саймоном Майклом, он агрегирует информацию обо всех подобных инструментах и имеет форум, где люди делятся опытом использования различных инструментов, включая Beancount.
    • Интеграция с финансовыми инструментами: Некоторые пользователи интегрируют Beancount с инструментами бизнес-аналитики или базами данных. Например, одна ветка Google Groups подробно описывает использование PostgreSQL с данными Beancount через пользовательские функции. Хотя это не является мейнстримом, это показывает экспериментальный дух сообщества в расширении возможностей Beancount (например, для обработки очень больших наборов данных или сложных запросов, выходящих за рамки встроенных).

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

Последние разработки и предстоящие функции

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

  • Выпуск Beancount 3.0 (2024): После долгого периода, когда Beancount 2.x был стандартом, версия 3 была официально выпущена в середине 2024 года. Это стало важной вехой, поскольку v3 представляет собой упрощение и модернизацию кодовой базы. Мартин Бле (Martin Blais) видел v3 как возможность «перестроить и упростить» систему еще больше. Хотя изначально предполагалось, что это будет масштабная переработка, на практике обновление для пользователей не было слишком разрушительным. Основные изменения произошли под капотом: новый парсер, некоторые улучшения производительности и выделение необязательных компонентов из ядра. Выпуск осуществлялся постепенно (v3 находилась в бета-версии с 2022 года, но к июлю 2024 года стала рекомендованной стабильной версией). Пользователи, такие как Сиддхант Гоэл (Siddhant Goel), сообщали, что миграция с 2.x на 3.x была «в основном беспроблемной» с минимальными изменениями в рабочем процессе.

  • Модуляризация – инструменты перенесены в отдельные пакеты: Одним из значительных изменений в Beancount 3 стало выделение многих инструментов, которые ранее находились в монолитном репозитории, в отдельные пакеты. Например, bean-query теперь предоставляется пакетом beanquery, а beancount.ingest был заменен пакетом beangulp. Команды, такие как bean-extract и bean-identify (для импорта), были удалены из ядра Beancount. Вместо этого, философия заключается в использовании автономных скриптов для импорта. Это означает, что при обновлении до v3 вам нужно будет установить beangulp и запускать скрипты импортера (каждый импортер — это, по сути, небольшая программа), вместо использования центрального файла конфигурации bean-extract. Аналогично, запросы выполняются через beanquery, который может быть установлен и обновлен независимо от ядра Beancount. Этот модульный подход был разработан для упрощения обслуживания и поощрения вклада сообщества. Он также уменьшил размер ядра Beancount, так что ядро теперь сосредоточено исключительно на парсинге и бухгалтерской логике, в то время как вспомогательные функции могут развиваться отдельно. С точки зрения пользователя, после обновления необходимо скорректировать команды (например, использовать bean-query из beanquery, или использовать Fava, которая в любом случае абстрагирует это). Журнал изменений Fava явно отмечает эти изменения: Fava теперь зависит от beanquery и beangulp, и она по-разному обрабатывает рабочие процессы импорта для Beancount 3 по сравнению с Beancount 2.

  • Улучшения производительности: Производительность была одной из мотиваций для пересмотра дизайна Beancount. План v3 (изложенный в документе Мартина «Цели V3») включал оптимизацию парсера и, возможно, ускорение процесса загрузки с меньшим потреблением памяти. К 2025 году некоторые из этих улучшений реализованы. По отзывам, пользователи с очень большими гроссбухами (десятки тысяч транзакций или множество сделок с акциями) сообщают о лучшей производительности с последней версией. Например, пользователь, работающий с «микроинвестиционными транзакциями», который сталкивался с проблемами производительности, отметил эти опасения в Google Group – такого рода обратная связь, вероятно, повлияла на v3. Новый парсер более эффективен и написан более понятно, что может быть расширено в будущем. Кроме того, Fava 1.29 перешла на более эффективный механизм отслеживания файлов (используя библиотеку watchfiles) для улучшения отзывчивости при изменении гроссбуха. В будущем сообщество может рассмотреть инкрементальный парсинг (повторная обработка только измененных частей файла вместо всего), чтобы быстрее обрабатывать большие гроссбухи – это упоминалось в документации как идея «сервера Beancount / инкрементального учета».

  • Улучшения отслеживания инвестиций: Продолжается работа по улучшению отчетности по инвестициям и портфелям. Например, подробно обсуждалась обработка средней себестоимости по сравнению с FIFO. Хотя Beancount обеспечивает сопоставление партий, некоторые пользователи предпочитают среднюю себестоимость для определенных юрисдикций. Существует предложение и обсуждение о том, как сделать учет себестоимости более гибким (возможно, через плагин или опцию). К 2025 году встроенного переключателя для средней себестоимости нет, но основа в v3 (переработка учета) облегчает реализацию этого для плагинов. Был выпущен плагин сообщества «Gains Minimizer», который может предлагать, какие партии продать для минимизации налогов, демонстрируя тип продвинутых инструментов, создаваемых вокруг инвестиций. Fava также добавила функции, такие как расширение сводки портфеля (с расчетом нормы доходности). Что касается предстоящих функций, можно ожидать большего в этой области: возможно, автоматические предложения по ребалансировке портфеля или анализ рисков, вероятно, в виде внешних инструментов, которые считывают данные Beancount (поскольку все данные там есть).

  • Новые плагины и расширения: Экосистема плагинов постоянно растет. Среди недавних заметных дополнений:

    • Инструменты для составления бюджетных отчетов – например, простой CLI-отчетчик бюджета, если пользователь не использует UI Fava.
    • Шифрование и безопасность – была представлена настройка fava-encrypt, позволяющая размещать Fava онлайн с зашифрованным гроссбухом в состоянии покоя, что решает проблему самостоятельного хостинга ваших финансов.
    • Плагины для улучшения удобства использования – такие как autobean-format (новый форматер, который может обрабатывать больше пограничных случаев путем парсинга и перепечатки файла), и интеграция beancheck в редакторы (flymake для Emacs).

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

  • Потенциальные предстоящие функции: Основываясь на обсуждениях в трекере задач и списке рассылки, на горизонте есть несколько идей (хотя и не гарантированных):

    • Разрешение времени: В настоящее время Beancount отслеживает только даты (без временных меток) для транзакций. Возникали вопросы о добавлении времени (для сделок с акциями или упорядочивания транзакций в один день). Мартин Бле явно решил, что временные метки внутри дня выходят за рамки, чтобы сохранить простоту. Это вряд ли изменится в ближайшее время – поэтому предстоящие версии, вероятно, не будут добавлять разрешение времени, придерживаясь позиции, что если вам нужно время, вы включаете его в описание или счет.
    • Расширенное редактирование в GUI: Fava постоянно улучшает свои возможности редактирования. Возможен более полнофункциональный веб-редактор (с автоподсказками, возможно, с вводом новых транзакций через формы). Была заложена основа для использования tree-sitter в редакторе Fava. Мы можем увидеть, как Fava станет не просто просмотрщиком, но и более мощным редактором, уменьшая необходимость открывать текстовый редактор для многих задач.
    • Улучшенная поддержка нескольких гроссбухов: Некоторые пользователи ведут несколько файлов Beancount (для разных сущностей или для разделения личных и деловых финансов). В настоящее время включение файлов возможно, но имеет ограничения (плагины во включенных файлах и т.д.). Недавно был создан плагин autobean.include для безопасного включения внешних гроссбухов. В будущем мы можем увидеть первоклассную поддержку многофайловых настроек – возможно, концепцию «проекта» Beancount с несколькими файлами (на это намекают такие функции, как настройка beancount.mainBeanFile в расширении VSCode). Это поможет тем, кто ведет учет для нескольких сущностей или хочет модулировать свой гроссбух.
    • Вычисления в реальном времени или инкрементальные вычисления: По мере роста гроссбухов, способность быстро пересчитывать отчеты становится важной. Существует идея сервера Beancount, который постоянно работает и обновляет результаты по мере изменения транзакций. Это может проявиться как оптимизация в Fava или как демон, к которому могут обращаться плагины редактора. Возможно, будущий выпуск Fava будет использовать постоянно работающий процесс Beancount, чтобы сделать пользовательский интерфейс более отзывчивым для огромных гроссбухов.
    • Учет фондов / Функции для некоммерческих организаций: Было предложение по улучшению, касающееся учета фондов в Beancount. Некоммерческие организации имеют потребности в учете (ограниченные против неограниченных фондов), которые потенциально могут быть смоделированы с помощью иерархии тегов или счетов Beancount. Обсуждение пока не привело к встроенным функциям, но если больше некоммерческих организаций начнут использовать Beancount, это может стимулировать появление новых возможностей (возможно, просто документированные лучшие практики или плагины для отслеживания остатков фондов).
  • Долгосрочная перспектива: Мартин Бле намекнул, что видит будущее Beancount в превращении ядра в более мощный движок и переносе большей части функциональности в плагины. Это согласуется с тем, что мы видим (моду

Управление дебиторской задолженностью в Beancount

· 3 минуты чтения
Mike Thrift
Mike Thrift
Marketing Manager

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

Понимание дебиторской задолженности в Beancount:

2024-02-17-navigating-receivables-beancount-guide

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

2023-10-31 * "Amazon.com" "[Return] Watch Strap"
Liabilities:CreditCard:Chase -12.00 USD
Assets:Receivables

Управление возвратами:

После обработки возврата и получения денег записывается еще одна транзакция для обнуления баланса по дебиторской задолженности. Это гарантирует, что ваши счета отражают возврат денег в ваше распоряжение:

2023-11-01 * "Amazon.com" "[Refund] Watch Strap"
Liabilities:CreditCard:Chase 12.00 USD
Assets:Receivables

Полный цикл транзакций:

Полная входящая и исходящая транзакция, включающая дебиторскую задолженность, объединяет обе вышеуказанные транзакции и демонстрируется следующим образом, показывая сбалансированный счет после возмещения:

2023-10-31 * "Amazon.com" "[Return] Watch Strap"
Liabilities:CreditCard:Chase -12.00 USD
Assets:Receivables

2023-11-01 * "Amazon.com" "[Refund] Watch Strap"
Liabilities:CreditCard:Chase 12.00 USD
Assets:Receivables

Обработка неразрешенных транзакций:

Для транзакций, по которым возврат или погашение еще не получены, Beancount использует тег #UNRESOLVED. Этот тег помогает идентифицировать и отслеживать суммы, которые все еще находятся в ожидании. Например:

2023-10-31 * "John Doe" "Lending Money" #UNRESOLVED
Liabilities:CreditCard:Chase -100.00 USD
Assets:Receivables

Сосредоточившись на транзакциях, помеченных как #UNRESOLVED, вы можете быстро определить, какие суммы еще предстоит урегулировать.

Поддержание нулевого баланса:

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

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

2023-10-31 * "Amazon.com" "[Return] Watch Strap"
Liabilities:CreditCard:Chase -12.00 USD
Assets:Receivables

2023-11-01 * "Amazon.com" "[Refund] Watch Strap"
Liabilities:CreditCard:Chase 12.00 USD
Assets:Receivables

2023-10-31 * "John Doe" "Lending Money" #UNRESOLVED
Liabilities:CreditCard:Chase -100.00 USD
Assets:Receivables

Недействительная бухгалтерская книга — это та, где транзакция приводит к тому, что счет дебиторской задолженности не обнуляется, что требует использования тега #UNRESOLVED для исправления.

Заключение

Управление дебиторской задолженностью в Beancount не должно быть сложным. Имея четкое представление о том, как записывать транзакции, управлять возвратами и следить за неразрешенными транзакциями, вы можете вести точные и надежные финансовые записи. Принятие структурированного подхода Beancount к управлению дебиторской задолженностью не только упрощает ваш финансовый учет, но и приносит душевное спокойствие, зная, что каждая копейка учтена. Так почему бы не использовать мощь Beancount, чтобы сделать ваше финансовое управление таким же гладким

Деконструкция реестра Beancount: Пример для бизнес-учета

· 2 минуты чтения
Mike Thrift
Mike Thrift
Marketing Manager

В сегодняшнем посте мы подробно разберем реестр Beancount для бизнеса, что поможет вам понять тонкости этой системы учета двойной записи в виде обычного текста.

Деконструкция реестра Beancount: Пример для бизнес-учета

Начнем с кода:

2023-05-22-business-template

1970-01-01 open Assets:Bank:Mercury
1970-01-01 open Assets:Crypto

1970-01-01 open Equity:Bank:Chase

1970-01-01 open Income:Stripe
1970-01-01 open Income:Crypto:ETH

1970-01-01 open Expenses:COGS
1970-01-01 open Expenses:COGS:Contabo
1970-01-01 open Expenses:COGS:AmazonWebServices

1970-01-01 open Expenses:BusinessExpenses
1970-01-01 open Expenses:BusinessExpenses:ChatGPT

2023-05-14 * "CONTABO.COM" "Mercury Checking ••1234"
Expenses:COGS:Contabo 17.49 USD
Assets:Bank:Mercury -17.49 USD

2023-05-11 * "Amazon Web Services" "Mercury Checking ••1234"
Expenses:COGS:AmazonWebServices 14490.33 USD
Assets:Bank:Mercury -14490.33 USD

2023-03-01 * "STRIPE" "Mercury Checking ••1234"
Income:Stripe -21230.75 USD
Assets:Bank:Mercury 21230.75 USD

2023-05-18 * "customer_182734" "0x5190E84918FD67706A9DFDb337d5744dF4EE5f3f"
Assets:Crypto -19 ETH {1,856.20 USD}
Income:Crypto:ETH 19 ETH @@ 35267.8 USD

Понимание кода

  1. Открытие счетов: Код начинается с открытия ряда счетов 01.01.1970. Они включают в себя комбинацию счетов активов (Assets:Bank:Mercury и Assets:Crypto), счета капитала (Equity:Bank:Chase), счетов доходов (Income:Stripe и Income:Crypto:ETH) и счетов расходов (Expenses:COGS, Expenses:COGS:AmazonWebServices, Expenses:BusinessExpenses и Expenses:BusinessExpenses:ChatGPT).

  2. Транзакции: Затем код переходит к записи ряда транзакций в период с 01.03.2023 по 18.05.2023.

    • Транзакция от 14.05.2023 представляет собой платеж в размере $17.49 в CONTABO.COM со счета Mercury Checking ••1234. Это записывается как расход (Expenses:COGS:Contabo) и соответствующее списание со счета Assets:Bank:Mercury.

    • Аналогично, транзакция от 11.05.2023 представляет собой платеж в размере $14490.33 в Amazon Web Services с того же банковского счета. Это регистрируется под Expenses:COGS:AmazonWebServices.

    • Транзакция от 01.03.2023 показывает доход от STRIPE, зачисленный на счет Mercury Checking ••1234, на общую сумму $21230.75. Это записывается как доход (Income:Stripe) и пополнение банковского счета (Assets:Bank:Mercury).

    • Последняя транзакция от 18.05.2023 представляет собой криптовалютную транзакцию, включающую 19 ETH от клиента. Это отслеживается по счетам Assets:Crypto и Income:Crypto:ETH. {1,856.20 USD} показывает цену ETH на момент транзакции, а @@ 35267.8 USD указывает общую стоимость транзакции 19 ETH.

    Во всех транзакциях соблюдается принцип двойной записи, что гарантирует постоянное выполнение уравнения Активы = Обязательства + Капитал.

Заключительные мысли

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

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