Перенос сайта интернет магазина с движка Битрикс Управление Сайтом на Битрикс 24

от автора

Кратко о сути статьи

Движок, он же фреймворк (framework), 1С-Битрикс довольно популярен в странах СНГ.
Подкупает он своей универсальностью, собственным маркетплейсом со множеством модулей расширения, как платных так и бесплатных. На данном движке существует множество интернет магазинов от разных разработчиков, а так же CRM система Битрикс 24.
Именно в связи с тем, что на одном и том же движке может отдельно существовать CRM система и интернет магазин, очень часто встречается одна распространённая среди многих пользователей ошибка. Корни которой идут от извечной проблематики взаимодействия разных IT специалистов. Суть ошибки заключается в том, что клиенты нанимают для установки и запуска сайта интернет магазина специалистов фронт-энд направления, которые умеют работать с движком 1С-Битрикс, и те рекомендуют к покупке коробочные редакции «1С‑Битрикс управление сайтом». В то время как у клиента уже есть корпоративный портал CRM Битрикс 24. Да, штатный модуль обмена между Б24 и 1С-БУС имеется, но он хорошо работает только со стандартным предустановленным набором объектов и настроек. На практике не существует ни одного портала CRM Б24, где бы не было бы добавлено пользовательских полей, универсальных списков, переделанных сделок, и много чего ещё.

В результате получаем крайне сложную структуру двухсторонних синхронизаций
1С-Предприятие <-> CRM Битрикс 24 <-> Интернет магазин 1С-БУС
отладить которую становится нереально, тем более в условиях постоянных изменений в объектах и их поведении.

В данной статье я предлагаю избавится от синхронизации CRM Битрикс 24 <-> Интернет магазин 1С-БУС путём переноса сайта Интернет магазина в единую базу данных с CRM Битрикс 24. На примере такого переноса сайта интернет магазина от разработчика АСПРО.

Одним из самых популярных сайтов (модулей, шаблонов) интернет магазина для движка 1С-Битрикс является АСПРО (по крайне мере среди моих клиентов). Именно на его примере я и покажу, как можно перенести сайт интернет магазина с движка 1С-БУС на CRM Битрикс 24.

Основные этапы переноса

  1. Перенос лицензии АСПРО.

  2. Обновление обоих порталов до последних версий.

  3. Установка АСПРО на хосте CRM Битрикс 24.

  4. Перенос общих настроек АСПРО.

  5. Перенос инфоблоков.

  6. Настройка меню и главной страницы.

  7. Перенос изменений сделанных в шаблонах.

Перенос лицензии АСПРО

