Бухгалтерский цикл, стиль Beancount
Финансовые отчёты не появляются по волшебству. Они являются конечным продуктом структурированного, повторяемого процесса, известного как бухгалтерский цикл. Хотя принципы универсальны, используемые инструменты могут кардинально изменить опыт. Это руководство проведёт вас через бухгалтерский цикл с акцентом на Beancount, мощный инструмент plain‑text бухгалтерии.
Мы посмотрим, как подход Beancount, ориентированный на текст, устраняет утомительные шаги, что следует автоматизировать и какие отчёты дают самое ясное представление о вашем финансовом здоровье. 🧑💻
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;