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

Перенос российской бухгалтерской локализации на Odoo 19

План счетов, НДС/УСН, отчёты и печатные формы — плюс полный перевод интерфейса на русский
9 июля 2026 г. от
Перенос российской бухгалтерской локализации на Odoo 19

Схема: перенос российской бухгалтерской локализации с Odoo 17 на Odoo 19 — совместимость API, перевод интерфейса, меню и права доступа

У нас была рабочая, детально проработанная российская бухгалтерская локализация для Odoo 17 Community — план счетов, налоги, печатные формы, отчётность. Когда вышла Odoo 19, официальной русской локализации под неё ещё не было, поэтому мы полностью перенесли свой модуль на новую версию, а не стали ждать.

Что входит в локализацию

  • План счетов РФ (Приказ МФ РФ № 94н);
  • налоги: НДС 20%, 10%, 0%, без НДС; УСН 6% и УСН 15%;
  • справочники ОКПО, ОКТМО, ОКВЭД, ОКОПФ;
  • платёжные поручения (форма 0401060);
  • печатные формы: Счёт-фактура, УПД, ТОРГ-12, Акт выполненных работ;
  • отчёты: Оборотно-сальдовая ведомость, Бухгалтерский баланс (Форма 1), Отчёт о прибылях и убытках (Форма 2);
  • реквизиты организации (ИНН, КПП, ОГРН, расчётный счёт, БИК), основные средства и амортизация, бюджетирование, анализ задолженности по срокам, контроль дебиторской задолженности, повторяющиеся платежи, блокировка периода.

Совместимость API — за три с лишним года Odoo многое поменялось

Между Odoo 17 и Odoo 19 накопился десяток мелких, но ломающих совместимость изменений ядра, и модуль на них не запускался без правок:

  • поле account.account.deprecated убрали из ядра — заменили на работу через поле active;
  • account.account.company_id стало множественным полем company_ids;
  • у налоговых позиций (account.fiscal.position) поле tax_ids теперь простой M2M на account.tax, а сопоставление «откуда → куда» переехало в account.tax.original_tax_ids;
  • из ir.cron убрали поля numbercall/doall;
  • в view-архитектуре тег <tree> переименован в <list>, у <group> в search-view больше нет атрибутов expand/string, встречались дублирующиеся имена фильтров;
  • сокращённая запись <report .../> в XML стала недопустимой — пришлось переписать явной записью ir.actions.report;
  • несколько external id в правах доступа (ir.model.access.csv) и часть ссылок на action в меню не совпадали с реальными именами моделей/экшенов;
  • две вьюхи вообще ссылались на модели, которых давно нет ни в одной части модуля (asset.asset.report, res.partner.followup_status) — такие файлы просто убрали.

Всего правки затронули 43 файла — в основном точечные, но их надо было найти по одной: Odoo при установке останавливается на первой же ошибке.

Перевод интерфейса — в три прохода

У исходного модуля файл переводов (i18n/ru.po) существовал только формально — в нём был один заголовок и ни одной переведённой строки, поэтому вся локализация фактически работала на английском независимо от языка интерфейса. Перевод делался в три захода:

  1. около 320 строк — названия полей, действий, меню, отчётов, вариантов выбора и описания моделей, взятые из Python-кода;
  2. ещё около 110 строк — подписи кнопок, вкладок и групп, которые прописаны прямо в XML вьюхах и не попадают в первый проход;
  3. отдельно — заголовки нескольких визардов и отчётов, у которых не было формы для какого-то вида отображения (например, kanban): Odoo в этом случае показывает как заголовок значение атрибута _description прямо из Python-класса, а это обычная строка, которая никогда не проходит через .po-перевод в принципе — её пришлось перевести прямо в исходном коде.

Заодно нашли и закрыли скрытый баг: у четырёх моделей (financial.report, account.common.account.report, account.common.partner.report, account.account.type) не было ни одной записи в правах доступа — без права на чтение Odoo просто не показывает пункт меню вообще никому, независимо от языка. Из-за этого их и не было видно, что там оставался непереведённый текст: увидеть их можно было только после того, как права появились.

Меню без дублей

Четыре пункта меню из исходного модуля были когда-то прицеплены прямо к базовым меню ядра (account.menu_finance_reports, account.root_payment_menu) и указывали на те же самые действия, что уже были собраны в собственном дереве меню «Локализация РФ». В интерфейсе одни и те же ссылки показывались дважды — убрали дубли, оставили только собственное дерево меню как единственный источник правды.

Итог

Модуль версии 19.0.1.0.0 установлен и проверен на живом инстансе Odoo 19.0: интерфейс полностью на русском, дублирующихся пунктов меню нет, ни один раздел не оказывается скрытым из-за отсутствующих прав доступа.

Яндекс Метрика внутри Odoo 10: своя интеграция вместо переключения вкладок
OAuth-доступ, автоматическая выгрузка статистики и отчёты прямо в интерфейсе Odoo

Похожая задача в вашей компании?

Напишите намСмотреть услуги