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

Глоссарий Beancount и учёта в текстовом формате

Простые определения терминов Beancount и учёта в текстовом формате: счета, проводки, себестоимость, методы учёта и другое.

Plain-text accounting заимствует лексику из двойной записи и добавляет несколько собственных слов, специфичных для Beancount. Этот глоссарий определяет термины, которые вы встретите при чтении этих документов или собственного файла книги, с кратким примером там, где он помогает. У каждой статьи своя ссылка, так что вы можете отправить коллеге прямую ссылку на определение.

Счет​

Счёт — это именованная «корзина», отслеживающая один поток ценности, записанная в виде иерархии, разделённой двоеточиями, под одним из пяти корневых типов: Assets, Liabilities, Equity, Income или Expenses. Иерархия — это вся организационная структура ваших книг — Assets:US:BofA:Checking и Expenses:Food:Restaurant сортируются и сворачиваются автоматически. Каждый счёт должен быть объявлен до его использования. Правила именования см. в Синтаксисе языка Beancount.

Начисления​

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

Амортизация​

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

Балансирующая директива​

Проверка баланса — это директива balance, которая утверждает, каким должен быть баланс счёта на начало заданной даты, так что ваша банковская выписка становится автоматической сверкой ваших книг. Если вычисленный баланс отличается больше, чем на допуск проверки, Beancount громко падает с указанием ожидаемой и фактической сумм. Этот допуск равен одной единице последнего десятичного разряда, который вы написали, — 4.27 RGAGX принимает всё от 4.26 до 4.28 — а ~ перед валютой задаёт ваш собственный. Рассыпать по одной проверке на счёт на каждую выписку — самый дешёвый способ поддерживать доверие к книге.

2026-01-01 balance Assets:US:BofA:Checking   4,321.00 USD

Beancount​

Beancount — это открытая система учёта с двойной записью, книга которой представляет собой текстовый файл, редактируемый в любом текстовом редакторе и проверяемый утилитой командной строки. Он даёт вам строгий, разбираемый синтаксис, язык запросов и веб-интерфейс, без базы данных или проприетарного формата файла. Поскольку книга — это текст, она прекрасно живёт в Git рядом с вашим кодом. Начните с Введения в Beancount.

Язык запросов Beancount (BQL)​

Язык запросов Beancount, обычно сокращаемый как BQL, — это SQL-подобный язык, который вы используете, чтобы задавать вопросы своей книге. Он работает над разобранными директивами, а не над базой данных, поэтому SELECT account, sum(position) WHERE year = 2026 отвечает немедленно из того же файла, который вы редактируете. Полную грамматику см. в руководстве по языку запросов.

Метод учета​

Метод учёта лотов — это правило, которое применяет Beancount, когда сокращение должно выбрать, какие существующие лоты списать. Beancount 3.2.3 принимает семь имён: STRICT (по умолчанию, когда вы сами определяете лот), STRICT_WITH_SIZE, NONE, FIFO, LIFO, HIFO и AVERAGE. Задайте его для каждого счёта в его директиве open или для всего файла через option "booking_method". Шесть из семи реализованы: AVERAGE разбирается, но выдаёт AVERAGE method is not supported, как только ему приходится учесть сокращение. Выбранный метод меняет ваши реализованные приросты капитала, поэтому выбирайте тот, который ожидает ваша налоговая юрисдикция, и держите его стабильным. Управление запасами прогоняет все семь по одним и тем же лотам и публикует книгу, которая падает при AVERAGE.

План счетов​

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

Директива закрытия​

Директива close отмечает дату, после которой счёт больше нельзя использовать, — так вы закрываете банковский счёт или погашенный кредит, не удаляя его историю. Прошлые транзакции остаются действительными и отчитываемыми; отклоняются только новые проводки. Закрытие неиспользуемых счетов сохраняет читаемость отчётов по мере старения книги.

2026-03-31 close Assets:US:OldBank:Checking

Товар​

