Это нормально, когда в начале бизнеса люди делают интернет-магазин на бесплатных движках типа OpenCart, Joomla и тп, а потом переходят на платные движки типа Bitrix. При смене движка важно не только корректно перенести данные, но и сохранить SEO-характеристики сайта, а также потом проверить позиции сайта по основным запросам. В этой процедуре я интенсивно использую 1С, при чем не только в трансформации данных, но и в SEO-манипуляциях. Моя 1С может не только парсить сайты проверя при этом корректность технической SEO-оптимизации (www, без www, коды ответов, 301-редирект, 404-редирект, уникальность метатегов и H1), но и с помощью API вытаскивать из Яндекс-вебмастеа позиции по разным запросам.
Все данные, которые переносятся из любой CMS в Битрикс можно условно поделить на следующие группы (в зависимости от роли в Битриксе):
Процесс переноса делится условное на три стадии:
Загрузка в Битрикс может производится следующими способами:
Какой способ использовать - это зависит от задачи и начальных данных.
Особенностью штатного механизма XML-импорта данных является то, что структуру разделов нужно задавать в иерархическом виде, а не в линейном, как это хранится в SQL-базах. Для преобразования линейного представления групп в иерархический я использую промежуточное хранение групп в 1С-справочнике. То есть, сначала загружаю линейные данных в 1С-справочник, а потом с помощью рекурсивной функции получаю иерархическую структуру групп.
На изображении, которое ниже, представлена структура групп в линейном виде. Поле «category_id» - это уникальный код текущей группы. Поле «parent_id» - это код родительской группы.
Вот так выглядит иерархическая структура групп в 1С-справочнике:
Вот так выглядит иерархическая структура групп в XML-файлике:
Вот так выглядят группы в административной панели Битрикса:
Для меня основным способом извлечения данных из любой CMS (за исключением без-SQL-льных) является json-файлики, выкаченные из PhpMySQL. Основным способом загрузки данных в Bitrix для меня является штатный XML-импорт. Мои основные инструменты и наработки связаны с преобразованием этих json-файликов в xml-файлики и тестированием механизмом XML-импорта. В официальной документации битрикса про XML-импорт написано следующее:
С одной стороры, официальная документация по поводу внутренних механизмов XML-импорта отстутствует, с другой стороны, этот механизм позволяет делать много того, что не может CSV-импорт. Кроме этого, в этом механизме есть функционал, который позволяет загружать большие объемы данных. Если загрузку делать своими PHP-скриптами, то там нужно будет предусматривать ограничения PHP-сервера на долгую работу скрипта.
В битриксе каждый элемент и каждый раздел инфоблока имеют штатную возможность привязать две картинки - детальная картинка и картинка анонса. Кроме этого туда можно еще добавить сколько угодно картинок в виде свойств типа "Файл". В подавляющем большинстве случаев в магазине-источнике у каждого товара, а иногда и у раздела имеется привязанная картинки и еще и не одна. К товару помимо картинок могут быть еще привязаны файлы. Например, к товару можно привязывать инструкции в pdf-формате. В своей практике я так же встречал случаи, когда к группам товаров привязываются xls-файлики, в котором находятся прайс-листы товаров, содержащихся в этих группах.
Как известно в Битриксе основной уникальной меткой товара или раздела является его ID, который происходит из механизма работы SQL-сервера и имеет тип «Целое число». Его точным аналогом в 1С является GUID, примерным аналогом в 1С является код номенклатуры. Поисковые роботы устроены так, что им очень не нравится когда для идентификации товара используют ID. Этим роботам больше нравится, когда товар идентифицируют набором букв, которые как можно ближе напоминают обычное наименование товара. Этот набор букв иногда сокращенно называют ЧПУ (человеко-подобные урлы).
В практике переноса данных часто встречается потребность запускать долгоиграющие php-скрипты. Например, удалить все разделы инфоблока, удалить все элементы инфоблока, заполнить внутренний код значениями идентификатора или значениями GUID, взятыми из 1С. У меня несколько раз были ситуации, когда падали сервера после запуска долгоиграющих скриптов. По моей точке зрения они падали потому-что хостеры что-то не так делали. Тех-поддержка хостера конечно же их перезапускала, но все равно это неприятная ситуация. В идеальном случае, если время скрипта превышает лимит, то сервер должен просто отдавать 504 код ответа, но не падать. Не все сервера падали, но некоторые падали. Поэтому, что бы не попадать в такие ситуации, я разбиваю один долгоиграющий скрипт на несколько коротко играющих и запускаю их по очереди с помощью 1С с разными параметрами. 1С тут выполняет роль крона. Крон хуже 1С по следующим причинами:
В данном переносе встречаются следующие особенности:
Нужно разобраться с этим.
В каждой области человеческой деятельности есть свои неписанные правила. В некоторых случаях (но далеко не во всех) для этого применяется понятие «Обычай делового оборота». Область веб-разработки не является исключением. Поэтому, если Вы хотите, что бы я Вам перенес данные или сайт в Ваш Битрикс, Вам нужно заполнить бриф.