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

Бухгалтерский цикл, стиль Beancount

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

Финансовые отчёты не появляются по волшебству. Они являются конечным продуктом структурированного, повторяемого процесса, известного как бухгалтерский цикл. Хотя принципы универсальны, используемые инструменты могут кардинально изменить опыт. Это руководство проведёт вас через бухгалтерский цикл с акцентом на Beancount, мощный инструмент plain‑text бухгалтерии.

Мы посмотрим, как подход Beancount, ориентированный на текст, устраняет утомительные шаги, что следует автоматизировать и какие отчёты дают самое ясное представление о вашем финансовом здоровье. 🧑‍💻

2025-08-13-the-accounting-cycle-beancount-style


TL;DR: Рабочий процесс Beancount

  • Capture & Journal: Записывайте каждую операцию как чистую двойную запись в вашем текстовом файле .beancount.
  • Validate & Reconcile: Используйте утверждения balance для подтверждения соответствия вашего реестра банковским выпискам и запускайте bean-check для обнаружения ошибок.
  • Review: Сгенерируйте необработанный пробный баланс для быстрой проверки.
  • Adjust: Проводите записи для начислений, отложений, амортизации и других статей периода.
  • Re-review: Проверьте скорректированный пробный баланс, чтобы убедиться, что всё правильно.
  • Publish & Close: Сгенерируйте отчёт о прибылях и убытках, баланс и отчёт о движении денежных средств. Закрытие книг в Beancount необязательно, так как отчёты учитывают даты.

Эту схему можно визуализировать так:


Шаг 1: Захват и запись транзакций

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

Каждая транзакция должна соответствовать правилам двойной записи, то есть сумма всех проводок должна быть нулевой. Beancount проверяет это за вас.

2025-08-10 * "Walmart" "Purchase of office supplies"
Expenses:Office:Supplies 45.67 USD
Assets:Bank:Checking -45.67 USD
  • Pro‑Tip: Используйте теги вроде #project-phoenix или #client-acme, чтобы добавить измерения к вашим данным. Это делает запросы и отчёты невероятно гибкими позже.

Гигиена сверки ✅

Самая мощная функция для обеспечения точности — утверждение баланса. В конце отчётного периода (например, в конце месяца) вы указываете, каким должен быть баланс счёта.

2025-08-31 balance Assets:Bank:Checking  12345.67 USD

Если сумма всех транзакций, влияющих на Assets:Bank:Checking к этой дате, не равна 12345.67 USD, Beancount выдаст ошибку. Эта простая директива превращает ваш реестр в самопроверяющийся документ.

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


Шаг 2: «Постинг в реестр» (Бесплатно !)

В традиционных бухгалтерских системах сначала пишут записи в «журнал», а затем отдельным шагом «постинг» копируют их в «главную книгу».

В Beancount ваш файл .beancount одновременно является журналом и главной книгой. Когда вы пишете и сохраняете транзакцию, она уже опубликована. Отдельного шага нет. Эта прямота — ключевое преимущество plain‑text бухгалтерии: то, что видишь, то и получаешь.


Шаг 3: Подготовка необработанного пробного баланса

Прежде чем вносить корректировки, нужен быстрый чек «всё сходится?». Пробный баланс — простой отчёт, в котором перечислены все счета и их итоговые остатки. Сумма всех дебетовых остатков должна равняться сумме всех кредитовых.

Сгенерировать его можно простой командой:

bean-query main.beancount \
"SELECT account, sum(position) GROUP BY 1 ORDER BY 1"

Или, для более визуального подхода, откройте ваш реестр в Fava (веб‑интерфейс Beancount) и перейдите к отчёту «Trial Balance». Ищите аномалии — активный счёт с кредитовым остатком или расходный счёт с неожиданным значением.


Шаг 4: Проводка корректировочных записей

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

Распространённые корректировки:

  • Начисления: Запись дохода, который уже заработан, но ещё не выставлен в счёт, или расхода, который уже понесён, но ещё не оплачен.
  • Отложения: Обработка предоплат. Если клиент заплатил вам за год услуг заранее, вы фиксируете это как обязательство (Liabilities:UnearnedRevenue) и признаёте 1/12 части как доход каждый месяц.
  • Неденежные статьи: Запись таких вещей, как амортизация активов.
  • Коррекции: Исправление ошибок или учёт пропущенных пунктов из банковских выписок, например небольших процентов.

Пример: Начисление дохода

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

2025-08-31 * "Accrue revenue for client project #1042"
Assets:AccountsReceivable 3000.00 USD
Income:Consulting -3000.00 USD

Пример: Учёт амортизации

У вашей компании есть график амортизации активов. В конце периода вы фиксируете расход:

2025-12-31 * "Annual depreciation on computer equipment"
Expenses:Depreciation 4800.00 USD
Assets:Fixed:AccumulatedDepreciation -4800.00 USD

Шаг 5: Запуск скорректированного пробного баланса и проверка

После внесения корректировок снова запустите отчёт пробного баланса. Это ваш Скорректированный пробный баланс. Он предоставляет окончательные цифры, которые будут использованы для создания финансовой отчётности.

Это также отличное время для запуска встроенной проверки Beancount:

bean-check main.beancount

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


Шаг 6: Публикация финансовой отчётности 📊

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

  • Отчёт о прибылях и убытках (P&L): Показывает ваши доходы и расходы за период, в результате чего получаете чистую прибыль или убыток.
  • Баланс: Снимок того, что вы владеете (Активы) и что должны (Обязательства), а также вашего собственного капитала (Equity) на конкретную дату.
  • Отчёт о движении денежных средств: Сводит начальный и конечный денежный остаток, показывая, откуда пришли деньги и куда они ушли.

Для кастомных отчётов используйте язык запросов Beancount (BQL). Пример запроса месячного отчёта о доходах:

-- P&L for August 2025
SELECT account, sum(position)
WHERE account '^(Income|Expenses)'
AND date >= 2025-08-01 AND date <= 2025-08-31
GROUP BY account ORDER BY account;

Шаг 7: Закрытие книг (по желанию)

В традиционной бухгалтерии процесс «закрытия» подразумевает создание проводок, которые обнуляют все временные счета (Доходы и Расходы) и переводят чистую прибыль в счёт собственного капитала Retained Earnings. Это формально сбрасывает временные счета для следующего года.

В Beancount этот шаг обычно не нужен. Отчёты Fava учитывают даты; если вы запросите P&L за 2025 г., он использует только данные 2025 г. Балансы не «перетекают». Большинство пользователей просто оставляют балансы как есть.

Тем не менее, если вам требуется формальное закрытие для соответствия требованиям или отчётности перед акционерами, вы можете выполнить его простой годовой транзакцией, переводящей общие доходы и расходы в Equity:Retained-Earnings.


Практический чек‑лист месячного закрытия

Повторяемый чек‑лист для закрытия книг каждый месяц с помощью Beancount.

  • Capture: Импортируйте все банковские и кредитные транзакции. Вручную введите любые наличные расходы или отдельные операции.
  • Reconcile: Добавьте утверждения balance для всех банковских счетов, кредитных карт и кредитов, сопоставив их с выписками.
  • Review: Просмотрите необработанный пробный баланс в Fava. Исследуйте любые странные или неожиданные остатки. Проверьте наличие просроченных неоплаченных счетов (Assets:AccountsReceivable) или долгов (Liabilities:AccountsPayable).
  • Adjust: Запишите начисления доходов/расходов, отложенный доход и любые необходимые исправления.
  • Validate: Запустите bean-check. Проверьте окончательный скорректированный пробный баланс.
  • Publish: Сгенерируйте P&L и Баланс. Отправьте их заинтересованным сторонам или сохраните для архивов.
  • Wrap-up: При необходимости выполните запись закрытия. Архивируйте копию файлов .beancount за период.

Почему Beancount выделяется в бухгалтерском цикле

  • Прозрачность и проверяемость: Ваш реестр — это текстовый файл. Вы можете использовать git для контроля версий финансовой истории, просматривать изменения через diff и сотрудничать с бухгалтером в ясном, однозначном формате.
  • Полный контроль: Вы определяете план счетов. Вы не привязаны к структуре поставщика программного обеспечения. Ваши данные принадлежат вам навсегда, в открытом формате.
  • Непревзойдённая мощь: Комбинация SQL‑подобных запросов (BQL) и богатого веб‑интерфейса (Fava) даёт вам возможность резать, нарезать и глубоко понимать ваши финансовые данные.

Готовые фрагменты для начала

Простой план счетов:

option "title" "My Personal Ledger"
option "operating_currency" "USD"

;; --- Accounts ---
1970-01-01 open Assets:Bank:Checking
1970-01-01 open Assets:AccountsReceivable
1970-01-01 open Liabilities:CreditCard
1970-01-01 open Liabilities:UnearnedRevenue
1970-01-01 open Equity:Owner:Capital
1970-01-01 open Equity:Retained-Earnings
1970-01-01 open Income:Consulting
1970-01-01 open Expenses:Office:Supplies
1970-01-01 open Expenses:Software
1970-01-01 open Expenses:Depreciation

Полезный запрос BQL:

-- Find all customers with an outstanding balance
SELECT payee, sum(position)
WHERE account = 'Assets:AccountsReceivable'
GROUP BY payee
HAVING sum(position) > 0
ORDER BY sum(position) DESC;

Соотнеся вечный бухгалтерский цикл с современными, текстовыми инструментами Beancount, вы получаете систему, которая надёжна, прозрачна и создана для долговечности. Счастливой бухгалтерии!