Товар — это любая единица ценности, которую отслеживает ваша книга: валюта вроде USD, биржевой тикер вроде AAPL, криптоактив вроде BTC или что-то, что вы придумали сами, например VACATION-DAYS. Beancount никогда не конвертирует между товарами за вашей спиной, поэтому сумма — это всегда число в паре с товаром, в котором она выражена. Необязательная директива commodity позволяет прикрепить метаданные, такие как имя или класс активов.

Стоимость приобретения​

Базовая стоимость — это то, что вы фактически заплатили за актив, записанное в валюте, которой вы платили, и переносимое вместе с активом, пока вы им владеете. Beancount записывает её в фигурных скобках — 10 AAPL {150.00 USD} означает десять акций, приобретённых по 150 долларов каждая. Удвойте скобки, и число становится общей суммой, а не ценой за единицу, поэтому 10 AAPL {{1,500.00 USD}} записывает тот же лот. Поскольку базовая стоимость идёт вместе с позицией, приросты капитала выпадают из арифметики при продаже. См. Управление запасами.

Директива​

Директива — это одна инструкция в файле Beancount, обычно датированная, и именно из директив состоит книга. Двенадцать видов несут дату: open, close, balance, price, note, document, pad, event, commodity, custom, query и сама транзакция. Несколько не несут и действуют на файл, а не на день, — option, include, plugin и пара pushtag/poptag. Beancount сортирует датированные по дате перед обработкой, так что их можно держать в любом порядке, который читается лучше; недатированная вступает в силу там, где написана.

Двойная бухгалтерия​

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

2026-03-02 * "Bank" "Buy euros"
  Assets:US:BofA:EUR       100.00 EUR @ 1.08 USD
  Assets:US:BofA:Checking -108.00 USD

Конвертный бюджет​

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

Fava​

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

Инвентарь​

Инвентарь — это набор позиций, которые счёт в данный момент держит, каждая со своим товаром и, где применимо, со своей базовой стоимостью и датой приобретения. Брокерский счёт, который трижды купил одну и ту же акцию, держит три отдельных лота в одном инвентаре, а не одно усреднённое число. Сохранение лотов раздельными — это то, что делает возможными точные расчёты прибыли.

Журнал​

Журнал — это хронологический список всего, что произошло в ваших книгах, — сырой поток транзакций в порядке дат, до любого группирования или обобщения. Это представление, которое вы просматриваете, когда хотите ответить на вопрос «что я вообще делал в марте?». Страница журнала в Fava обычно самое быстрое место, где можно заметить неверно категоризированную запись.

Журнал в бухгалтерии​

Книга — это полный набор учётных записей для одного субъекта, что в Beancount означает ваш текстовый файл (плюс всё, что он включает). Слово служит и названием всей совокупности счетов, и названием самого файла. Поскольку это текст, книгу можно сравнивать (diff), рецензировать, ветвить и сливать, как исходный код.

Лот​

Лот — это одно конкретное приобретение товара, определяемое его базовой стоимостью и датой приобретения. Покупка того же ETF в январе и снова в июне создаёт два лота, а последующая продажа означает выбор того, какой лот вы продаёте. Лоты — причина, по которой Beancount может вычислять реализованные приросты точно, а не приблизительно.

2026-06-15 * "Broker" "Buy VTI"
  Assets:US:Broker:VTI     5 VTI {260.00 USD, 2026-06-15}
  Assets:US:Broker:Cash            -1,300.00 USD

Описание (Narration)​

Описание — это свободный текст, поясняющий, для чего была транзакция, записанный как вторая строка в кавычках на строке транзакции. Он для людей: «Месячная аренда», «Продукты и хозяйственные товары». Beancount его не разбирает, но именно его вы прочтёте, когда запись перестанет иметь смысл через полгода.

Директива открытия​

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

2026-01-01 open Assets:US:Broker:VTI   VTI   "FIFO"

Заполнение (Pad)​

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

Получатель платежа​

Плательщик — это тот, с кем вы совершили операцию, записанный как первая строка в кавычках на строке транзакции. Поддержание согласованности плательщиков — всегда "Whole Foods", никогда иногда "WholeFoods" — это то, что заставляет работать отчёты по плательщикам и автоматические импортёры. Beancount считает плательщика необязательным; транзакция может нести только описание.

Плейн-текстовый учет​

Plain-text accounting — это практика ведения книг в удобочитаемом текстовом файле под контролем версий, обрабатываемом открытыми утилитами командной строки. Он обменивает интерфейс «укажи и щёлкни» на долговечность, проверяемость и автоматизацию: ваши данные переживут любого поставщика, каждое изменение — это рецензируемый diff, и любой скрипт может их прочитать. Beancount, Ledger и hledger — три наиболее известные реализации.

Плагин​

Плагин — это модуль Python, который Beancount загружает во время обработки вашего файла, позволяя ему добавлять, преобразовывать или проверять директивы до построения отчётов. Плагины — это то, как реализуются прогнозирование, графики амортизации и пользовательские проверки без изменения ядра языка. Вы включаете один отдельной строкой plugin в начале вашей книги, никогда через option — option "plugin" "…" отклоняется с Option 'plugin' may not be set. Руководство Плагин прогноза разбирает реальный пример.

Проводка​

Проводка — это одна нога транзакции: счёт, сумма и необязательно стоимость или цена. То, что должно суммироваться в ноль по транзакции, — это не сырые суммы, а их веса: простая сумма весит саму себя, 10 FUND @ 38.46 USD весит 384.60 USD, а 10 FUND {384.61 USD} весит 3,846.10 USD, потому что одинарные скобки содержат стоимость одной единицы. Не более одной проводки может оставить свою сумму пустой, и тогда Beancount вычисляет для вас балансирующую величину. Полные правила веса см. в Точности и допусках.

Директива цены​

Директива price записывает обменный курс между двумя товарами на дату — так Beancount конвертирует актив в его рыночную стоимость в отчётах. Директива price — это чистые справочные данные: она не двигает деньги и не принадлежит никакой транзакции. Не путайте её с ценой @, написанной внутри проводки, — это арифметика: она даёт 10 FUND @ 38.46 USD вес 384.60 USD и, таким образом, решает, сходится ли транзакция. Без директив price портфель всё ещё сходится по стоимости, но не может быть оценён по рынку.

2026-06-30 price VTI   271.40 USD

Live Prices предоставляет управляемые директивы цен для поддерживаемых активов в размещённых на платформе книгах. Ваша собственная цена имеет приоритет для той же даты и пары, включая обратную пару. Управляемая цена на более позднюю дату по-прежнему может применяться к последующей оценке.

Сверка​

Сверка — это акт доказательства того, что ваши книги согласуются с внешней записью, такой как банковская или брокерская выписка. В plain-text accounting она в основном механическая: добавьте проверку баланса на каждую дату выписки и позвольте инструменту сказать вам, совпадают ли числа. Книга, которая чисто сверяется каждый месяц, — это книга, из которой можно без страха подавать налоги.

Теги и ссылки​

Теги и ссылки — это две метки, которые вы прикрепляете к транзакциям, чтобы группировать их вне иерархии счетов: тег с # отмечает тему, например #trip-japan, а ссылка с ^ связывает родственные записи, например ^invoice-2026-014, вместе. Теги отвечают на вопрос «покажи мне всё в этой категории»; ссылки отвечают на вопрос «покажи мне записи, относящиеся к этому одному событию». Оба фильтруются в Fava и запрашиваются в BQL — см. Фильтрацию и поиск.

Транзакция​

Транзакция — это датированное экономическое событие вместе с проводками, которые его записывают, и это директива, которую вы будете писать чаще всего. Она несёт флаг (* для подтверждённых, ! для требующих проверки), необязательного плательщика, описание и две или более проводок, веса которых суммируются в ноль. Всё остальное в файле Beancount существует, чтобы объявлять, проверять или аннотировать транзакции.

2026-02-14 * "Blue Bottle" "Coffee with Dana"
  Expenses:Food:Coffee      9.50 USD
  Assets:US:BofA:Checking  -9.50 USD

Всё ещё застряли на каком-то слове? Справочный центр индексирует все руководства на этом сайте, а Шпаргалка кладёт синтаксис для каждой директивы бок о бок.

Источник: https://beancount.io/ru/docs/glossary