Импорт в Битрикс. С чего начинать?

В данной статье мы расскажем вам о своем опыте интеграции с Битриксом и о некоторых особенностях этой системы. Наша компания занимается разработкой e-commerce-интегратора, возможности которого включают наполнение интернет-магазинов товарами, интеграцию баз поставщиков с базами магазинов, анализ прайсов конкурентов, актуализацию склада, цен и др.

Следует также отметить, что у нас уже были клиенты, e-commerce-приложения которых работали на базе Битрикс. Однако они почему-то всегда просили нас экспортировать данные в разные форматы. Мы так и делали, и всех все устраивало. Однако все же возникал закономерный вопрос: "Почему Битрикс один, а форматы для импорта в него у всех разные?". Как-то раз одному из наших заказчиков потребовалось организовать импорт данных напрямую в Битрикс. Мы скачали демо-версию Битрикса для магазинов и  выяснили, что в нем есть возможность импорта данных в CSV-формате. А так как в этот формат мы уже давно и успешно импортируем, то и было решено воспользоваться для решения нашей задачи именно этой возможностью. Оценив стоимость проекта и уточнив все детали с заказчиком, мы принялись за импорт в Битрикс.

Импорт в Битрикс через CSV
Начав заливать данные, мы выяснили, что использовать CSV-формат не очень удобно из-за требования заказчика переносить параметры товаров. Если точнее, то CSV отбросили потому, что импортировать товары с параметрами очень неудобно в этом режиме:  Битрикс постоянно требовал непонятные заголовки для CSV-файла. Они были больше похожи на внутренние названия полей, и разбираться с ними не было желания. Очень маловероятно, что этот способ принес бы требуемый результат.
Таким образом, если вам нужно сделать простой импорт в Битрикс, где требуется перенести “название товара”, “описание”, “цену” и “картинку”, то тогда этот способ подойдет, если что-то большее - ищите другой способ.

При более детальном изучении было выяснено, что Битрикс поддерживает следующие способы импорта:
- через CSV;
- CommerceML;
- XML;
- через 1С.
Сразу скажу, что в конечном итоге выбрали импорт товаров в магазин через 1С, а вот почему - читайте ниже.

Импорт в Битрикс через CommerceML
Этот способ изначально казался наиболее перспективным, так как в Интернете много различных статей о том, какой CommerceML-формат классный. Немного смутил тот факт, что официальный сайт этого формата не открывался, но мы нашли и скачали XSD-формат, несколько примеров и начали анализировать.
Первое, что вызвало культурный шок, - это русский язык в названиях тегов, но, сделав ставку на локальность продуктов и доступность их для пользователей, можно было принять сей факт. Для русскоязычного населения и соответственно пользователей этот способ наиболее подходящий. Далее сделали вручную несколько тестовых файлов и начали тестировать импорт в Битрикс. Он не работал, как нам нужно было, и не было понятно, почему нельзя залить сразу и цены и склад.
После был предложен тестовый CommerceML-файл в импорт XML, и часть информации стала отображаться после импорта на сайте, как нам хотелось, но все еще не удавалось отобразить цены, только номенклатура висела на сайте. Эта загрузка CommerceML-файла  в импорт XML работала, но что-то все же было не так.

Импорт в Битрикс через 1С

Позже выяснилось, что есть способ импорта в Битрикс, которым пользуются чуть ли не все, - это импорт из 1С. Разобравшись, что для импорта нужны два файла - import.xml и offers.xml - и сделав примеры этих файлов, начали опять тестировать их на реальном сайте Битрикса, поочередно подставляя то в процедуру импорта CommerceML, то в процедуру импорта XML. Требуемый результат так и не получался. Где-то на форумах встретилась фраза о том, что процедура импорта CommerceML требует формат файла 1.х, а тот, который мы генерировали, был версии 2.х, поэтому мы начали разбираться, как же импортировать эти import.xml и offers.xml, которые были явно валидные, но почему-то все никак не хотели отображаться в магазине.
Поняв, что следует научиться импортировать в Битрикс именно эти два файла и зная, что они генерируются из 1С, появилось понимание того, что необходима 1С, чтобы их заимпортировать. 1С это умеет делать через веб. 1С получает в качестве параметра ссылку на веб-обработчик (можно сказать, сервис). В процессе импорта в Битрикс 1С передает файлы на сайт, а потом последовательно импортирует оба файла. Мы уже хотели начать писать программу эмуляции 1С, но вдруг наткнулись на интересное расширение, которое эмулирует работу импорта в Битрикс из 1С! В результате все сошлось.

Важные шаги процесса импорта в Битрикс механизмом через 1С:
1) Файл расширения - bx_1c_import_lite.php (он легко гуглится и находится на сайте Битрикса) копируем в корень и далее открываем в браузере. Открыв эту ссылку, мы получаем возможность импорта файлов import.xml и offers.xml.

2) Согласно документации файлы  import.xml и offers.xml следует положить в папку uploads/1c_catalog, но на деле получилось, что нужно было эти два файла положить в корневую папку 1c_catalog, предварительно ее создав.
3) Далее следует дать пользователю (в нашем случае администратору) возможность импорта в Битрикс (задаем права доступа) через интерфейс 1с, как показано на следующей картинке.

4) Затем решение проблемы отображения каталога Битрикс. Этот пункт мы сделали в самом начале наших исследований способов импорта в Битрикс, но нужен он именно здесь. Для отображения каталога следует выбрать правильные компоненты отображения. Общая идея настройки показана на следующем рисунке:

То есть надо открыть страницу Catalog в визуальном редакторе, после этого поменять визуальный компонент этой страницы на “Каталог” из доступных компонентов (на рисунке они справа). Затем, перетянув компонент на страницу, двойным кликом по нему начать редактирование, задав последовательно все требуемые настройки.

5) Свойства товара в Битрикс. На данном этапе нам требовалось засветить на сайте более 1 тыс. свойств на карточках продуктов. А показывались только Артикул и Цена, хотя в админке отображалось, что на товаре свойства есть, и свойства есть на инфоблоке каталога.  Впоследствии выяснилось, что свойства в Битриксе отображаются на странице товара только в случае, если им задан “Мнемонический код свойства”. Выставив парочку вручную и убедившись в правильности выставления, мы попытались найти, как выставить эти свойства через файлы import.xml и offers.xml, но ничего подходящего не нашли. После  был написан следующий скрипт, который заполнял в странице браузера мнемонические коды автоматически (странно, что в Битриксе нет такой функциональности "из коробки"), вот код JavaScript:

var elems = document.getElementsByTagName('*');
var t = 0;
for(var i=0; i<elems.length; i++)
{
var el = elems[i];
if (el.type == 'text')
{
if (el.value == '')
{
el.value = 'CATL_' + t;
t = t + 1;
}

}
}
alert(t);

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

Получив опыт первого импорта в Битрикс, хотим поделиться своими впечатлениями о системе (с точки зрения интегратора и поставщика данных):

1) Битрикс имеет огромные возможности "прямо из коробки".
2) Изначально Битрикс - это CMS общего назначения. Для использования в качестве магазина следует делать косметические настройки после инсталляции.
3) Битрикс - это для бизнеса. Существует огромное число студий, которые работают с Битриксом. У них всегда можно заказать разработку и консультации.
4) Поддержка формата CammerceML 2.0, используемого Битриксом во время импорта через 1С, лучшего из тех, с которыми нам приходилось работать (сегодня мы поддерживаем 17 CMS).

Вы можете заказать наполнение интернет-магазина или купить парсер товаров в интернет-магазина.

 

comments powered by HyperComments
Ivan Kopytko
2014-10-29 11:42:17
У меня возник вопрос. Я провел импорт каталога по указанной здесь схеме, однако у меня не перенеслись картинки и из свойств на данный момент отображаются только артикул и еденица измерения (шт). В инфоблоках свойства созданы как и необходимо, но при импорте они не заполняются. Подскажите как решить данную проблему?
Alexandr
2014-11-17 08:22:55
Новые свойства нужно настроить в шаблоне для отображения. Про картинки нужно смотреть, свойства так же нужно смотреть, есть разные их типы, парсер создает только тип Строка. Напишите нам в поддержку, посмотрим и поможем.
Сергей
2016-02-01 21:08:51
Добрый день! При более детальном изучении выяснил, что Битрикс поддерживает следующие способы импорта: - XML; - через 1С. Так как необходимо загрузить на сайт информацию из нескольких XML файлов в разные разделы, а форматы состоят из нескольких основных справочников и таблиц. Все значения распределены по атрибутам. Значения в справочниках могут иногда меняться (кроме идентификаторов, но так как файлы из разных источников идентификаторы тоже разные). Записи в файлы могут добавляться или могут быть удалены. То есть в первичной и вторичной недвижимости всегда только те варианты, которые в данный момент в продаже. Если вариант продан или выбыл из продажи, то он не выгружается в следующем файле. Первичная недвижимость состоит из 3-х основных таблиц: комплексы, корпуса и квартиры. Поскольку комплексы не всегда могут быть жилыми (может быть комплекс земельных участков), то и под корпусами и квартирам не стоит понимать таковые в прямом смысле. Т.е. корпуса могут быть некими условными делениями комплекса земельных участков, со своим номером и сроком вывода в продажу, а могут быть и настоящими корпусами с этажностью, адресом, типом и т.д. В квартирах помимо самих квартир могут быть коммерческие помещения, коттеджи, участки и т.д. Вопрос: как лучше организовать выгрузку XML файлов с привязкой к инфо блокам и их к свойствам которые на сайте (в XML файле свойств больше чем используется на сайте), при последующей загрузки фалов не указанные объекты удалялись самостоятельно. В свойствах привязка указана к яндекс и гудл картам (используются по разному)