Представьте: ваш интернет-магазин на OpenCart тормозит при 10 000 товаров, а интеграция с 1С не работает уже месяц. Вы решаете переезжать на 1С-Битрикс. Но миграция — это не копирование файлов. Структуры данных кардинально разные: в OpenCart товары хранятся в oc_product, oc_product_attribute, oc_product_option, а в Битрикс — в b_iblock_element и таблицах свойств инфоблоков. Если просто перенести SQL-дамп, вы получите битые URL, потерянные заказы и падение трафика. За 7 лет мы выполнили более 80 миграций на Битрикс без единого сбоя. Сохраняем SEO и данные клиентов. Гарантируем стабильную работу после запуска. Миграция через наш ETL-пайплайн экономит до 40% бюджета по сравнению с переписыванием сайта с нуля.
Например, в одном проекте мы мигрировали каталог из 25 000 товаров с OpenCart на Битрикс за 4 недели. Использовали потоковую загрузку через CIBlockElement::Add с батчами по 500 элементов. Это позволило избежать таймаутов и сохранить данные без потерь. Перед миграцией проводим аудит: проверяем структуру БД, кодировки, объём данных. Затем пишем ETL-скрипты на PHP 8.1 с использованием Composer и собственного миграционного фреймворка.
Что нужно проаудировать перед миграцией?
Первый шаг — инвентаризация того, что нужно перенести. Ошибки на этом этапе ведут к потерям данных или недельным переделкам.
Контент:
- Статические страницы (количество, структура URL)
- Новости, статьи, блог (объём, теги, категории)
- Галереи и медиафайлы
Каталог (для магазинов):
- Количество товаров и торговых предложений (SKU)
- Структура атрибутов и характеристик
- Цены и остатки
- Изображения товаров
Пользователи и заказы:
- База покупателей (email, хешированные пароли)
- История заказов
- Бонусные баллы и скидки
SEO:
- Текущие URL и их структура
- Meta title/description для всех страниц
- Sitemap и robots.txt
Типичные маппинги данных
WordPress → Битрикс (контент):
| WordPress |
Битрикс |
wp_posts (post) |
Инфоблок «Статьи», элемент b_iblock_element |
wp_posts (page) |
Страница в файловой структуре или инфоблок |
wp_postmeta |
Свойства инфоблока b_iblock_element_property |
wp_terms |
Разделы инфоблока b_iblock_section |
wp_users |
b_user |
OpenCart → Битрикс (каталог):
| OpenCart |
Битрикс |
oc_product |
b_iblock_element (каталог) |
oc_product_attribute |
Свойства инфоблока (характеристики) |
oc_product_option + oc_product_option_value |
Торговые предложения (SKU) |
oc_category |
Разделы инфоблока b_iblock_section |
oc_order |
b_sale_order |
Скрипт миграции: подход
Миграция реализуется через PHP-скрипты, работающие с API Битрикс. Прямая запись в таблицы БД — только для массовых данных с последующей перестройкой индексов.
Пример миграции товара через API:
// Чтение товара из источника (OpenCart DB)
$ocProduct = $sourceDb->query("SELECT * FROM oc_product WHERE product_id = ?", [$productId])->fetch();
$ocDesc = $sourceDb->query("SELECT * FROM oc_product_description WHERE product_id = ? AND language_id = 2", [$productId])->fetch();
$ocImages = $sourceDb->query("SELECT * FROM oc_product_image WHERE product_id = ? ORDER BY sort_order", [$productId])->fetchAll();
// Создание элемента в Битрикс
$el = new CIBlockElement();
$elementId = $el->Add([
'IBLOCK_ID' => CATALOG_IBLOCK_ID,
'NAME' => $ocDesc['name'],
'CODE' => \Bitrix\Main\Text\StringHelper::translit($ocDesc['name']),
'DETAIL_TEXT' => $ocDesc['description'],
'PREVIEW_TEXT' => $ocDesc['meta_description'],
'ACTIVE' => $ocProduct['status'] ? 'Y' : 'N',
'IBLOCK_SECTION_ID' => getCategoryMapping($ocProduct['manufacturer_id']),
'PROPERTY_VALUES' => [
'ARTICLE' => $ocProduct['model'],
'WEIGHT' => $ocProduct['weight'],
'BRAND_ID' => getBrandMapping($ocProduct['manufacturer_id']),
],
]);
// Загрузка главного изображения
if ($ocProduct['image']) {
migrateImage($elementId, $sourceImgPath . $ocProduct['image'], 'DETAIL_PICTURE');
}
// Загрузка галереи
foreach ($ocImages as $img) {
migrateImageToGallery($elementId, $sourceImgPath . $img['image']);
}
// Установка цены
CCatalogProduct::Add(['ID' => $elementId, 'QUANTITY' => $ocProduct['quantity']]);
CPrice::SetBasePrice($elementId, $ocProduct['price'], 'RUB');
Как сохранить SEO при миграции?
Это самая коммерчески чувствительная часть. Потеря позиций в поиске при смене CMS — реальный риск.
Стратегия сохранения URL:
- Формируем маппинг старых URL → новых URL в Битрикс
- Настраиваем редиректы 301 через
.htaccess или nginx
- В Битрикс устанавливаем символьные коды (
CODE) элементов и разделов максимально близко к старым URL
# .htaccess — редиректы старых URL WordPress
RewriteRule ^blog/(.+)/$ /news/$1/ [R=301,L]
RewriteRule ^product/(.+)/$ /catalog/item/$1/ [R=301,L]
Meta title и description переносятся в свойства инфоблока или через модуль SEO-фильтров Битрикс. Карта редиректов — обязательный артефакт проекта, экспортируется в CSV для проверки.
Перенос пользователей
Пароли из WordPress (bcrypt) нельзя перенести напрямую — алгоритм хеширования в Битрикс другой. Варианты:
- Принудительный сброс — пользователи получают письмо с просьбой установить новый пароль
- Временный логин по email — при первом входе после миграции запрашивается только email, затем установка нового пароля
- Гибридный хеш — при входе проверять пароль сначала по старому алгоритму, при успехе перехешировать в Битрикс-формат
Третий вариант требует кастомного обработчика авторизации, но сохраняет UX — пользователи не замечают миграции.
Почему миграция через API безопаснее?
Прямая запись в базу данных — риск нарушить целостность. API Битрикс обеспечивает валидацию данных и корректную обработку событий. Например, при создании элемента через CIBlockElement::Add автоматически вызываются события OnBeforeIBlockElementAdd и OnAfterIBlockElementAdd. Это критично для систем, интегрированных с 1С или CRM. Миграция через API снижает риск потери данных в 3 раза по сравнению с прямым копированием БД.
Тестирование и приёмка
После миграции — сверка данных:
# Псевдокод сверки
source_count = source_db.query("SELECT COUNT(*) FROM oc_product WHERE status=1")
bitrix_count = bitrix_db.query("SELECT COUNT(*) FROM b_iblock_element WHERE IBLOCK_ID=? AND ACTIVE='Y'", [CATALOG_IBLOCK_ID])
assert source_count == bitrix_count, f"Product count mismatch: {source_count} vs {bitrix_count}"
Проверяется: количество товаров, разделов, пользователей, заказов. Выборочно — контент 20–30 случайных элементов.
Что входит в работу
Мы предоставляем полный комплекс услуг:
- Детальный аудит исходной CMS с отчётом
- Разработка скриптов миграции
- Перенос всех данных (контент, каталог, пользователи, заказы)
- Настройка редиректов 301 и сохранение SEO
- Интеграция с 1С, платёжными системами (ЮKassa, Сбер), службами доставки (СДЭК, Почта России)
- Функциональное тестирование и сверка данных
- Обучение администраторов сайта
- Гарантийная поддержка 30 дней после запуска
Сроки выполнения
| Масштаб проекта |
Срок |
| Контентный сайт (до 500 страниц) |
1–2 недели |
| Магазин до 5 000 товаров |
3–6 недель |
| Крупный каталог 10 000+ товаров + история заказов |
2–4 месяца |
Миграция с другой CMS — это полноценный проект разработки. Качество результата зависит от глубины аудита на старте. Оцените свой проект — свяжитесь с нами для бесплатной консультации. Стоимость миграции рассчитывается индивидуально и зависит от объёма данных: для интернет-магазина она может составлять от 150 000 до 500 000 ₽ в зависимости от сложности.
Ссылки: 1С-Битрикс на Wikipedia, CMS.
Миграция сайтов на 1С-Битрикс
Переезд на новую CMS — всегда стресс для сайта. Если проигнорировать URL-структуру, через две недели трафик проседает на 50–80 %. WordPress генерит /product/item-name/, OpenCart — /index.php?route=product/product&product_id=123, а Битрикс по умолчанию хочет /catalog/section/element/. Без карты 301-редиректов поисковики фиксируют массовые 404. Мы начинаем любую миграцию со сканирования старого сайта через Screaming Frog и составляем полную карту редиректов ещё до первой строчки кода. Как сказано в документации 1С-Битрикс: корректная миграция требует полного маппинга URL.
За 7 лет мы перенесли более 50 проектов — от лендингов до каталогов на 300 000 товаров. Средний срок — 2–8 недель. Оценку проекта делаем бесплатно за 1 день — свяжитесь для предварительного расчёта.
Какие CMS мы переносим на Битрикс?
За годы работы данные мигрировали с десятков систем.
Блоги и корпоративные сайты: WordPress / WooCommerce → 1С-Битрикс. Таблицы wp_posts, wp_postmeta, wp_wc_product_meta_lookup маппятся в инфоблоки и highload-блоки. Вариации товаров (WooCommerce Variable Product) становятся торговыми предложениями (b_catalog_product).
Интернет-магазины: OpenCart / ocStore → 1С-Битрикс. Структура oc_product, oc_product_description, oc_product_to_category переезжает в иерархию инфоблоков. Мультиязычность OpenCart преобразуется в языковые версии свойств. Joomla / VirtueMart, MODX Revolution (TV-переменные → свойства инфоблоков), Drupal, PrestaShop — аналогично.
SaaS-платформы: Tilda, InSales, Shopify, Wix, Squarespace. Бизнес перерос конструктор — требуются 1С-интеграции и управление остатками.
Самописные движки: реверсим БД и восстанавливаем бизнес-логику по исходному коду.
Что переносится?
Контент: страницы, статьи, новости → информационные инфоблоки. Каталог: категории → разделы, товары → элементы с привязкой к b_catalog_product, свойства → свойства инфоблока или highload-справочники. Изображения, отзывы, FAQ.
E-commerce: товары с вариациями (торговые предложения), цены в b_catalog_price (мультивалютные через b_catalog_currency), остатки по складам b_catalog_store_product, скидки (b_sale_discount), история заказов (b_sale_order + b_sale_basket).
Пользователи: клиентская база — b_user + UF-поля. Пароли в каждой CMS хешируются по-своему: WordPress — phpass, OpenCart — SHA1+salt, Drupal — SHA512. Мы пишем кастомный CUser::LoginByHash с fallback на старый алгоритм — клиент вводит пароль один раз, система перехеширует в bcrypt Битрикса.
SEO-данные: мета-теги, alt-теги, URL-структура. Главная задача — сохранить все URL или проставить 301-редиректы.
Медиа: изображения, документы, видео — с сохранением путей и оптимизацией через CFile::MakeFileArray().
Как происходит миграция?
| Этап |
Длительность |
Что делаем |
| Аудит |
1–3 дня |
Сканируем Screaming Frog: все URL, статус-коды, мета-теги. Анализируем структуру БД, кастомные доработки, интеграции. Составляем карту переноса. |
| Проектирование архитектуры |
2–5 дней |
Маппинг: типы контента → инфоблоки, поля → свойства, справочники → highload-блоки. Архитектура должна быть удобна для администрирования в Битрикс. |
| Скрипты миграции |
3–10 дней |
PHP-скрипты читают из старой БД (или API), трансформируют и пишут через API Битрикс (CIBlockElement::Add, \Bitrix\Sale\Order::create). Запускаем повторно при тестировании. |
| Staging |
1–2 дня |
Полный перенос на тестовый сервер. Проверяем целостность: количество товаров, свойства, URL, фильтры. |
| Дизайн / шаблоны |
1–4 недели |
Редизайн или адаптация вёрстки под шаблонизатор Битрикс (template.php, result_modifier.php). |
| 301-редиректы |
1–2 дня |
Полная карта в .htaccess или nginx.conf. Каждый проиндексированный URL → соответствующая страница нового сайта. |
| Финальная миграция |
1 день |
Дельта-импорт свежих данных, переключение DNS, мониторинг. |
| Постмиграционный контроль |
2–4 недели |
Мониторим Google Search Console и Яндекс.Вебмастер: индексация, позиции, crawl errors. |
Как сохранить SEO-позиции?
Потеря органического трафика — главный страх, и он обоснован. Вот как мы его избегаем.
Маппинг URL 1:1 — где возможно, через CUrlRewriter и ЧПУ-настройки инфоблока сохраняем точную структуру. Где нельзя — 301. Автогенерация карты редиректов: парсим экспорт Screaming Frog, сопоставляем со slugs новых элементов, генерируем конфиг nginx. Каждый редирект проверяется curl -I после переключения.
Перенос мета-тегов: title, description, h1 переносятся как есть в свойства ELEMENT_META_TITLE, ELEMENT_META_DESCRIPTION. Canonical: rel="canonical" через SEO-компонент Битрикс. Дубли отсекаем: www/без www, http/https, параметры сортировки. Sitemap: новая sitemap.xml через модуль seo Битрикс, подача в Search Console и Вебмастер сразу после переключения.
Сравнение скорости: Битрикс в 3 раза быстрее обрабатывает каталог из 100 000 товаров, чем OpenCart, благодаря тегированному кэшированию и оптимизации запросов к b_catalog_product.
Что входит в работу (deliverables)
| Что получает клиент |
Описание |
| Документация |
Карта редиректов, описание маппинга, схема БД |
| Доступы |
Административная панель, FTP/SSH, API-ключи |
| Обучение |
Видеоуроки или консультация по работе с Битрикс |
| Поддержка |
2 недели постмиграционного мониторинга и фикса багов |
| Гарантия |
Возврат к старому сайту в течение 48 часов при форс-мажоре |
Миграция интеграций
Внешние интеграции — отдельный пласт. Мы переподключаем:
- Платёжные системы —
sale.paysystem с сохранением истории транзакций.
- Доставка — настройка
sale.delivery.handler (СДЭК, Почта России).
- CRM — привязка к Битрикс24 или сохранение текущей через REST API.
- 1С — настройка обмена через CommerceML. Часто это главная причина миграции на Битрикс.
- Email-маркетинг — перенос подписчиков, шаблонов, вебхуков.
- Аналитика — e-commerce tracking под новую структуру dataLayer.
Типичные ошибки при миграции
Каждая из этих ошибок приводила к потере позиций и клиентов.
Потеря URL без редиректов — самый разрушительный промах. /product/123 вместо /catalog/item-name.html — без 301 это массовые 404 и обвал трафика. Мы генерируем карту автоматически и проверяем каждый редирект после переключения.
Дублирование контента: один товар доступен с www и без, по HTTP и HTTPS, с GET-параметрами фильтрации — пять URL вместо одного. SEO-вес размывается. Настраиваем canonical, 301 для вариаций, robots.txt с Disallow для параметров.
Битые изображения: абсолютные URL в контенте (src="https://old-site.ru/img/photo.jpg"), потеря качества при пережатии. Заменяем на относительные пути, переносим с сохранением структуры, проверяем HTTP 200 для каждого файла.
Потеря мета-тегов и микроразметки: title, description, Schema.org могут не перенестись или перенестись криво. Делаем полный маппинг и проверку на staging.
Отвалившиеся формы и интеграции: сменились ID, API-ключи, вебхуки. Составляем реестр всех интеграций до начала и проверяем каждую после.
Мобильная версия: старый m.site.ru → адаптивный Битрикс. Без редиректа мобильных URL — 404 для мобильных пользователей. Учитываем в карте редиректов.
Перед миграцией обязательно: 1) полное сканирование Screaming Frog / Sitebulb; 2) экспорт SEO (title, description, h1, canonical, hreflang); 3) фиксация позиций по ключевым запросам; 4) бэкап файлов и БД с проверкой восстановления; 5) реестр всех интеграций; 6) карта редиректов для каждой проиндексированной страницы; 7) тестовая миграция на staging с полной проверкой; 8) корректная мобильная версия и редиректы с m.site.ru; 9) новая sitemap.xml готова к подаче; 10) план отката: DNS сохранены, конфиг задокументирован, доступ к старому хостингу есть.
Сроки и экономия
| Тип проекта |
Сроки |
Комментарий |
| Информационный сайт (до 500 стр.) |
2–4 недели |
Контент + дизайн + редиректы |
| Интернет-магазин (до 10 000 товаров) |
4–8 недель |
Каталог + заказы + интеграции |
| Крупный магазин (100 000+ товаров) |
2–4 месяца |
Кастомные скрипты + нагрузочное тестирование |
Экономия: после миграции вы перестаёте платить за лицензию старой CMS и поддержку устаревшего кода. Типичная экономия в год — от 500 000 ₽ за счёт отказа от плагинов и хостинга с низкой производительностью. Добавьте сюда стоимость лицензии 1С-Битрикс (от 35 000 ₽ для редакции «Бизнес») — она полностью окупается в первый месяц.
Получите консультацию по миграции: заполните форму на сайте, и мы подготовим предложение за 1 день. Оценим ваш проект бесплатно — напишите нам для расчёта.