Каждая компания начинается с таблиц. И какое-то время они работают прекрасно. Проблемы начинаются, когда бизнес перерастает точку, в которой один человек ещё может поддерживать главную таблицу, когда контроль версий превращается в «Final_v3_REAL_final.xlsx», и когда вы понимаете, что в складской таблице и в таблице продаж цифры по одним и тем же товарам разные. Если звучит знакомо — вам, вероятно, пора переходить на полноценную систему. Вот как это сделать на Odoo.
Перед любой технической частью решите, что именно вы мигрируете. Большинство компаний ведут в таблицах бухгалтерию/инвойсинг, склад/остатки, контакты клиентов, каталоги товаров и данные о сотрудниках. Мигрировать всё сразу не нужно. Более того — нельзя. Выберите область, которая причиняет больше всего боли, и начните с неё. Для большинства компаний это либо бухгалтерия, либо склад.
Шаг первый — аудит данных. Откройте каждую таблицу, которую планируете мигрировать, и ответьте на вопросы: сколько там реальных строк данных (без заголовков и пустых строк)? Сколько колонок используется? Согласованы ли имена колонок между листами? Есть ли формулы, отражающие бизнес-логику, которую нужно сохранить? Есть ли дубликаты? Актуальны ли данные, или там исторические записи, которые уже не нужны?
Шаг второй — очистка данных, и именно здесь сосредоточена основная работа. Odoo нужны структурированные, согласованные данные. В ваших таблицах почти наверняка есть несоответствия. Имена клиентов в трёх разных вариантах («ABC Corp», «ABC Corporation», «abc corp.»). Коды товаров, чей формат поменялся посередине («SKU-001» и «001-SKU»). Даты в нескольких форматах. Денежные суммы с символами валюты и без. Всё это нужно починить до импорта.
Практический подход к очистке: сделайте копию каждой таблицы (оригинал никогда не трогайте). В копии добавьте колонку «Статус» и пометьте каждую строку как Clean, Needs Review или Duplicate. Проработайте пункты Needs Review системно. Для дубликатов решите, какую запись оставить, и перенесите уникальную информацию из других копий. Работа утомительная, но сократить её невозможно. Закладывайте 1–2 дня на каждую таблицу для среднего бизнеса.
Шаг третий — сопоставьте колонки таблицы полям Odoo. В Odoo есть конкретные типы полей: char для текста, float для чисел, many2one для связей, date для дат. Колонка «Клиент» в таблице, вероятно, должна стать many2one-связью с моделью res.partner. Колонка «Категория товара» должна сопоставляться с категорией товара Odoo, которую нужно создать заранее. Составьте таблицу соответствий: имя колонки в таблице, модель Odoo, имя поля Odoo, тип поля и любое нужное преобразование.
Шаг четвёртый — настройте Odoo и импортируйте в правильном порядке. Порядок важен из-за связей между записями. Нельзя импортировать заказы на продажу до импорта клиентов и товаров, потому что заказ ссылается на оба. Правильный порядок для большинства бизнесов: контакты (клиенты и поставщики), категории товаров, товары, затем транзакционные данные (счета, заказы, движения по складу). Если есть сотрудники: сначала отделы, затем должности, затем сотрудники.
В Odoo есть встроенная функция импорта, принимающая CSV и Excel. Для малых наборов данных (до 1 000 строк) она работает хорошо. Загрузите файл, сопоставьте колонки полям Odoo, посмотрите превью и выполните импорт. Для крупных наборов рекомендуем использовать API Odoo или миграционный скрипт, который умеет корректно обрабатывать ошибки и запускаться повторно после правок. Встроенный импорт может упасть по таймауту на больших файлах и даёт слабую отчётность об ошибках.
Шаг пятый — валидируйте загруженные данные. Это не опционально. После каждого импорта проверяйте случайную выборку из 10–20 записей в Odoo против исходной таблицы. Убедитесь, что имена, цифры, даты и связи корректны. Проверяйте итоги — если таблица показывает общий запас 5 000 единиц по всем товарам, то и Odoo после импорта должен показать то же число. Любое расхождение означает, что что-то пошло не так на этапе импорта или очистки.
Самая частая ловушка: попытка мигрировать историю транзакций. Вам не нужны три года заказов на продажу в Odoo. Вам нужны начальные остатки — текущие остатки на складе, открытые счета клиентов, открытые счета от поставщиков и текущие остатки по счетам. Импортируйте текущее состояние бизнеса, а не всю его историю. Если историческая информация нужна для анализа — держите таблицы в отдельном архиве.
Параллельная работа обязательна. Не выключайте таблицы в день икс. Запускайте обе системы одновременно минимум 2–4 недели. Каждая транзакция вносится и в Odoo, и в таблицу. В конце каждой недели сверяйте цифры. Когда они стабильно совпадают — можно выводить таблицу из эксплуатации. Звучит как двойная работа, и это так, но это единственный способ поймать проблемы до того, как они станут проблемами.
Реалистичные сроки по нашему опыту: малая компания (1–2 пользователя, базовые контакты и инвойсинг) может мигрировать за 1–2 недели, включая параллельную работу. Средняя компания (5–15 пользователей, несколько таблиц, определённая сложность) должна закладывать 4–8 недель. Более крупная операция (20+ пользователей, несколько отделов, сложные данные) — 8–16 недель. Эти сроки включают очистку, импорт, валидацию и параллельную работу, а не только технический импорт сам по себе.
Последний совет: назначьте «чемпиона миграции». Одного человека в компании, который отвечает за качество данных, принимает решения по дубликатам и исключениям и валидирует импортированные записи. Этот человек должен глубоко понимать бизнес-данные — обычно это кто-то из операций или бухгалтерии, кто вёл эти таблицы. Без такого человека миграционные решения буксуют, а сроки сползают.