Миграция сайта на новую версию 1С-Битрикс
Переход с Битрикс 16 на 22 — это не просто «обновить» в административной панели. За годы работы сайта накапливаются нестандартные модули, устаревшие API, шаблоны на старом ядре. Попытка обновить без подготовки нередко заканчивается белым экраном на продакшене. Правильная миграция — поэтапный процесс с тестовым стендом и возможностью отката.
Что меняется между версиями
Битрикс активно мигрирует со старого ядра (D5/kernel) на D7. Ключевые поломки при обновлении:
-
Старый API каталога (
CIBlockElement,CCatalog) заменяется на ORM-классыBitrix\Iblock\ElementTable,Bitrix\Catalog\* -
CUserчастично заменён на\Bitrix\Main\User*— методы авторизации изменились -
Компонент
bitrix:catalogв версиях 20+ переработан с поддержкой SKU, старые шаблоны требуют адаптации -
saleмодуль — с версии 17 изменена архитектура заказа (Order, Basket, Shipment — объекты вместо массивов) -
PHP — Битрикс 23+ требует PHP 8.0+, старый код с
preg_replace('/e', ...)иeach()падает
Этапы миграции
Этап 1. Аудит текущего состояния
Перед любым обновлением — полная инвентаризация:
- Список нестандартных модулей (
/local/modules/,/bitrix/modules/— кастомные) - Список модулей из Маркетплейса с проверкой совместимости с целевой версией
- Кастомные шаблоны компонентов в
/local/templates/и/bitrix/templates/ - Использование устаревших функций:
grep -r "CIBlockElement::" /local/ --include="*.php" - PHP-версия на сервере
Этап 2. Тестовый стенд
Поднимается полная копия сайта на отдельном сервере или домене. На стенде:
- Делается резервная копия файлов и базы данных
- Выполняется поэтапное обновление через административную панель (
Обновление системы) - Фиксируются все ошибки из
/bitrix/cache/и логов PHP
Этап 3. Совместимость модулей
Для каждого стороннего модуля из Маркетплейса — проверить версию совместимости на портале разработчика. Если обновления нет — связаться с разработчиком или переписать функционал.
Для кастомных модулей — ручная адаптация. Типовые правки:
// Было (старое ядро):
$dbResult = CIBlockElement::GetList([], $filter, false, false, $select);
// Стало (D7 ORM, Bitrix 22+):
$result = \Bitrix\Iblock\ElementTable::getList([
'filter' => $filter,
'select' => $select,
]);
Этап 4. Адаптация шаблонов
Шаблоны компонентов каталога — главная точка боли. В Битрикс 20+ компонент bitrix:catalog сменил структуру $arResult. Переменная $arResult['ITEMS'] заменена на $arResult['CATALOG_ITEMS'] с новой структурой торговых предложений.
Адаптация шаблона каталога занимает 40–60% всего времени миграции.
Этап 5. Тестирование функциональности
Чек-лист тестирования:
- Добавление товара в корзину
- Оформление заказа (каждый шаг)
- Личный кабинет — история заказов
- Поиск по каталогу
- Фильтрация товаров
- Оплата (все подключённые платёжные системы)
- Синхронизация с 1С
- Email-уведомления
- Административная часть — редактирование товаров
Этап 6. Перенос на продакшен
Оптимальный сценарий:
- Ночное обслуживание (уведомить пользователей заранее)
- Резервная копия продакшена
- Обновление Битрикс через
update_system_step.phpс последовательным прохождением шагов - Применение подготовленных патчей модулей и шаблонов
- Прогон чек-листа
- Возврат к нормальному режиму работы
Типичные проблемы
| Проблема | Причина | Решение |
|---|---|---|
| Белый экран после обновления | PHP-несовместимость в кастомном коде | Включить display_errors, найти файл |
| Слетел дизайн каталога | Изменился $arResult в компоненте |
Адаптация шаблона |
| Не работает корзина | Изменён API модуля sale |
Рефакторинг кода работы с заказом |
| Старый модуль не работает | Нет версии для новой платформы | Аналог из Маркетплейса или кастомная доработка |
Сроки выполнения
| Масштаб проекта | Срок |
|---|---|
| Типовой магазин, минимальные кастомизации | 3–5 дней |
| Средний проект, 5–15 кастомных модулей | 2–3 недели |
| Крупный портал, сложная интеграция с 1С | 1–2 месяца |
Миграция версии — плановое техническое обслуживание, а не разовая катастрофа. При правильной подготовке продакшен находится в режиме обслуживания 2–4 часа.







