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

6 записей с тегом "двойная запись"

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

Экосистема 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 (или любой системы бухгалтерского учета по двойной записи). Но не волнуйтесь, если вы новичок – мы разберем все пошагово!

Дебиторская и кредиторская задолженность: Основы

2023-05-30-receiveable-and-payable

В бухгалтерском учете «дебиторская задолженность» и «кредиторская задолженность» — это термины, используемые для отслеживания денежных средств, которые должны быть получены или выплачены. «Дебиторская задолженность» относится к деньгам, которые другие должны вам, в то время как «кредиторская задолженность» относится к деньгам, которые вы должны другим.

Рассмотрим пример:

  1. Дебиторская задолженность (ДЗ): Предположим, у вас есть книжный магазин, и покупатель приобретает книгу в кредит. Деньги, которые он вам должен за книгу, являются дебиторской задолженностью.

  2. Кредиторская задолженность (КЗ): С другой стороны, представьте, что вы заказываете новый комплект книг у издателя, но не оплачиваете их сразу. Деньги, которые вы должны издателю, являются кредиторской задолженностью.

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

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

Структура вашего файла Beancount может быть настолько простой или сложной, насколько вам это необходимо. Для дебиторской и кредиторской задолженности вы, вероятно, захотите создать отдельные счета в разделах «Активы» и «Обязательства».

Вот простой пример:

1970-01-01 open Assets:AccountsReceivable
1970-01-01 open Liabilities:AccountsPayable

Отслеживание транзакций

Сторона получателя

После настройки счетов вы можете отслеживать транзакции, связанные с дебиторской и кредиторской задолженностью. Рассмотрим пример:

2023-05-29 * "Sold books to customer on credit"
Assets:AccountsReceivable 100 USD
Income:BookSales -100 USD

Здесь вы добавляете 100 долларов к своей дебиторской задолженности, потому что клиент должен вам эту сумму. Одновременно вы уменьшаете свой доход на ту же сумму, чтобы сохранить баланс (поскольку вы еще не получили деньги).

Когда клиент в конечном итоге заплатит, вы запишете это так:

2023-06-01 * "Received payment from customer"
Assets:Bank:Savings 100 USD
Assets:AccountsReceivable -100 USD

Сторона плательщика

Тот же принцип применяется и к кредиторской задолженности, но с обратными знаками:

2023-05-30 * "Bought books from publisher on credit"
Liabilities:AccountsPayable 200 USD
Expenses:BookPurchases -200 USD

И когда вы погашаете свой долг:

2023-06-02 * "Paid off debt to publisher"
Liabilities:AccountsPayable -200 USD
Assets:Bank:Checking 200 USD

Заключение

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

Это только отправная точка, и 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.

Шпаргалка Beancount

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

Пример названия счета

Assets:US:BofA:Checking

cheatsheet-en

Типы счетов

Assets          +
Liabilities -
Income -
Expenses +
Equity -

Валюты и товары

CNY, EUR, CAD, AUD
GOOG, AAPL, RBF1005
HOME_MAYST, AIRMILES
HOURS

Директивы

Общий синтаксис

YYYY-MM-DD <Directive> <Parameters...>

Открытие и закрытие счетов

2001-05-29 open Expenses:Restaurant
2001-05-29 open Assets:Checking USD,EUR ; Ограничения по валюте

2015-04-23 close Assets:Checking

Объявление валют/товаров (Необязательно)

1998-07-22 commodity AAPL
name: "Apple Computer Inc."

Цены

2015-04-30 price AAPL   125.15 CNY
2015-05-30 price AAPL 130.28 CNY

Заметки

2013-03-20 note Assets:Checking "Позвонил, чтобы узнать о скидке"

Документы

2013-03-20 document Assets:Checking "путь/к/выписке.pdf"

Транзакции

2015-05-30 * "Некоторое описание этой транзакции"
Liabilities:CreditCard -101.23 CNY
Expenses:Restaurant 101.23 CNY

2015-05-30 ! "Кабельная компания" "Счет за телефон" #tag ˆlink
id: "TW378743437" ; Метаданные
Expenses:Home:Phone 87.45 CNY
Assets:Checking ; Вы можете опустить одну сумму

Проводки

  ...    123.45 USD                             Простая
... 10 GOOG {502.12 USD} С себестоимостью за единицу
... 10 GOOG {{5021.20 USD}} С общей себестоимостью
... 10 GOOG {502.12 # 9.95 USD} С обеими себестоимостями
... 1000.00 USD @ 1.10 CAD С ценой за единицу
... 10 GOOG {502.12 USD} @ 1.10 CAD С себестоимостью и ценой
... 10 GOOG {502.12 USD, 2014-05-12} С датой
! ... 123.45 USD ... С флагом

Утверждения баланса и выравнивание

; Утверждает сумму только для указанной валюты:
2015-06-01 balance Liabilities:CreditCard -634.30 CNY

; Автоматическая вставка транзакции для выполнения следующего утверждения:
2015-06-01pad Assets:Checking Equity:Opening-Balances

События

2015-06-01 event "местоположение" "Нью-Йорк, США"
2015-06-30 event "адрес" "123 Мэй Стрит"

Опции

option "заголовок" "Моя личная бухгалтерская книга"

Прочее

pushtag #trip-to-peru
...
poptag #trip-to-peru
; Комментарии начинаются с точки с запятой

Магия учета в виде простого текста с Beancount

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

Откройте для себя магию учета в виде простого текста с Beancount

Beancount.io banner

Введение

2023-04-18-introduction-to-beancount

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

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

Что такое Beancount?

Beancount — это система учета в виде простого текста с открытым исходным кодом, созданная Мартином Бле. Вдохновленный системой Ledger Джона Уигли, Beancount стремится предоставить надежный и проверенный метод управления личными финансами и финансами малого бизнеса с использованием текстовых файлов. С Beancount вы можете легко отслеживать свои доходы, расходы, инвестиции и многое другое.

Почему Beancount?

Учет в виде простого текста предлагает несколько преимуществ по сравнению с традиционными системами учета на основе электронных таблиц или программного обеспечения:

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

Основные концепции Beancount

Для эффективного использования Beancount крайне важно понимать его основные концепции:

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

Начало работы с Beancount

Чтобы начать использовать Beancount, выполните следующие простые шаги:

  • Установите Beancount: Установите Beancount на свою систему, используя предоставленные инструкции по установке для вашей операционной системы.
  • Создайте свой файл Beancount: Создайте новый текстовый файл с расширением .beancount (например, my_finances.beancount).
  • Определите свои счета: Используйте директиву "open" для определения счетов, которые вы будете использовать в своих транзакциях.
  • Записывайте транзакции: Используйте директиву "txn" для записи ваших финансовых транзакций.

Или просто зарегистрируйтесь на https://beancount.io. Вот несколько примеров учета в виде простого текста:

Пример 1: Базовая транзакция

2023-04-01 open Assets:Checking
2023-04-01 open Expenses:Groceries

2023-04-10 txn "Grocery Store" "Buying groceries"
Assets:Checking -50.00 USD
Expenses:Groceries 50.00 USD

В этом примере мы открываем два счета: Assets:Checking (Активы:Текущий) и Expenses:Groceries (Расходы:Продукты). 10 апреля 2023 года мы записываем транзакцию на покупку продуктов на сумму $50. Транзакция уменьшает баланс Assets:Checking на $50 (дебет) и увеличивает баланс Expenses:Groceries на $50 (кредит).

Пример 2: Транзакция дохода и расхода

2023-04-01 open Assets:Checking
2023-04-01 open Income:Salary
2023-04-01 open Expenses:Rent

2023-04-05 txn "Employer" "Salary payment"
Assets:Checking 2000.00 USD
Income:Salary -2000.00 USD

2023-04-06 txn "Landlord" "Monthly rent payment"
Assets:Checking -1000.00 USD
Expenses:Rent 1000.00 USD

В этом примере мы открываем три счета: Assets:Checking (Активы:Текущий), Income:Salary (Доход:Зарплата) и Expenses:Rent (Расходы:Аренда). 5 апреля 2023 года мы записываем транзакцию по выплате зарплаты в размере $2000. Транзакция увеличивает баланс Assets:Checking на $2000 (кредит) и уменьшает баланс Income:Salary на $2000 (дебет). 6 апреля 2023 года мы записываем транзакцию по оплате аренды в размере $1000. Транзакция уменьшает баланс Assets:Checking на $1000 (дебет) и увеличивает баланс Expenses:Rent на $1000 (кредит).

Пример 3: Перевод между счетами

2023-04-01 open Assets:Checking
2023-04-01 open Assets:Savings

2023-04-15 txn "Bank" "Transfer from Checking to Savings"
Assets:Checking -500.00 USD
Assets:Savings 500.00 USD

В этом примере мы открываем два счета: Assets:Checking (Активы:Текущий) и Assets:Savings (Активы:Сбережения). 15 апреля 2023 года мы записываем транзакцию по переводу $500 с текущего счета на сберегательный. Транзакция уменьшает баланс Assets:Checking на $500 (дебет) и увеличивает баланс Assets:Savings на $500 (кредит).

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

Генерация отчетов и анализ данных

Beancount поставляется с набором мощных инструментов для генерации финансовых отчетов, включая бухгалтерские балансы, отчеты о прибылях и убытках и многое другое. Вы также можете использовать Fava, веб-интерфейс для Beancount, для визуализации и взаимодействия с вашими финансовыми данными. https://beancount.io построен на основе Fava с лицензией MIT.

Заключение

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

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

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

Введение в Beancount.io

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

Почему современный бухгалтерский учет важен

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

2019-09-07-introduction-to-beancount

Expenses

Income Statement

Balance Sheet

Двойная запись: Основа точности

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

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

1970-01-01 open Income:BeancountCorp
1970-01-01 open Assets:Cash
1970-01-01 open Expenses:Food
1970-01-01 open Assets:Receivables:Alice
1970-01-01 open Assets:Receivables:Bob
1970-01-01 open Assets:Receivables:Charlie
1970-01-01 open Liabilities:CreditCard

2019-05-31 * "BeancountCorp" "Salary of May 15th to May 31st"
Income:BeancountCorp -888 USD
Assets:Cash 888 USD

2019-07-12 * "Popeyes chicken sandwiches" "dinner with Alice, Bob, and Charlie"
Expenses:Food 20 USD
Assets:Receivables:Alice 20 USD
Assets:Receivables:Bob 20 USD
Assets:Receivables:Charlie 20 USD
Liabilities:CreditCard -80 USD

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

Assets = Liabilities + Equity(aka Net Assets)

Мы использовали синтаксис Beancount от Мартина Блейса и веб-проект Fava от Якоба Шнитцера для создания этого веб-сайта. И он предупредит вас, если какая-либо операция не будет суммироваться до нуля.

Error Alert

Теперь вы понимаете, как мы обеспечиваем правильность учета. Но вы можете спросить, что такое эти "счета"?

Понимание счетов: Аналогия с ведром воды

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

Beancount.io предлагает пять типов счетов.

  1. Доходы — Их сумма всегда отрицательна или находится в дебете. Это потому, что вы зарабатываете деньги, и затем деньги дебетуются со счета "Доходы" и кредитуются на ваши "Активы".
  2. Расходы — Их сумма всегда положительна или находится в кредите. Это потому, что вы тратите деньги, и деньги перетекают из "Активов" или "Обязательств" в "Расходы".
  3. Обязательства — Их сумма положительна или равна нулю. Ваши обязательства по кредитной карте являются хорошим примером, которые растут и падают циклически.
  4. Активы — Их сумма положительна или равна нулю. Ваши наличные деньги или дома всегда имеют определенную стоимость.
  5. Капитал — Ваши чистые активы. Система рассчитает это автоматически для вас. Капитал = Активы - Обязательства и это отражает ваше благосостояние.

Теперь вы можете открыть свои настраиваемые счета с помощью указанных выше ключевых слов:

1970-01-01 open Assets:Cash
1970-01-01 open Assets:Stock:Robinhood
1970-01-01 open Assets:Crypto:Coinbase
1970-01-01 open Expenses:Transportation:Taxi
1970-01-01 open Equity:OpeningBalance

Расширенное отслеживание инвестиций с помощью товаров

Beancount.io отлично справляется с отслеживанием разнообразных инвестиций, от акций до криптовалют. Давайте рассмотрим, как он обрабатывает сложные инвестиционные сценарии. Например, вот как вы бы записали покупку 10 биткойнов по $100 каждый в 2014 году:

2014-08-08 * "Buy 10 Bitcoin"
Assets:Trade:Cash -1000.00 USD
Assets:Trade:Positions 10 BTC {100.00 USD}

А затем, три года спустя, вы продаете их (изначально с затратами в $100 за единицу, аннотированными {100.00 USD}) по цене $10 000 за единицу, аннотированной @ 10,000.00 USD.

2017-12-12 * "Sell 2 Bitcoin"
Assets:Trade:Positions -2 BTC {100.00 USD} @ 10,000.00 USD
Assets:Trade:Cash 20,000.00 USD
Income:Trade:PnL -19,800.00 USD

Или та же операция с @@ 20,000.00 USD означает, что по цене $20 000 в общей сложности.

2017-12-12 * "Sell 2 Bitcoin"
Assets:Trade:Positions -2 BTC {100.00 USD} @@ 20,000.00 USD
Assets:Trade:Cash 20,000.00 USD
Income:Trade:PnL -19,800.00 USD

Сумма всех частей операции, включая -2 BTC {100.00 USD}, по-прежнему, как всегда, равна нулю.

Тег стоимости {100.00 USD} важен, потому что вы могли приобрести тот же товар по разным ценам.

100 BTC {10.00 USD, 2012-08-08}
10 BTC {100.00 USD, 2014-08-08}

Если вы хотите упростить процесс, вы можете настроить счет в начале с использованием FIFO или LIFO. FIFO означает "первым пришел, первым ушел", а LIFO – "последним пришел, первым ушел". В США IRS использует FIFO для расчета вашей прибыли/убытка и соответствующего налогообложения.

1970-01-01 open Assets:Trade:Positions "FIFO"

И затем, когда вы продаете его в сокращенной форме, например -2 BTC {}, Beancount автоматически применит стратегию FIFO и продаст самый старый товар.

Начало работы с Beancount.io

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

Начните свой финансовый путь с Beancount.io – Бесплатно в течение нашего акционного периода!