Миграция сайта с OpenCart на 1С-Битрикс
OpenCart — добротный движок для небольших магазинов. Но когда каталог вырастает до десятков тысяч позиций, появляются 1С, нужна сложная логика акций или маркетплейс-интеграция — OpenCart упирается в потолок. Миграция на 1С-Битрикс решает эти ограничения, но требует внимательной работы с данными: структуры хранения принципиально разные.
Что именно переезжает
Из OpenCart берётся всё, что накоплено в базе:
-
Товары — таблицы
oc_product,oc_product_description,oc_product_image,oc_product_attribute. Каждый товар имеет основное изображение и галерею, SEO-поля (oc_product_description.meta_title,meta_description), атрибуты произвольной структуры. -
Категории —
oc_category,oc_category_description. Дерево категорий с неограниченной вложенностью. -
Заказы —
oc_order,oc_order_product,oc_order_history. История заказов с товарами, статусами, адресами доставки. -
Покупатели —
oc_customerс адресами изoc_address. -
Отзывы —
oc_review. -
Производители —
oc_manufacturer.
Дополнительно смотрим установленные расширения: часто в магазине есть сторонние модули, которые хранят данные в собственных таблицах oc_*.
Как устроено хранение в Битрикс
В Битриксе нет прямого аналога «товарной таблицы». Товары хранятся как элементы инфоблока (b_iblock_element, b_iblock_element_property), свойства — гибко через типы. Каталог реализован модулем catalog поверх инфоблоков: цены в b_catalog_price, остатки в b_catalog_store_product (если подключён склад), торговые предложения как отдельный инфоблок.
Это фундаментальное отличие определяет всю логику миграции.
Этапы переноса
1. Анализ и подготовка
Снимаем дамп базы OpenCart. Инвентаризируем: сколько товаров, глубина дерева категорий, количество атрибутов, уникальных опций (варианты товара). Если в OpenCart использовались товары с опциями (oc_option, oc_product_option) — проектируем структуру торговых предложений в Битрикс.
2. Развёртывание Битрикс
Устанавливаем 1С-Битрикс нужной редакции. Под интернет-магазин минимум — «Малый бизнес», для полноценного каталога с несколькими прайс-листами и складами — «Бизнес». Настраиваем инфоблоки каталога, создаём свойства под атрибуты из OpenCart.
3. Импорт данных
Пишем скрипт миграции на PHP. Структура: читаем из MySQL-дампа OpenCart через PDO, создаём элементы в Битрикс через CIBlockElement::Add() или, для скорости, прямой вставкой в b_iblock_element с последующим вызовом \Bitrix\Iblock\IblockTable. Для больших каталогов (50 000+ позиций) прямая вставка через batch-запросы в 10–20 раз быстрее API.
Категории переносим первыми — формируем дерево разделов через CIBlockSection::Add(), сохраняем маппинг oc_category_id → IBLOCK_SECTION_ID для последующей привязки товаров.
4. Перенос изображений
Изображения из /image/catalog/ OpenCart копируем на сервер Битрикс. Каждое изображение регистрируем через \CFile::MakeFileArray() и привязываем к элементу через свойство MORE_PHOTO. Основное изображение — поле PREVIEW_PICTURE элемента инфоблока.
5. Заказы и покупатели
Заказы переносим в b_sale_order / b_sale_order_props_value / b_sale_basket. Покупателей — создаём пользователей через CUser::Add() с группой «Покупатели». Пароли из OpenCart хранятся в MD5 с солью (oc_customer.salt) — эти хеши несовместимы с Битрикс. Отправляем пользователям письма со ссылкой на сброс пароля.
6. SEO и редиректы
Сопоставляем старые URL OpenCart с новыми. OpenCart строит URL по шаблону /index.php?route=product/product&product_id=42 или через SEO-фильтр /product-slug. В Битрикс URL определяется ЧПУ компонента. Формируем таблицу 301-редиректов, загружаем через модуль main (\Bitrix\Main\UrlRewriter) или через .htaccess / nginx-конфиг.
Подводные камни
Атрибуты OpenCart → свойства Битрикс. В OpenCart атрибуты (oc_attribute) — просто текстовые пары «название: значение». В Битрикс свойства типизированы. Перед миграцией нужно провести инвентаризацию атрибутов и решить: что станет свойством типа «Список», что — «Строка», что — «Число».
Опции товара. Если в OpenCart были опции (цвет, размер) с отдельными ценами и остатками — в Битрикс это торговые предложения (ТП). Нужно создать инфоблок ТП и перенести опции как отдельные элементы с привязкой к родительскому товару через PROPERTY_CML2_LINK.
Мультивалютность. OpenCart хранит несколько валют в oc_currency. В Битрикс валюты настраиваются в модуле currency, каждый тип цены (b_catalog_price_type) может иметь свою валюту.
Расширения. Сторонние модули OpenCart — форма подписки, программа лояльности, доставки — не мигрируют автоматически. Под каждый нужен аналог в Битрикс или кастомная разработка.
Сроки
| Этап | Типовые сроки |
|---|---|
| Анализ данных и проектирование структуры | 1–2 дня |
| Написание скрипта миграции и тест на копии | 3–5 дней |
| Перенос изображений | 1–2 дня |
| Заказы, покупатели, история | 1–2 дня |
| SEO-редиректы и проверка URL | 1 день |
| Финальная проверка и запуск | 1 день |
| Итого | 8–13 рабочих дней |
Сроки зависят от объёма каталога и количества нестандартных расширений в исходном магазине.
Что остаётся на стороне клиента
После миграции потребуется настроить дизайн (тема OpenCart не переносится), платёжные системы через модуль sale, службы доставки. Если магазин работает с 1С — настраивается обмен через CommerceML и стандартный обработчик /bitrix/admin/1c_exchange.php. Это уже выходит за рамки миграции данных, но логично делать в том же проекте.







