Pull to refresh

Наполнение битрикса через внутренние механизмы интеграции с 1С без 1С

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

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

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

Пробуем CSV.

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

Битрикс поддерживает следующие варианты импорта, это мы выяснили уже изучив систему более подробно:
— Импорт через csv;
— Импорт CommerceML;
— Импорт XML;
— Импорт через 1С.

Сразу скажу, что в конечном итоге выбрали импорту товаров в магазин через 1С, а вот почему – читайте ниже.

Импорт используя CommerceML.

Этот способ который изначально казался наиболее перспективным, в интернете много различных статей о том, что есть CommerceML формат и как классно, что он вот такой единый формат для e-commerce. Странно правда, что официальный сайт этого формата не открывался, но честно нашли и скачали 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с прямо из битрикса! Бинго, теперь все сошлось.
Далее будет описан процесс настройки процесса импорта из файлов import.xml и offers.xml без 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) Свойства. В действительности на данном этапе нам требовалось засветить на сайте более одной тысячи свойств на карточках продуктов. А Светилось только Артикул и Цена, хотя в админке показывалось что на товаре свойства есть и свойства есть на инфоблоке каталога. Впоследствии выяснилось, что свойства в битриксе отображаются на странице товара только если им задан “Мнемонический код свойства”. Выставив парочку руками и убедившись в правильности выставления, мы произвели попытки найти как выставить эти свойства через файлы 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) Поддержка формата CommerceML 2.0 используемый битриксом во время импорта через 1С – это лучший из тех с чем нам приходилось работать (а сегодня мы поддерживаем 17 cms), ну а сама реализация просто великолепна.

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

Использованные ссылки:

http://habrahabr.ru/company/bitrix/blog/131344/
http://dev.1c-bitrix.ru/community/webdev/group/78/blog/1654/
http://catalogloader.com
Tags:
Hubs:
Total votes 34: ↑25 and ↓9 +16
Views 50K
Comments Comments 34