Подача заявки на перенос сайта с одного хоста на другой (с ключа одного портала на ключ другого) оформляется через обращение в поддержку АСПРО . ВНИМАНИЕ перенос возможен только один раз! Если вы передумаете обратно уже будет «не отмотать»((
После переноса лицензии, сайт АСПРО на старом хосте продолжит работать, но не будет обновляться! Поэтому важно сделать перенос сразу, как только будет перенесена лицензия, иначе может возникнуть ситуация, что движок портала Б24 обновлялся, а АСПРО — нет, со всеми вытекающими.

Важно сделать перенос сразу, как только будет перенесена лицензия, иначе может возникнуть ситуация, что движок портала Б24 обновлялся, а АСПРО — нет, со всеми вытекающими.

Обновление обоих порталов до последних версий

В идеале, чтобы версии были идентичны, но в моём случае разница в версиях оказалась несущественной, в виду небольшой «захламлённостью» кастомными полями и объектами, а так же небольшого промежутка во времени.

Зато существенным оказалось то что, что Битрикс выпустил накануне новую версию виртуальной машины на CentOS 9 Stream, так как старый CentOS 7.9.2009 EOL-ьнулся 30 июня 2024. Пришлось начинать с переноса CRM Б24 на новую ВМ, об этом, наверное стоит написать отдельную статью.

Установка АСПРО на хосте CRM Битрикс 24

Так как у вас планируется наличие нескольких сайтов на одном хосте, я рекомендую разруливать http(s) трафик к ним на уровне NGINX. Чтобы сделать это стандартными инструментами Б24 выполняем следующие действия:

  1. Заходим в bash меню ВМ Битрикс #~/menu.sh

  2. В меню необходимо выбрать пункт Configure pool sites , затем Create a site, тип указываем link .

  3. Если у вас уже переключен домен на новый хост, можно сразу добавить сертификат, я использую Let’s Enscrypt (как его добавить описывать не буду, это легко «гуглится»).

После данных действий у вас добавится новый сайт в папке /home/bitrix/ext_www, а так же 2 конфигурационных файла в /etc/nginx/bx/site_avaliable/
bx_ext_ssl_your.site.conf
и bx_ext_your.site.conf

  1. Заходим в административной части портала Б24 Рабочий стол -> Настройки -> Настройки продукта -> Сайты -> Список сайтов нажимаем Добавить сайт , заполняем следующим образом:

Добавление сайта Битрикс 24

Добавление сайта Битрикс 24

Далее необходимо установить сам АСПРО, если лицензия уже перенесена, и вы установили все обновления, то вы увидите в списке Доступных решений Маркетплейса Аспро:

Затем можно сразу из предложенной кнопки установить АСПРО, а можно перейти в Список мастеров Рабочий стол -> Настройки -> Настройки продукта -> Список мастеров

устанавливаем АСПРО при помощи мастера

устанавливаем АСПРО при помощи мастера

На первом шаге установки выбираем созданный ранее в админке сайт:

Выбираем сайт

Выбираем сайт

Дальше проходим все этапы установки, попутно выбирая те же шаблоны, что были на предыдущем хосте, чтобы уменьшить себе работу в дальнейшем.

По окончанию установки вы можете открыть по доменному имени сайт АСПРО, во вкладке инкогнито или в другом браузере. Обратите внимание, что информация об авторизации пользователя, хранящаяся в Session ID в куках, привязывается к доменному имени и при попытке входа в рамках той же сессии, но по другому домену, у вас будет зависать страница на попап-окне входа.

Так же после установки у вас не будут открываться страницы разделов и инфоблоков, т.к. есть известная косячина, не заполняется файл urlrewrite.php, но это ничего страшного переходим: Настройки -> Настройки продукта -> Обработка адресов -> Правила обработки и генерируем заново:

Перенос общих настроек АСПРО

Самое простое действие, переносящее лишь маленькую толику того, что требуется.
Идём сюда: Рабочий стол -> АспроАспро: Max -> Настройки -> Поделиться настройками

На старом хосте выполняем действие №1, но новом №2

На старом хосте выполняем действие №1, но новом №2

Перенос инфоблоков

Тут тоже всё просто, но есть нюанс, на котором, можно серьёзно обжечься и «усложнить себе нелёгкую жизнь» разработчика/интегратора (тыжпрограммиста).
Сам по себе перенос инфоблоков описан в документации Битрикс, дублировать инструкцию тут не буду. Но самым важным является вот эта информация: «существование инфоблока проверяется только по полю Внешний код». На старом хосте в 99% случаев АСПРО единственный сайт на движке Битрикс, поэтому его ID «s1», в связи с чем все инфоблоки будут иметь постфикс «_s1», например: aspro_max_catalog_s1 , а на новом хосте, например aspro_max_catalog_s2, так как ID «s1» занят под сайт CRM Битрикс 24.

Поэтому требуется автозамена ID старого сайта на ID нового во всех xml файлах.
В итоге делаем следующее:

  1. Собираем в отдельной папке для каждого типа инфоблоков все файлы экспорта (с папками, папки автоматом создаются). Я создал 4 папки «adverds, catalog, content, regions» и в них экспортировал все имеющиеся инфоблоки.

    структура папок для экспорта/импорта инфоблоков xml

    структура папок для экспорта/импорта инфоблоков xml
  2. Далее копируем папку на новый хост, я так же копировал в папку upload . И делаем автозамену в файлах *.xml ID старого сайта на нового, можно sed, можно awk, я сделал так. Переходим в главную папку со всеми подпапками импортируемых инфоблоков и там выполняем:

    #find -type f -name "*.xml" -print0 | xargs -0 sed -i -e "s/_s1/_s2/g"

  3. Импортируем со следующими ниже настройками. Главное не перепутать типы инфоблоков, иначе получается дубликаты с одинаковыми названиями, придётся отделять «мух от котлет». Для этого важно разложить файлы экспорта по папкам соответствующим типам инфоблоков.

    ставим удалять, чтобы демоданные затёрлись автоматом

    ставим удалять, чтобы демоданные затёрлись автоматом
  4. Если у вас используются «Товарные предложения» и с первого раза не получилось их подвязать к товарам после импорта, тогда надо сначала загрузить «Каталог товаров», затем «Товарные предложения», подкрепить к «Товарам» «Товарные предложения», затем удалить «Товарные предложения» и заново загрузить. Но это только в том случае, если у вас не вышло с автоподменой ID сайтов, либо если вы импортируете инфоблоки на пустой АСПРО (без демоданных). Лучше так не делать, иначе придётся переназначать ID всех инфоблоков.

  5. И самое главное, так сказать вишенка на торте, теперь нам надо подменить каталог CRM каталогом АСПРО, чтобы в Б24 появились товары с сайта АСПРО. Для этого в командной строке PHP в админке порписываем и исполняем:

    Bitrix\Main\Config\Option::set('crm', 'default_product_catalog_id', #ИД КАТАЛОГА#). Вуаля, в Б24 теперь товары из каталога АСПРО, и больше не нужна никакая синхронизация и обмены.

  6. Если у вас ситуация иная, когда вам надо из Б24, в АСПРО подтянуть товары, тогда дело ещё проще, можно «Товарный каталог» и «Товарные предложения» не переносить вообще, а просто заменить в АСПРО каталог aspro на CRM

Настройка меню и главной страницы

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

Перенос изменений сделанных в шаблонах

По этому пункту так же нет универсального рецепта, можно переносить файлы копированием, можно в режиме оконного редактора копипастом, важно обращать внимание, на ID инфоблоков, т. к. они будут гарантированно отличаться. В случае отличий, придётся немного повозится чтобы составить соответствия.

Итоги

Мы обсудили проблему синхронизации, CRM Битрикс 24 и Интернет магазина 1С-БУС, нашли решение по переносу интернет магазина на один и тот же хост с CRM Битрикс 24, что исключает синхронизацию как таковую, а так же экономит деньги на приобретения и продление лицензии на 1С-БУС, не говоря уже про стоимость работы по настройке и поддержанию синхронизации.


ссылка на оригинал статьи https://habr.com/ru/articles/854532/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *