Міграція сайту з 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. Це вже виходить за межі міграції даних, але логічно робити в тому ж проекті.







