Преминете към основното съдържание

Синтаксис на Езика Beancount

Това предоставя кратка, но изчерпателна справка за синтаксиса на езика Beancount, съчетаваща практическа структура, правила и примери. За повече подробности вижте Кратката справка.

Общ преглед

Beancount е система за счетоводство в обикновен текст с двойно записване. Езикът му е структуриран около три основни градивни елемента:

  • Стоки (валути, акции, точки и т.н.)
  • Сметки (йерархични, категоризирани счетоводни книги)
  • Директиви (датирани записи, отчитащи събития или конфигурация)

Стоки

Стоките винаги се пишат с главни букви, напр. USD, EUR, AAPL, BTC, MILES, HOURS.

Сметки

Сметките са разделени с двоеточия, изписани с главни букви йерархични имена. Те трябва да започват с един от петте типа основни сметки:

ИмеТипТипично съдържаниеПример
Assets+Пари в брой, Банка, ИнвестицииAssets:Checking
Liabilities-Кредитни карти, ЗаемиLiabilities:CreditCard
Income-Заплата, ЛихваIncome:EmployerA
Expenses+Покупки, СметкиExpenses:Food:Dining
Equity-Начални/Крайни салдаEquity:Opening-Balances
  • Компонентите трябва да бъдат с главни букви, разделени с двоеточия (:), без интервали.
  • Разрешени са цифри и тирета в компонентите.
  • Основните имена на сметките могат да бъдат персонализирани чрез опции (вижте по-долу).

Директиви

Директивите са основните изявления във файл на Beancount. Повечето започват с дата, последвана от тип на директивата и аргументи. Те се обработват в хронологичен ред (по дата), а не по реда на файловете.

Общ формат:

YYYY-MM-DD <директива> <аргументи...>

Общи Директиви и Примери

Отваряне и Затваряне на Сметки

2023-01-01 open Assets:Checking USD,EUR  ; По избор посочете разрешените валути
2023-12-31 close Assets:Checking

Деклариране на Стоки

2020-07-22 commodity AAPL
name: "Apple Inc."

Декларации за Цени

2022-04-30 price AAPL 150.00 USD

Бележки и Документи

2022-03-20 note Assets:Checking "Попита за възстановяване на сума"
2022-03-20 document Assets:Checking "statements/2022-03.pdf"

Транзакции

2024-01-05 * "Кафене" "Сутрешно кафе"
Expenses:Food 4.50 USD
Assets:Cash -4.50 USD

2024-01-06 ! "Сметка за телефон" "Месечно плащане" #комунални ^телефон
id: "INV12345" ; Метаданни
Expenses:Utilities 60.00 USD
Assets:Checking

Функции за Публикуване

; С основна цена
Assets:Stocks 1 AAPL {150.00 USD}
; С анотация на цената
Assets:Cash -100 USD @ 1.25 CAD
; С обща цена
Assets:Cash -100 USD @@ 125.00 CAD
; Имплицитен баланс
Assets:Cash -100 USD
Assets:Bank

Потвърждения на Салдо и Подложки

2024-06-01 balance Assets:Checking 1000.00 USD
2024-06-01 pad Assets:Checking Equity:Opening-Balances

Събития

2024-06-01 event "location" "Сан Франциско, Калифорния"

Опции

Задайте конфигурация за целия файл:

option "title" "Моята счетоводна книга"
option "operating_currency" "USD"
option "documents" "docs/"
option "name_assets" "Vermoegen"

Вижте Справка за опциите за повече информация.

Плъгини и Организация на Файлове

plugin "beancount.plugins.module_name"
plugin "beancount.plugins.module_name" "config-string"
include "other/file.beancount"
pushtag #project
; ...
poptag #project

Важни Правила

  • Всички транзакции трябва да бъдат балансирани (сумата от всички публикувания е нула; използва се основната цена, ако има такава).
  • Сметките трябва да бъдат отворени преди употреба; затворените сметки не могат да приемат публикувания.
  • Потвържденията на салдото проверяват само посочената валута и могат да се използват за родителски сметки.
  • Анотациите на цените (@) са информативни и не влияят на балансирането.

Общи Модели

Отваряне на Сметки с Първоначален Баланс

2024-01-01 open Assets:Checking USD
2024-01-01 pad Assets:Checking Equity:Opening-Balances
2024-01-01 balance Assets:Checking 1000.00 USD

Инвестиционна Транзакция

2024-01-01 * "Купуване на акции"
Assets:Broker:Stock 10 AAPL {150.00 USD}
Assets:Broker:Cash -1500.00 USD

Транзакция в Различни Валути

2024-01-01 * "Валутен обмен"
Assets:USD -100.00 USD @ 1.25 CAD
Assets:CAD 125.00 CAD

Коментари

poptag  #пътуване-до-перу
; вградените коментари започват с точка и запетая
* всеки ред, който не започва с валидна директива, също се игнорира безшумно