Міграція сайту на нову версію 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, Бітрікс 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 години.







