Перейти к контенту

Основные встроенные плагины Beancount, которые стоит знать

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

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

Что такое плагины Beancount?

Плагины Beancount — это модули Python, которые обрабатывают записи вашего журнала для добавления возможностей автоматизации, валидации или трансформации. Они запускаются на этапе загрузки файла журнала и могут:

  • Автоматизировать повторяющиеся задачи (например, создание объявлений счетов)
  • Проверять целостность данных (например, поиск дубликатов транзакций)
  • Трансформировать записи (например, генерировать записи цен на основе транзакций)
  • Принудительно применять правила учета (например, один актив на счет)

Как использовать плагины

Чтобы включить плагин в файле Beancount, добавьте директиву plugin в начале вашего журнала:

plugin "beancount.plugins.auto_accounts"
plugin "beancount.plugins.implicit_prices"

Некоторые плагины принимают параметры конфигурации:

plugin "beancount.plugins.check_commodity" "USD,EUR,CAD"

Категории встроенных плагинов

Встроенные плагины Beancount делятся на четыре основные категории:

1. Плагины автоматизации

2. Плагины валидации

3. Плагины трансформации

4. Мета-плагины


1. Плагины автоматизации

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

auto_accounts — Автоматическое объявление счетов

Что он делает: Автоматически вставляет директивы Open для счетов, которые фигурируют в транзакциях, но не были объявлены явно.

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

Пример:

plugin "beancount.plugins.auto_accounts"

2026-01-01 * "Кофейня"
Expenses:Food:Coffee 4.50 USD
Assets:Cash -4.50 USD

Без плагина вам пришлось бы вручную добавить:

2025-12-01 open Expenses:Food:Coffee
2025-12-01 open Assets:Cash

Когда использовать: Идеально подходит для начинающих или тех, кто хочет сделать журнал менее громоздким. Однако явное объявление счетов помогает отлавливать опечатки.


close_tree — Автоматическое закрытие иерархии счетов

Что он делает: При закрытии родительского счета этот плагин автоматически закрывает все его дочерние счета.

Зачем его использовать: Поддерживает согласованность иерархии счетов. Если вы закрываете Assets:Investments, все подсчета, такие как Assets:Investments:Stocks и Assets:Investments:Bonds, будут закрыты автоматически.

Пример:

plugin "beancount.plugins.close_tree"

2025-06-30 close Assets:Investments

; Эти счета будут закрыты автоматически:
; Assets:Investments:Stocks
; Assets:Investments:Bonds
; Assets:Investments:RealEstate

Когда использовать: При реструктуризации иерархии счетов или закрытии целых категорий счетов.


implicit_prices — Автоматическая генерация записей цен

Что он делает: Синтезирует директивы Price из позиций транзакций, которые включают стоимость (@) или общую цену (@@).

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

Пример:

plugin "beancount.plugins.implicit_prices"

2026-01-02 * "Покупка акций AAPL"
Assets:Investments:Stocks 10 AAPL @ 150.00 USD
Assets:Cash -1500.00 USD

Это автоматически генерирует:

2026-01-02 price AAPL  150.00 USD

Когда использовать: Важен для отслеживания инвестиций и мультивалютного учета, когда требуется автоматическая история цен.


2. Плагины валидации

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

noduplicates — Обнаружение дубликатов транзакций

Что он делает: Проверяет, нет ли двух идентичных транзакций, сравнивая хеши данных транзакций.

Зачем его использовать: Предотвращает случайные дубликаты, особенно при импорте транзакций из нескольких источников.

Пример:

plugin "beancount.plugins.noduplicates"

2026-01-02 * "Оплата аренды"
Expenses:Rent 1200.00 USD
Assets:Checking -1200.00 USD

; Это вызовет ошибку:
2026-01-02 * "Оплата аренды"
Expenses:Rent 1200.00 USD
Assets:Checking -1200.00 USD

Когда использовать: Рекомендуется всегда, особенно если вы импортируете данные из банковских выписок или используете несколько источников данных.


check_commodity — Проверка объявления активов

Что он делает: Гарантирует, что для всех активов, используемых в вашем журнале, есть соответствующие директивы Commodity.

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

Пример:

plugin "beancount.plugins.check_commodity"

2015-01-01 commodity USD
2020-01-01 commodity AAPL

; Без объявления commodity это вызвало бы ошибку:
2026-01-02 * "Покупка Bitcoin"
Assets:Crypto 0.5 BTC @ 45000 USD
Assets:Cash -22500.00 USD

Когда использовать: Рекомендуется для строгого отслеживания активов и предотвращения опечаток в тикерах.


check_average_cost — Проверка базовой стоимости

Что он делает: Проверяет, что базовая стоимость правильно сохраняется в транзакциях, особенно при использовании учета по средней стоимости.

Зачем использовать: Гарантирует точность учета стоимости для налоговой отчетности и расчета прироста капитала.

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


check_closing — Проверка закрытия позиций

Что он делает: Расширяет метаданные closing в проверки баланса, гарантируя, что позиции равны нулю после закрывающих сделок.

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

Пример:

plugin "beancount.plugins.check_closing"

2026-01-02 * "Закрыть всю позицию AAPL" #closing
Assets:Investments:Stocks -100 AAPL {150.00 USD}
Assets:Cash 15000.00 USD
Income:Investments:Gains -500.00 USD

Тег #closing сообщает плагину о необходимости проверить, что ваша позиция по AAPL равна нулю после этой транзакции.

Когда использовать: При продаже всей позиции, чтобы убедиться, что на счету ничего не осталось.


coherent_cost — Проверка согласованности стоимости

Что он делает: Проверяет, что валюты не используются непоследовательно — как с аннотациями стоимости, так и без них.

Зачем использовать: Предотвращает смешивание простых валют (например, 100 USD) с валютами, имеющими указанную стоимость (например, 100 USD {1.2 CAD}), что может привести к ошибкам в учете.

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


leafonly — Использование только конечных счетов

Что он делает: Гарантирует, что проводки записываются только на конечные счета (счета, не имеющие дочерних подразделов).

Зачем использовать: Обеспечивает строгую иерархию счетов, при которой суммирующие счета, такие как Expenses:Food, не имеют прямых проводок, а используются только их дочерние счета, например Expenses:Food:Groceries и Expenses:Food:Restaurants.

Пример:

plugin "beancount.plugins.leafonly"

; Это вызовет ошибку:
2026-01-02 * "Покупка продуктов"
Expenses:Food 50.00 USD ; Ошибка: нужно использовать конечный счет
Assets:Cash -50.00 USD

; Правильный способ:
2026-01-02 * "Покупка продуктов"
Expenses:Food:Groceries 50.00 USD ; Правильно: проводка на конечный счет
Assets:Cash -50.00 USD

Когда использовать: Когда вы хотите поддерживать строгую структуру учета с четкой категоризацией.


nounused — Поиск неиспользуемых счетов

Что он делает: Выявляет счета, которые были объявлены (открыты), но ни разу не использовались в транзакциях.

Зачем использовать: Помогает навести порядок в списке счетов, выявить опечатки или заброшенные счета.

Когда использовать: Периодически, для аудита и очистки структуры счетов.


onecommodity — Один актив на счет

Что он делает: Требует, чтобы на каждом счете хранился только один тип актива (валюты).

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

Пример:

plugin "beancount.plugins.onecommodity"

2026-01-02 * "Покупка акций"
Assets:Investments 10 AAPL @ 150 USD
Assets:Cash -1500.00 USD

; Это вызовет ошибку:
2026-01-03 * "Покупка других акций"
Assets:Investments 5 GOOGL @ 140 USD ; Ошибка: другой актив на том же счете
Assets:Cash -700.00 USD

Когда использовать: Когда вы предпочитаете строгое разделение активов (один счет на одну акцию/актив).


sellgains — Проверка прибыли от продажи

Что он делает: Сверяет объявленную прибыль от капитала с рассчитанной прибылью от продажи лотов, гарантируя точность расчетов прибыли и убытков.

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

Пример:

plugin "beancount.plugins.sellgains"

2026-01-02 * "Продажа акций AAPL"
Assets:Investments:Stocks -10 AAPL {140.00 USD}
Assets:Cash 1500.00 USD
Income:Investments:Gains -100.00 USD ; Плагин подтвердит правильность этой суммы

Плагин проверит: Выручка от продажи (1500) - Базовая стоимость (1400) = Прибыль (100).

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


