
Каждое внедрение Odoo рано или поздно доходит до одного и того же момента: настройка готова, пользователи обучены, и бизнесу нужны реальные данные в новой системе. Именно на миграции данных многие проекты теряют время, потому что ошибки в основных данных или начальных остатках позже проявляются в виде неверных отчётов, дублирующихся контактов и несверенных счетов.
В этом руководстве объясняется, как спланировать и провести миграцию в Odoo 19 Enterprise: от основных данных, таких как клиенты, поставщики, товары и план счетов, через функцию импорта — до начальных остатков по дебиторской и кредиторской задолженности, главной книге и запасам. В конце приведены последовательность переключения и проверки, подтверждающие правильность цифр.
Об источниках: статья основана на официальной документации Odoo для версии 19. Названия меню и параметры могут различаться в зависимости от установленных приложений, локализации и прав доступа, поэтому всегда проверяйте каждый шаг в тестовой базе данных, прежде чем применять его в рабочей системе.
Шаг 1. Определите объём миграции
Начните с решения, что будет перенесено, а что останется в старой системе как архив. В рекомендациях Odoo по началу работы с бухгалтерией отмечается, что компании, начинающие с нуля, проверяют фискальную локализацию, импортируют основные данные и настраивают параметры бухгалтерии, а компании, переходящие со старого ПО, также импортируют вступительные проводки.
Важен момент перехода. Документация Odoo рекомендует переходить в конце финансового года, так как это минимизирует объём переносимых данных, и не советует переходить в середине налогового периода.
Составьте реестр миграции: каждый объект данных, его исходная система, ответственный со стороны бизнеса, количество записей и целевая модель Odoo. Типичные объекты:
- Настроечные записи: валюты, журналы, фискальные позиции, налоги и условия оплаты
- Основные данные: категории товаров, товары, атрибуты и варианты, контакты и их банковские счета
- Корректировки стандартного плана счетов локализации
- Начальные остатки: оборотно-сальдовая ведомость, открытые счета и кредит-ноты клиентам, открытые счета и возвраты поставщиков, остатки на банковских счетах и в кассе, а также начальная инвентаризация запасов
Заранее договоритесь, что переноситься не будет. Закрытые исторические операции обычно остаются в старой системе для справки, благодаря чему миграция становится меньше, а начальную позицию проще сверить.
Шаг 2. Подготовьте план счетов и фискальную локализацию
Страна, выбранная при создании базы данных или компании, определяет пакет фискальной локализации, который добавляет стандартный план счетов, настроенный для этой страны. Проверить пакет можно в настройках бухгалтерии в разделе «Фискальная локализация».
Считайте это первым контрольным пунктом плана. Документация предупреждает, что фискальную локализацию нельзя изменить после проведения хотя бы одной проводки, поэтому подтвердите её до загрузки любых бухгалтерских данных.
Сопоставляйте свои старые счета с планом счетов Odoo, а не заменяйте его. Если счёт Odoo соответствует вашему, измените его название или код. Если соответствия нет, создайте счёт вручную или импортируйте его. Коды счетов должны быть уникальны в пределах плана счетов.
Не удаляйте стандартные счета и не меняйте их тип, поскольку от них зависят счета и настройки по умолчанию. Вместо этого переименовывайте их и меняйте коды. Тип каждого счёта также определяет отчёты и закрытие финансового года, поэтому тщательно выбирайте типы для новых счетов.

