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

Движок, он же фреймворк (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С-БУС, не говоря уже про стоимость работы по настройке и поддержанию синхронизации.

Комментарии (12)


  1. Zivaka
    30.10.2024 08:23

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

    А где именно вы это обсудили? Вроде в статье просто описан процесс установки, однако про синхронизацию нет ни слова и с ней как были проблемы, так и останутся.


    1. sevnet Автор
      30.10.2024 08:23

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

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


      1. Zivaka
        30.10.2024 08:23

        Если память мне не изменяет, то это не прям вот так сходу заработает, а потребует допиливания с обеих сторон еще.


        1. sevnet Автор
          30.10.2024 08:23

          Тут принципиально пилить нечего, об этом и статья, Товарный каталог ИМ становится товарным каталогом Б24, или наоборот, описано оба кейса. Заказы ИМ становятся заказами Б24, Инфоблоки сливается воедино, можно из Б24, пилить новости и статьи, выдумывать новые инфоблоки для ИМ. Достаточно в настройках типа инфоблока поставить галочку "Использовать для сайта" и указать домен Б24, с ID "s1".
          Я потому и написал статью, что на мой взгляд это гениально просто. Достаточно иметь Б24 и купить модуль с шаблоном интернет магазина. И всё! Никаких больше синхронизацией CRM и Интернет магазина!


          1. Zivaka
            30.10.2024 08:23

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


            1. sevnet Автор
              30.10.2024 08:23

              Ну да, статья работает только если один инфоблок каталога товаров, а если несколько, то вариант только отлавливать события (Add, Update, Delete) на других инфоблоках каталогов и записывать изменения в тот, что привязан к CRM.
              Собственно на форуме Б24, уже ждут не первый год реализацию нескольких каталогов в CRM. Но при этом без проблем можно будет синхронизировать только основные поля инфоблока, типо Название, Активность, Дата анонса, Фотографии и т.п.. А вот кастомные параметр, они же PROPERTY, не выйдет, собирать все в одну таблицу не вариант, каша получится. Но по большому счёту в пользовательской части Б24, параметры товаром и не нужны, они нужны чтобы попадать в Лиды, Заказы, Сделки, Счета. А если понадобится набивать описания, то можно в админке, как собственно на 1-БУС сейчас и происходит.
              А вот ещё пришла гениальная идея, на странице каталога Б24, можно обрабатывать через result_modifire.php вывод и скармливать туда все инфоблоки с галочкой "Товарный каталог". Плюс при открытии товара, так же в result_modifire.php подставлять выборку по карточке товара из другого инфоблока.
              А это кстати очень интересная идея, жаль нет клиента, с несколькими товарными каталогами, я бы взялся за реализацию.


              1. Zivaka
                30.10.2024 08:23

                Ага, а если там будут еще торговые предложения - то все становится еще веселее и по факту поддержание этого зоопарка будет становиться все сложнее, особенно если есть посещаемость и важна скорость обновления остатков и прочего.


                1. sevnet Автор
                  30.10.2024 08:23

                  Это вы меня озадачили, конечно, у меня аж глаз загорелся, решить задачку. Я понимаю, что вся сложность с привязкой других каталогов ко множеству других объектов, да ещё и печатных форм. Поэтому важна однородность объектов, а разные каталоги это разные PROPERTY...
                  В общем если решу, напишу ещё одну статью. Главное чтобы клиент нашелся, который оплатит)))


    1. sevnet Автор
      30.10.2024 08:23

      Спасибо за замечание, действительно не очевидно, что именно я предлагаю.
      Подправил статью:
      https://c2n.me/4lJLJ3s.png


  1. MX4RS
    30.10.2024 08:23

    Важно помнить что не надо вообще делать сайт на движке Бус. Он не работает корректно Ри в связке с 1с ни с Б 24. Б24 то не работает корректно в синхронизации с 1с - всё это маркетинговое вещание лапши на уши. Если выполнить это простое правило избежите массы проблем. Есть масса нормальных движков под любые нужды признанные во всем мире а не только в СНГ ( как Битрикс) - от wp до magenta


    1. sevnet Автор
      30.10.2024 08:23

      Тут вопрос касается случая, когда уже бизнес работает с Б24, какой бы иной движек ИМ не взять, всё равно получается 3х-сторонниый обмен 1С <-> Б24 <-> ИМя же предлагаю от последней связки Б24 <-> ИМ избавится, так как БД CRM Б24 - будет являться БД ИМ и синхронизация больше не нужна!


  1. StoAlex
    30.10.2024 08:23

    Не спеша переношу старый сайт(не битрикс) на решение Аспро в Битрикс24.
    Плюс синхронизация с 1С|Б24.
    На практике не всё работает гладко и как хотелось бы.

    Между 1С и Б24 настроена синхронизация Контрагентами и их реквизитами, контактными лицами, товарами и счетам. Работает в целом удовлетворительно.
    При массовом обмене товарами (более 200 ед) замечал задваивание артикулов, и свойств. Поэтому стараюсь в 1С за раз не изменять более 200 товаров.

    "заменить в АСПРО каталог aspro на CRM"

    Сходу нормально не заработает. Нужно будет в Каталог товаров CRM перенести все Свойства с каталога Аспро. И присвоить им аналогичные Коды.
    Возникает проблема со свойством "в наличии'.
    Это свойство не изменяется, если в Б24 товар списывается|оприходуется в складском учёте, или в сделках ставятся резервы на товар. Получаем на сайте товар есть в наличии, а по факту его нет.

    Что касается единого каталога товаров для Б24 и ИМ.
    В этом есть неудобство. Но второй каталог,мне кажется, создаст еще больше проблем.
    Пока мысли такие по единому каталогу:
    Не все разделы каталога и не все товары нужно показывать на сайте.
    К тому же один и тот же товар, мне нужно показывать на сайте Аспро и на лендинге Сайты24.
    Второй каталог - мне кажется будет излишним.
    Я бы в решении Аспро добавил возможность построения Меню каталога от определенного раздела каталога.
    Для бокового меню Аспро то же самое. Учёл бы эти изменения в построении хлебных крошек и формировании карты сайта.
    При этом нужно как то закрыть на сайте от поиска и индексации Разделы и товары которые не должны отображаться на сайте.
    Если товар привязан к нескольким разделам, ЧПУ строятся по Основному разделу - это может быть не всегда удобно.