Основні вбудовані плагіни Beancount, які варто знати
Сила 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 * "Coffee shop"
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 * "Buy AAPL shares"
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 * "Rent payment"
Expenses:Rent 1200.00 USD
Assets:Checking -1200.00 USD
; Це викличе помилку:
2026-01-02 * "Rent payment"
Expenses:Rent 1200.00 USD
Assets:Checking -1200.00 USD
Коли використовувати: Рекомендується завжди, о собливо якщо ви імпортуєте дані з банківських виписок або використовуєте кілька джерел даних.
check_commodity — Валідація оголошення активів
Що він робить: Гарантує, що всі активи (commodities), які використовуються у вашому леджері, мають відповідні директиви Commodity.
Навіщо використовувати: Забезпечує обов'язкове явне оголошення активів, допомагаючи підтримувати чистий список активів та валют.
Приклад:
plugin "beancount.plugins.check_commodity"
2015-01-01 commodity USD
2020-01-01 commodity AAPL
; Це викличе помилку без оголошення активу:
2026-01-02 * "Buy 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 * "Close entire AAPL position" #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 * "Grocery shopping"
Expenses:Food 50.00 USD ; Помилка: проводка має бути на кінцевий рахунок
Assets:Cash -50.00 USD
; Правильний спосіб:
2026-01-02 * "Grocery shopping"
Expenses:Food:Groceries 50.00 USD ; Правильно: проводка на кінцевий рахунок
Assets:Cash -50.00 USD
Коли використовувати: Якщо ви хочете підтримувати сувору ієрархію обліку з чіткою категоризацією.
nounused — Виявлення невикористаних рахунків
Що робить: Визначає рахунки, які були відкриті, але ніколи не використовувалися в транзакціях.
Навіщо використовувати: Допомагає впорядкувати оголошення рахунків та виявити потенційні друкарські помилки або покинуті рахунки.
Коли використовувати: Періодично, для аудиту та очищення структури ваших рахунків.
onecommodity — Один актив на рахунок
Що робить: Встановлює правило, за яким кожен рахунок може містити лише один тип активу (commodity).
Навіщо використовувати: Запобігає змішуванню різних активів на одному рахунку, що зазвичай вважається найкращою практикою бухгалтерського обліку.
Приклад:
plugin "beancount.plugins.onecommodity"
2026-01-02 * "Buy stocks"
Assets:Investments 10 AAPL @ 150 USD
Assets:Cash -1500.00 USD
; Це спричинить помилку:
2026-01-03 * "Buy more stocks"
Assets:Investments 5 GOOGL @ 140 USD ; Помилка: інший актив
Assets:Cash -700.00 USD
Коли використовувати: Якщо ви віддаєте перевагу суворому розділенню рахунків (один рахунок на кожну акцію/актив).