unique_prices — Уникальность цен

Что он делает: Гарантирует наличие только одной записи цены для каждого актива на определенную дату.

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

Когда использовать: Рекомендуется при ручном вводе цен или импорте данных из нескольких источников.


3. Плагины трансформации

Эти плагины изменяют или дополняют данные вашей учетной книги полезным образом.

currency_accounts — Валютные торговые счета

Что он делает: Реализует валютные торговые счета для явного отслеживания конвертаций валют (forex).

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

Когда использовать: Когда вам нужно отдельно отслеживать прибыль/убытки от обмена валют или соответствовать специфическим требованиям учета.


commodity_attr — Проверка атрибутов активов

Что он делает: Проверяет, что директивы активов (commodity) содержат обязательные атрибуты (например, export, name и т. д.).

Зачем использовать: Гарантирует, что метаданные ваших активов полны и последовательны.

Когда использовать: Когда вы поддерживаете детальные метаданные активов для отчетности или экспорта данных.


4. Мета-плагины

Эти плагины представляют собой коллекции других плагинов для удобства использования.

auto — все автоматические плагины

Что он делает: Включает коллекцию «автоматических» плагинов одной директивой.

Когда использовать: Быстрая настройка для пользователей, которым нужна максимальная автоматизация при минимальной конфигурации.


pedantic — все плагины валидации

Что он делает: Включает все плагины строгой валидации одновременно.

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

Пример:

plugin "beancount.plugins.pedantic"

; Это эквивалентно включению:
; - check_commodity
; - check_average_cost
; - coherent_cost
; - leafonly
; - noduplicates
; - nounused
; - onecommodity
; - sellgains
; - unique_prices

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


Рекомендуемые конфигурации плагинов

Для начинающих

plugin "beancount.plugins.auto_accounts"
plugin "beancount.plugins.noduplicates"
plugin "beancount.plugins.implicit_prices"

Этот минимальный набор обеспечивает автоматизацию, предотвращая при этом распространенные ошибки.

Для инвесторов

plugin "beancount.plugins.auto_accounts"
plugin "beancount.plugins.implicit_prices"
plugin "beancount.plugins.sellgains"
plugin "beancount.plugins.check_average_cost"
plugin "beancount.plugins.unique_prices"

Ориентирован на отслеживание инвестиций и точность расчета прироста капитала.

Для строгого учета

plugin "beancount.plugins.pedantic"
plugin "beancount.plugins.sellgains"
plugin "beancount.plugins.check_closing"

Максимальная валидация для рабочих сред.

Конфигурация по умолчанию на Beancount.io

На Beancount.io мы по умолчанию включаем плагин auto_accounts во все новые файлы журналов:

plugin "beancount.plugins.auto_accounts"

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


Лучшие практики

  1. Начинайте с малого, добавляйте по мере необходимости: Начните с auto_accounts и noduplicates, а затем добавляйте плагины валидации по мере роста вашего журнала.

  2. Тестируйте плагины по отдельности: При добавлении нескольких плагинов включайте их по одному, чтобы понять их влияние на данные.

  3. Внимательно читайте сообщения об ошибках: Ошибки плагинов часто указывают на реальные проблемы в учете, которые требуют исправления.

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

  5. Сочетайте с кастомными плагинами: Стандартные плагины работают совместно со сторонними плагинами, такими как forecast plugin, для расширения функциональности.


За пределами стандартных плагинов

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

  • fava.plugins.forecast — для прогнозирования повторяющихся транзакций.
  • fava.plugins.link_documents — для привязки транзакций к файлам чеков и квитанций.
  • Кастомные импортеры для CSV-форматов конкретных банков.
  • Специализированные калькуляторы налогов и отчеты.

Изучите экосистему Beancount для поиска дополнительных инструментов.


Заключение

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

  • ✅ Автоматизировать рутинные задачи по ведению бухгалтерии
  • ✅ Выявлять ошибки до того, как они станут проблемой
  • ✅ Поддерживать строгую целостность данных
  • ✅ Формировать точные финансовые отчеты
  • ✅ Сосредоточиться на финансовом анализе, а не на вводе данных

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

Готовы попробовать эти плагины? Перейдите на Beancount.io и начните использовать их в своем файле журнала уже сегодня!


Источники


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

References: