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

Модель account.move.line: разбор проводок (Journal Entry Lines) в Odoo

Полное руководство по модели строк бухгалтерских проводок Odoo для разработчиков и функциональных консультантов
10 марта 2026 г. от
Модель account.move.line: разбор проводок (Journal Entry Lines) в Odoo
Dasolo
| Комментариев пока нет

Введение


В Odoo модели — это схема того, как хранятся бизнес‑данные в базе. Любая запись: от заказа клиента до проводки по банку — представляет собой объект модели с набором полей и связей.


Понимание моделей важно и для бизнес‑консультантов, и для разработчиков: именно модели задают поля, связи между записями и встроенную логику, на которой держится вся система данных Odoo.

В этой статье мы подробно разберём одну из ключевых моделей в учёте Odoo — account.move.line. С ней сталкиваются и те, кто делает отчёты, и те, кто настраивает синхронизацию с внешними системами, и те, кто внедряет процедуру сверки.

Что такое модель account.move.line


Модель account.move.line описывает отдельные строки бухгалтерской проводки — каждую дебетовую или кредитовую запись внутри проводки. В сумме строки проводки должны сходиться: сумма дебетов равна сумме кредитов.


Эта модель принадлежит модулю Бухгалтерия и является «детской» по отношению к account.move, который хранит саму проводку (счёт‑фактуру, платёжное поручение, банковскую выписку). Одна проводка может содержать несколько строк.


Определение модели лежит в модуле account; другие модули дополняют её через наследование: продажи подставляют данные строк счёта, покупки — строки счёта поставщика, аналитика добавляет распределение затрат. Благодаря расширениям каждый модуль добавляет только свою функциональность, не переписывая ядро.

Ключевые поля модели


Ниже — главные поля account.move.line, которые важно знать, чтобы корректно работать с проводками, отчётностью и сверками.


1. name

Тип: Char. Короткое название или описание строки. Обычно показывается в формах и отчётах; в строках счёта берётся из наименования товара или дополнительного текста, если он задан.


2. move_id

Тип: Many2one (account.move). Ссылка на родительскую проводку. Каждая строка относится ровно к одной проводке — это ключевая связь в модели.


3. account_id

Тип: Many2one (account.account). Счёт бухгалтерского плана, на который проводится строка. Обязательное поле; нельзя указывать view‑счёт или закрытый счёт. По нему строятся отчёты и группировки.


4. debit

Тип: Float. Сумма дебета. По умолчанию 0.0. В строке задаётся либо debit, либо credit — не оба. Дебет увеличивает активы и расходы.


5. credit

Тип: Float. Сумма кредита. По умолчанию 0.0. Кредит увеличивает обязательства, капитал и выручку. В проводке сумма дебетов должна равняться сумме кредитов.


6. balance

Тип: Float. Вычисляемое поле: debit минус credit. Показывает чистое влияние строки — положительное для дебета, отрицательное для кредита. Часто используется в отчётах и при сверке.


7. partner_id

Тип: Many2one (res.partner). Контрагент — клиент, поставщик или другая сторона. Важен для учёта дебиторки/кредиторки, ageing‑отчётов и автоматической сверки.


8. date

Тип: Date. Дата проводки. Обычно наследуется от родителя. Влияет на периодизацию, закрытие периодов и отчётность по датам.


9. date_maturity

Тип: Date. Срок оплаты. Актуально для дебиторки и кредиторки; используется в ageing‑таблицах и планировании платежей.


10. currency_id

Тип: Many2one (res.currency). Валюта строки. Может отличаться от валюты компании — это важно для мультивалютных проводок.


11. amount_currency

Тип: Float. Сумма в заявленной валюте. В паре с currency_id позволяет вести учёт в иностранной валюте и правильно рассчитывать курсовые разницы.


12. quantity

Тип: Float. Количество, опционально. Применимо для товарных строк (счета, счета поставщика). Нужен для отчётов по количеству и расчёта цены за единицу.


13. product_id

Тип: Many2one (product.product). Товар или услуга, к которой привязана строка. Заполняется при переносе из заказа продажи/покупки или счёта‑фактуры.


14. product_uom_id

Тип: Many2one (uom.uom). Единица измерения для количества. Используется вместе с product_id для корректного отображения и конверсии.


15. price_unit

Тип: Float. Цена за единицу. В сочетании с quantity определяет сумму в товарных строках счёта или счёта поставщика.


16. tax_ids

Тип: Many2many (account.tax). Налоги, применённые к строке. При проводке Odoo генерирует отдельные налоговые строки по необходимости; поле важно для расчёта НДС и других налогов.


17. tax_line_id

Тип: Many2one (account.tax). Для налоговых строк указывает налог, породивший эту строку. Помогает отличать налоговые позиции от обычных счётов.


18. analytic_account_id

Тип: Many2one (account.analytic.account). Аналитический счёт для разнесения затрат и доходов. Используется при включённой аналитике для детальных отчётов по проектам или отделам.


19. analytic_distribution

Тип: Json или Text. Хранит распределение по нескольким аналитическим счётам. В новых версиях может заменять единичное поле analytic_account_id при использовании планов аналитики.


20. ref

Тип: Char. Внешняя ссылка или пометка, часто наследуется от родителя. Показывается в отчётах и служит маркером при подборе по выпискам.


21. narration

Тип: Text. Внутренний комментарий или заметка, обычно берётся из проводки. По умолчанию не печатается на документах для клиентов.


22. journal_id

Тип: Many2one (account.journal). Журнал родительской проводки. Необходим для фильтрации и отчетности по журналам.


23. company_id

Тип: Many2one (res.company). Компания в мультикомпании: каждая строка принадлежит одной компании — это влияет на видимость записей и консолидацию.


24. reconciled

Тип: Boolean. Флаг, указывающий, свернута ли строка. Полезен для отображения только несверенных позиций в интерфейсе сверки.


25. full_reconcile_id

Тип: Many2one (account.full.reconcile). Связывает вместе все строки, объединённые в одну полную сверку. Помогает отследить группу проводок, свернутых одним действием.


26. payment_id

Тип: Many2one (account.payment). Для платёжных строк — ссылка на платёж. Используется при связывании счёта с оплатой.


27. statement_id

Тип: Many2one (account.bank.statement). Для строк банковской выписки — ссылка на выписку целиком. Применяется при банковской сверке.


28. statement_line_id

Тип: Many2one (account.bank.statement.line). Ссылка на конкретную строку банковской выписки. Нужна для сопоставления проводок с транзакциями банка.


29. display_type

Тип: Selection. Может принимать значения вроде 'line_section' или 'line_note' — используется для заголовков и примечаний в проводке; такие строки не содержат дебета/кредита, служат только для визуального оформления.


30. create_date

Тип: Datetime. Дата и время создания записи. Управляется автоматически и полезна для аудита.


31. write_date

Тип: Datetime. Дата последнего изменения записи. Тоже заполняется системой и помогает отслеживать историю правок.

Как модель используется в бизнес‑процессах


1. Выставление счёта клиенту

При подтверждении счёта Odoo создаёт строки account.move.line: доходная строка идёт на счёт выручки, дебиторская — на счёт клиента, а отдельные налоговые строки формируются для каждого налога. partner_id связывает строку с клиентом для ageing и сверки.


2. Счета поставщиков

Счета от поставщиков создают строки по расходам, входному НДС и кредиторской задолженности. По структуре это зеркальная картина клиентских счетов, но с другими типами счетов и знаками сумм.


3. Банковская сверка

Строки банковской выписки сопоставляются со строками проводок через statement_line_id. В результате сверки Odoo связывает записи, проставляет full_reconcile_id и ставит reconciled = True для сверенных позиций.


4. Ручные проводки

Пользователи могут вручную создавать проводки с несколькими строками: у каждой строки есть счёт, дебет или кредит и опционально партнёр. При публикации система проверяет баланс — сумма дебетов должна равняться сумме кредитов.



5. Аналитическая отчётность и контроль затрат

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

Как разработчики расширяют эту модель


Разработчики расширяют account.move.line разными способами, а ключевой инструмент для этого — наследование моделей в Odoo.


Наследование модели

В модуле указывают _inherit = 'account.move.line', чтобы добавить поля или переопределить методы. Изменения делаются в отдельном модуле, что упрощает обновления и поддержку при апгрейдах системы.


Добавление полей

В наследуемой модели объявляют новые поля нужного типа: Char, Many2one, Boolean, Integer, Text, Selection и т.д. Для мультикомпаний учитывайте company_dependent; будьте внимательны с вычисляемыми полями и правильно указывайте зависимости.


Расширения на Python

Переопределяйте методы create, write, unlink для внедрения логики — не забывайте вызывать super(), чтобы не нарушить базовую работу. В обработчиках важно не ломать инвариант равенства дебетов и кредитов и учитывать интеграции через API.


Odoo Studio

Odoo Studio позволяет быстро добавить пользовательские поля в account.move.line без кода — удобно для простых меток или тегов. Для серьёзной логики, правил сверки или интеграций предпочтительнее собственный модуль.

Рекомендации по использованию


  • Практические правила: не создавайте и не меняйте строки напрямую в базе — используйте API проводки (например, line_ids), чтобы Odoo выполнил все проверки и поддерживал целостность данных.
  • При подготовке отчётов фильтруйте строки по move_id.state = 'posted', чтобы исключить черновики и отменённые проводки.
  • Указывайте account_id с правильным типом счёта (receivable, payable и т.д.), чтобы корректно работали ageing‑отчёты и автоматическая сверка.
  • При интеграции через API сначала создавайте саму проводку, затем — её строки, и убедитесь, что до публикации сумма дебетов равна сумме кредитов.
  • Для собственных полей применяйте префикс x_ или префикс модуля, чтобы избежать коллизий с будущими релизами Odoo.

Типичные ошибки


  • Не устанавливайте одновременно значения debit и credit в одной строке — это ломает логику учёта; каждая строка должна быть либо дебетовой, либо кредитовой.
  • Не создавайте незамбалансированные проводки — Odoo валидирует равенство дебетов и кредитов при проводке.
  • Не изменяйте проведённые записи напрямую: корректировки делайте через сторнирование или новые корреспондирующие проводки, иначе вы потеряете аудит и нарушите отчётность.
  • Не забывайте проставлять partner_id в строках дебиторки и кредиторки — без этого ломаются ageing‑таблицы и автоматическая сверка по контрагентам.
  • Не переопределяйте ключевые методы без вызова super() — это может повредить сверке, блокировкам и работе других модулей.

Заключение


Модель account.move.line — это сердцевина бухгалтерии в Odoo: она хранит каждую дебетовую и кредитовую позицию, возникающую при выставлении счетов, проведении оплат и банковских выписок. Знание её полей и расширений помогает правильно настраивать систему, писать интеграции и формировать отчёты.

Независимо от роли — вы функционал‑консультант, формирующий учётные процессы, или разработчик, создающий отчёты и интеграции — хорошее понимание account.move.line экономит время и снижает риск ошибок.

Нужна помощь с внедрением Odoo?


Dasolo помогает компаниям внедрять, настраивать и оптимизировать Odoo. Мы специализируемся на интеграциях через API и разработке модулей, глубоко понимая архитектуру данных и модели вроде account.move.line.


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

Модель account.move.line: разбор проводок (Journal Entry Lines) в Odoo
Dasolo 10 марта 2026 г.
Поделиться этой записью
Войти оставить комментарий