Основни вградени плъгини за 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 * "Кафене"
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
; Това би предизвикало грешка без декларация за стока:
2026-01-02 * "Покупка на Биткойн"
Assets:Crypto 0.5 BTC @ 45000 USD
Assets:Cash -22500.00 USD
Кога да го използвате: Препоръчва се за поддържане на стриктно проследяване на стоки и предотвратяване на печатни грешки в борсовите тикери.
check_average_cost - Валидиране на цената на придобиване
Какво прави: Проверява дали цената на придобиване (cost basis) е правилно запазена в трансакциите, особено при използване на осчетоводяване по средна цена.
Защо да го използвате: Гарантира, че отчитането на разходите ви остава точно за данъчни отчети и изчисления на капиталови печалби.
Кога да го използвате: Критично важно за инвестиционни портфейли и всеки сценарий, при който точното проследяване на себестойността е от значение.
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
Кога да го използвате: Когато искате да поддържате стриктно йерархично счетоводство с ясна категоризация.