Шаг 3. Загружайте основные данные с учётом зависимостей
Odoo разрешает связи во время импорта, поэтому запись может ссылаться только на уже существующие записи. В документации по началу работы с бухгалтерией указан такой порядок: валюты, журналы, фискальные позиции, налоги, условия оплаты, категории товаров, товары, банковские счета контактов и контакты.
Для товаров сначала импортируйте категории, чтобы при импорте можно было указать категорию каждого товара. Если вы используете варианты, создайте атрибуты до товаров. В рекомендациях Odoo по импорту товаров описан отдельный лист атрибутов со столбцами для атрибута, типа отображения, режима создания вариантов и значений.
Будьте внимательны с режимом создания вариантов. В документации сказано, что его нельзя изменить после того, как атрибут использован хотя бы в одном товаре. В названиях атрибутов и значений нельзя использовать запятые, а несколько значений разделяются запятой без пробела.
Для контактов проверьте счёт дебиторской задолженности, счёт кредиторской задолженности и условия оплаты, поскольку они определяют, как каждый клиент и поставщик отражается в бухгалтерии.
Шаг 4. Используйте шаблоны импорта и функцию импорта
Odoo позволяет импортировать данные в большинство бизнес-объектов из файлов Excel (XLSX) или CSV. Откройте представление списка объекта, нажмите значок шестерёнки для действий и выберите «Импорт записей». Для многих объектов, например контактов, товаров и проводок, доступен шаблон импорта с уже подготовленным сопоставлением столбцов.
Работа с шаблоном — самый безопасный путь. Столбцы можно добавлять, удалять и переставлять, но идентифицирующий столбец нужно сохранить. Если шаблона нет, сначала экспортируйте несколько существующих записей, чтобы получить точные названия полей.
Экран импорта следует чёткой последовательности. Загрузите файл с данными, при необходимости настройте параметры форматирования для CSV (разделитель, кодировку, формат даты и разделитель тысяч), проверьте, что каждый столбец файла сопоставлен с нужным полем Odoo, и вручную сопоставьте нераспознанные столбцы, нажмите «Тест», чтобы проверить данные без сохранения, и нажимайте «Импорт» только после успешного теста.
Отнеситесь к предупреждению Odoo серьёзно: импорт окончателен и не может быть отменён. Фильтрация записей по дате создания или последнего изменения помогает найти то, что затронул импорт, но это средство восстановления, а не кнопка отмены.
Следите за форматами. Odoo рекомендует даты в формате ISO 8601, например 1981-07-24, настоящие ячейки с датами в Excel и правильно выбранный формат даты для файлов CSV. Файлы с разделителем-табуляцией автоматически не распознаются, а неизвестные символы валют в числовых полях могут остановить импорт. Для больших файлов документация советует разбивать данные на небольшие пакеты, чтобы избежать тайм-аутов, при этом все варианты одного товара должны находиться в одном пакете.
Шаг 5. Освойте внешние ID и реляционные поля
Внешний ID — самый важный столбец в любом файле миграции. Он присваивает каждой записи уникальный идентификатор, и импорт файла с внешними ID обновляет соответствующие записи, а не создаёт дубликаты. Это позволяет безопасно исправлять и повторно импортировать один и тот же файл.
Формируйте внешние ID на основе ключей старой системы и добавляйте префикс по объекту, например префикс клиента и префикс поставщика, чтобы они оставались уникальными во всех таблицах. После загрузки никогда не меняйте и не удаляйте их: документация предупреждает, что это может привести к появлению дубликатов при следующем импорте.
Реляционные поля подчиняются особым правилам:
- Поля Many2one, например категорию товара или страну контакта, можно заполнять названием связанной записи, но при одинаковых названиях связь устанавливается с первым совпадением, поэтому столбец, оканчивающийся на External ID, надёжнее
- Поля Many2many, например теги контактов, принимают несколько значений через запятую без пробелов
- В полях One2many, например в строках заказа, первая строка размещается в строке родительской записи, а каждая следующая — в отдельной строке с пустыми родительскими столбцами
Ещё две детали помогают избежать сюрпризов. Столбцы, отсутствующие в файле, получают значения по умолчанию, но присутствующие столбцы с пустыми ячейками перезаписывают эти значения пустыми. А при обновлении существующих данных экспортируйте их с отмеченным параметром совместимости с импортом, чтобы включить внешний ID и выгрузить только импортируемые поля.
Шаг 6. Очистите данные и проведите тестовые загрузки
Очистка должна проводиться до того, как данные попадут в Odoo. Удалите дубликаты клиентов и поставщиков, приведите к единому виду названия, телефоны и адреса, закройте или архивируйте устаревшие товары и убедитесь, что каждая ссылка в файле, например на категорию, налог или условия оплаты, существует в целевой базе данных.
В Odoo 19 Enterprise приложение «Очистка данных» добавляет правила дедупликации, группирующие похожие записи для объединения, и правила очистки полей, например удаление лишних пробелов, настройку регистра текста и форматирование телефонных номеров. Согласно документации, дедупликация и очистка полей — функции Enterprise, а переработка данных доступна и в Community. Поэтому пользователям Community следует выполнять большую часть очистки в электронных таблицах до импорта.
Проведите хотя бы одну полную репетицию в тестовой или staging-базе данных с окончательными файлами и окончательным порядком загрузки. Фиксируйте каждую ошибку, исправляйте её в источнике и повторяйте, пока загрузка не пройдёт без ошибок. Используйте репетицию, чтобы замерить время каждого шага и реалистично запланировать фактическое переключение.
Шаг 7. Загрузите начальные остатки
Документация Odoo описывает четыре начальные позиции, которые нужно подготовить: остатки по счетам, открытые счета и кредит-ноты клиентам, открытые счета и возвраты поставщиков, а также начальную инвентаризацию запасов.
Для главной книги импортируйте начальную оборотно-сальдовую ведомость как проводку, используя шаблон импорта для прочих операций, доступный в списке проводок. Перед импортом замените остатки дебиторской и кредиторской задолженности двумя транзитными счетами, AR Clearing и AP Clearing, оба с типом «Оборотные активы». Ведомость должна быть сбалансирована; она импортируется как черновик, который вы проверяете и затем проводите.
Затем импортируйте открытые счета клиентам и счета поставщиков с помощью их шаблонов из списков счетов клиентам и счетов поставщиков, а кредит-ноты и возвраты — из их собственных списков. Документация устанавливает чёткие правила: партнёр должен точно совпадать с существующим контактом, номер документа не должен уже существовать, а его год должен совпадать с датой счёта; используется либо срок оплаты, либо условия оплаты, но не оба сразу; счёт в строке — транзитный счёт дебиторской или кредиторской задолженности; цена за единицу — сумма, оставшаяся к оплате после частичных платежей.
Odoo рекомендует импортировать каждый открытый счёт одной итоговой строкой, а не построчно. Импортированные документы поступают как черновики, которые вы подтверждаете массово из меню «Действия». По мере их проведения транзитные счета закрываются реальными остатками дебиторской и кредиторской задолженности.
Для запасов откройте «Склад» → «Операции» → «Физическая инвентаризация» и импортируйте подсчитанные количества с помощью шаблона корректировки запасов. Затем нажмите «Применить все», укажите причину инвентаризации и дату подсчёта и обновите количества. Партии и серийные номера отображаются в отдельных строках, их можно выбрать или зарегистрировать во время подсчёта.
Тщательно согласуйте складской и бухгалтерский учёт. В документации указано, что счета запасов в оборотно-сальдовой ведомости должны соответствовать стоимости запасов, рассчитанной как себестоимость товара, умноженная на количество. Проверьте, как настройки оценки в категориях товаров отражают корректировки запасов, и согласуйте с бухгалтером, как стоимость запасов попадает в главную книгу, чтобы она не учитывалась дважды.
Для банка и кассы установите начальный остаток первой выписки каждого журнала равным реальному остатку до первой операции в Odoo. Если вы используете синхронизацию с банком, удалите все операции, датированные ранее даты оборотно-сальдовой ведомости.
Шаг 8. Проведите контролируемое переключение и сверку
В день переключения заморозьте операции в старой системе, выгрузите окончательные остатки, загрузите файлы в отрепетированном порядке и фиксируйте каждый шаг в журнале согласования. Типичная последовательность: проверка локализации, настроечные записи, категории и товары, контакты, начальная оборотно-сальдовая ведомость, открытые счета клиентам и поставщиков, начальные запасы и банковские остатки.
Сверка — способ доказать, что миграция прошла успешно. Сравните количество записей по каждому объекту в источнике и в Odoo, затем проверьте следующие остатки:
- Оборотно-сальдовая ведомость Odoo совпадает с заключительной ведомостью старой системы по каждому счёту
- Итоги дебиторской и кредиторской задолженности равны сумме импортированных открытых счетов клиентам и поставщиков
- Счета AR Clearing и AP Clearing полностью сбалансированы
- Количество запасов по товарам и местам хранения совпадает с подсчётом, а стоимость запасов согласуется со счетами запасов
- Каждый банковский и кассовый журнал начинается с фактического остатка по выписке
Когда подтверждено, что транзитные счета сбалансированы, Odoo рекомендует изменить их тип на «Забалансовый», чтобы они больше не отображались в основных отчётах. Сохраните рабочую книгу сверки и подписи согласования в документации проекта.
Чем может помочь 1CBMS
1CBMS планирует и проводит миграцию данных в Odoo 19 для компаний в Египте и Ираке: от выгрузки и очистки данных исходной системы до проектирования внешних ID, репетиционных загрузок, начальных остатков и согласованной сверки. Свяжитесь с нами через www.1cbms.com, чтобы спланировать миграцию, после которой ваша команда начнёт работу с цифрами, которым можно доверять.