среда, 24 октября 2012 г.

Миграция Bitrix с 7 версии на 11

Есть у нас заказчик один, у него большой развесистый сайт был на битриксе седьмой версии. А битрикс седьмой версии, как известно, вышел давным-давно, и мы подчас сталкивались с какими-то косяками, которые были исправлены в более поздних версиях. Более того, приходилось дописывать вручную всякую функциональность, которая в более поздних версиях появилась, а в седьмой ещё не было. Самое ужасное, на что пришлось пойти - мы подменили модуль main на модуль, взятый из девятой версии, как раз по этим причинам (более свежий вариант модуля main уже не работал после имплантации). Такое довольно необычное монстрообразные сооружение существовало до недавнего времени, потому что мы уговорили заказчика обновить битрикс до самого свежего, одиннадцатой версии.

Процесс обновления от версии к версии мы решили не проводить, а купить новый битрикс редакции "Эксперт", и накатить на него контент со старого сайта. Для этого мы развернули у себя две дополнительные площадки, на одной - клон промышленного сайта заказчика, на второй - свежеустановленный битрикс одиннадцатой версии. На него мы накатили всю публичную часть, и принялись смотреть, что ещё где не работает.

Перенос инфоблоков осуществляли через экспорт в XML со старого сайта и импорт в XML на новом. Разумеется, у них поменялись идентификаторы, и по всей публичной части пришлось лазить и везде их менять, потому что в битриксе везде по умолчанию привязка к ID. Веб-формы мы просто перенесли, сделав дамп отдельных таблиц, и накатив их на новый сайт. Точно так же мы поступили с почтовыми шаблонами, но тут нас ожидала засада. Во-первых, таблицы почтовых шаблонов в одиннадцатой версии имеют дополнительные поля, мы их добавили руками. Во-вторых, что оказалось не сразу очевидно, идентификатор сайта на старом сайте был "ru", потому что на седьмой версии битрикса (или даже более ранней, потому что у заказчика сайт давно, и он, может, с пятой или шестой обновлял его до седьмой несколько лет назад), а на новом по умолчанию создался "s1". Разумеется, вся привязка почтовых шаблонов к сайту побилась. Мы заметили это не сразу, пришлось вынимать данные, которые пользователи вносили в веб-формы, формировать из них неотправленные письма, и рассылать.

Экспорт и импорт пользователей в битриксе по вполне понятным причинам не предусмотрен. Мы поступили с пользователями и группами точно так же, как с веб-формами и почтовыми шаблонами - накатили дампы таблиц на новую базу, а потом добавили в них новые в одиннадцатой версии поля.

Ну а потом обнаружили, что у заказчика на сервере стоит Zend Server с PHP версии 5.1, в то время, как у нас уже на всех площадках 5.3. И на версии 5.1 отвалился визуальный редактор страниц. Путём долгих поисков я обнаружил, что дело в классе CMain, в том месте, где начинается буфферизация вывода при обработке каких-то аяксовых случаев. На PHP версии 5.1 в этом месте интерпретатор то ли выпадал с подавленной ошибкой, то ли просто не отдавал начатый буффер при закрытии. Поправил код ядра, и забыл об этом. И спустя пару дней закачик поставил себе обновления на сайт и, конечно, мои изменения затёрлись. Я их вернул (одну строчку закомментировать, главное - знать, какую), починив визуальные редакторы PHP и HTML, а самый главный визуальный редактор текста и стилей так и не починился. Написал в ТП битрикса, хотя не питаю надежд на вразумительный ответ.

Комментариев нет:

Отправка комментария

Ублюдочный Гугл поломал форму комментариев. Извините.