Найти в Дзене
Павел Гейт

Настройка интеграции Битрикс с 1С и ручной импорт

Очень многие считают, что Битрикс и 1С совместимы из коробки, и никакой дополнительной настройки для их совместной работы не требуется. Об этом нас также убеждает и производитель этих продуктов. Однако, на деле всё происходит далеко не так просто. Как правило, разработка интернет-магазина начинается без чёткой структуры каталога, максимум имеется только список основных разделов и свойств. И будет просто прекрасно, если данная структура совпадет со структурой данных в 1С. Тогда можно будет обойтись минимальной настройкой Битрикс. В противном же случае, танцев с бубнами не избежать - либо придется переделывать каталог и типы свойств под структуру 1С, либо переделывать базу в 1С под нужную заказчику структуру в Битрикс, либо писать кастомные сценарии выгрузки, что влечёт очень большие трудозатраты. В рамках данной статьи рассмотрим простейший вариант - когда структура каталога в 1С и в нашем сайте на Битрикс совпадают. Прежде всего, нам будет нужно связаться со специалистом по 1С заказчик

Очень многие считают, что Битрикс и 1С совместимы из коробки, и никакой дополнительной настройки для их совместной работы не требуется. Об этом нас также убеждает и производитель этих продуктов. Однако, на деле всё происходит далеко не так просто.

Как правило, разработка интернет-магазина начинается без чёткой структуры каталога, максимум имеется только список основных разделов и свойств. И будет просто прекрасно, если данная структура совпадет со структурой данных в 1С. Тогда можно будет обойтись минимальной настройкой Битрикс. В противном же случае, танцев с бубнами не избежать - либо придется переделывать каталог и типы свойств под структуру 1С, либо переделывать базу в 1С под нужную заказчику структуру в Битрикс, либо писать кастомные сценарии выгрузки, что влечёт очень большие трудозатраты.

В рамках данной статьи рассмотрим простейший вариант - когда структура каталога в 1С и в нашем сайте на Битрикс совпадают.

Прежде всего, нам будет нужно связаться со специалистом по 1С заказчика и получить от него архив с полной выгрузкой. Выглядит он примерно так:

Архив выгрузки из 1С
Архив выгрузки из 1С

Разберем структуру файлов в нём. В этом нам поможет официальная документация:

import.xml - самый важный файл для импорта. В нем может содержаться информация о структуре каталога, товарах, свойствах, типах цен, складах и единицах измерения. Случайные символы перед расширением .xml указываются по рекомендации Битрикс с целью безопасности при передаче данных.

В нашем примере база выгрузки довольно большая, и информация о свойствах товаров вынесена в отдельный файл в папке properties.

offers.xml - там хранятся торговые предложения и их свойства.

prices.xml - там находятся цены

rests.xml - информация об остатках на складах.

Примеры самих файлов можно посмотреть в документации Битрикс.

Перейдем к настройкам Битрикс.

Первым делом, нужно выставить отображение внешнего кода в свойствах инфоблоков для выставления соответствий ID в базе 1С и в базе Битрикс. Для этого в настройках модуля "Информационные блоки" ставим галочку "Показывать код загрузки из внешних источников" и сохраняем:

Настройки модуля инфоблоков Битрикс для импорта из 1С
Настройки модуля инфоблоков Битрикс для импорта из 1С

Далее корректируем параметры импорта в специальном разделе Магазин->Настройки->Интеграция с 1С:

Настройки интеграции с 1С в меню магазина Битрикс
Настройки интеграции с 1С в меню магазина Битрикс

Здесь можно все настройки оставить по умолчанию. Заслуживает внимания только поведение магазина с товарами, которых нет в выгрузке. Доступны варианты: Удалить, Деактивировать, Ничего не делать.

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

Открываем первый файл import.xml и находим в нем ИД каталога товаров:

-4

Это значение находится в самом начале файла. У нас оно такое: 325137da-52e4-4f2b-aeeb-7bd5c1d1ac7e.

Копируем значение, переходим в настройки инфоблока Каталог и вставляем это значение в поле "Внешний код":

-5

Ищем в этом же файле import.xml сущности "ТипыЦен" и "ЕдиницыИзмерения":

-6

Нужно будет аналогичным образом проставить соответствия в разделах админки Битрикс:
Магазин->Настройки->Цены->Типы цен и
Магазин->Настройки->Единицы измерения

Во втором случае поле Код ставится в соответствие.

Следующий этап - настройка свойств. У меня их настройки хранятся в файле properties/offers.xml, у вас может быть немного по-другому. Идем в меню Битрикс Магазин->Каталог->Свойства товаров и Магазин->Каталог->Свойства торговых предложений и выставляем соответствия ID:

-7

Обязательно удостоверьтесь, что типы свойств совпадают в выгрузке и в Битрикс (список, строка, справочник). Если каких-то свойств в Битрикс нет, они создадутся самостоятельно при импорте.

Далее уже можно приступить к импорту. Рекомендуется перед этим создать в Битрикс пользователя с ограниченными правами, который будет иметь доступ только к модулю Торговый каталог.

Если у вас сайт уже в открытом доступе и есть возможность сразу же проверить работоспособность выгрузки, то настраиваем 1С на адрес http://сайт/bitrix/admin/1c_exchange.php, указываем в ней логин-пароль юзера с правами только на каталог, и запускаем процесс на стороне 1С.

Если же такой возможности нет, то есть альтернативный способ - провести импорт из файлов выгрузки вручную.

Для этого распаковываем архив в папку на сервере upload/1c_catalog и переходим под админом по следующему адресу в броузере: http://сайт/bitrix/admin/1c_exchange.php?type=catalog&mode=import&filename=import.xml

Вместо import.xml нужно подставить имя своего файла.

У меня получился такой адрес: http://сайт/bitrix/admin/1c_exchange.php?type=catalog&mode=import&filename=import___41b266bc-f41c-4614-83c0-f924743da292.xml

Если Битрикс ругается таким образом:

Ошибка проверки источника запроса. Обновите модуль обмена или отключите проверку в настройках компонента,


то переходим в командную строку PHP Битрикс и выполняем:

COption::SetOptionString("catalog", "DEFAULT_SKIP_SOURCE_CHECK", "Y"); COption::SetOptionString("sale", "secure_1c_exchange", "N");


В процессе импорта каждого файла будет довольно много шагов. Каждый из них запускается перезагрузкой данной страницы. Примерный вид шага вот такой:

-8

И так мы обновляем страницу до тех пор, пока не высветится надпись progress: success. В этом случае импорт будет завершен для этого файла, нужно будет импортировать другой.

В моем случае последовательность импорта такова:
import.xml
properties/offers.xml
goods/import.xml
goods/offers.xml
goods/prices.xml
goods/rests.xml

Процедура ручного импорта занимает довольно много времени, зато позволяет отстроить интеграцию без участия 1С.

По итогам, в Битрикс должен быть импортирован весь каталог из 1С вместе со свойствами и торговыми предложениями.