5 февраля 2022
1760

Нужно для клиента настроить сайт на Битрикс, чтобы работал обмен данными с 1С (загрузка товаров из 1С на сайт).

Как это делается?

Общий порядок

Настройки на сайте

Создать пользователя Битрикса для обмена

Логин: obmen-1C Пароль: установить сложный пароль

Пользователя сделать администратором. Больше настроек пользователя не требуется.

Получить внешний код инфоблока

  1. Нужно перейти в настройки модуля "Информационные блоки" и включить галочку "Показывать код загрузки из внешних источников" Показывать код загрузки из внешних источников
  2. Перейти в настройки информационного блока Каталога и скопировать внешний код.

Может получиться, например, такой код: aspro_next_catalog_s1

Настроить параметры обмена

В Магазин -- Настройки -- Интеграция с 1С :: Каталог / Расширенные настройки:

  • Максимально допустимая ширина/высота картинки анонса: 500
  • Максимально допустимая ширина детальной картинки: 1000

Технические настройки сайта

В папке bitrix/ (именно там, а не в корне сайта):

  1. Создать .htaccess (если еще нет).
  2. Прописать php_value max_execution_time 3600 - чтобы при больших выгрузках скрипт не прерывался из-за нехватки времени.
  3. Прописать php_value memory_limit 1G - чтобы при больших выгрузках скрипт не прерывался из-за нехватки памяти.
  4. В dbconn.php прописать @ini_set("memory_limit", "1G"); (возможно, там уже есть установка этого параметра, тогда поправить на 1G, если меньше).

Настройки сервера

Если есть возможность (мы управляем сервером, на котором находится сайт, на который загружаются товары), то нужно настроить nginx:

  1. Найти конфиг nginx этого сайта.
  2. Прописать там proxy_read_timeout 3600;

 

3. Не забыть перезапустить nginx.

Передать данные специалисту по 1С

Ему нужно:

  1. Ссылку на сайт.
  2. Логин и пароль пользователя для обмена.
  3. Внешний код инфоблока.
  4. Подсказку: "В "1С:Предприятие" в диалоге настройки профиля обмена в качестве адреса сайта необходимо указать http://сайт/bitrix/admin/1c_exchange.php"

Готово

После этого специалист по 1С сможет сделать выгрузку.

Частые проблемы

Произошла ошибка на стороне сервера. Получен неизвестный статус импорта

В логах при этом есть запись вида

MySQL Query Error: INSERT INTO b_xml_tree_import_1c ...
Table '.... b_xml_tree_import_1c ' doesn't exist

Это означает, что два импорта запускаются одновременно.

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

Ошибка распаковки архива

Выглядит примерно так:

30.09.2020 15:52:57--Отправка запроса на инициализацию, для определения версии обмена данных.
30.09.2020 15:53:21--import___ffdc9d0f-4383-49f1-9c98-bc4d22879580.xml: Произошла ошибка на стороне сервера.
Ответ сервера:
failure
Ошибка распаковки архива.
30.09.2020 15:54:22--Отправка запроса на авторизацию.

Варианты:

  1. Не настроили proxy_read_timeout (см. общий порядок). На это указывает также ровно одна минута между временем начала импорта и следующей записью.
  2. На сервере закончилось место.
  3. Времени выполнения скрипта PHP недостаточно (см. общий порядок - настройка max_execution_time). В логах выглядит как PHP Fatal error: Maximum execution time of 30 seconds exceeded
  4. Не хватает памяти PHP. В логах выглядит как Allowed memory size of 134217728 bytes exhausted. См. общий порядок - настройка memory_limit.
Позвоните нам!
Личный кабинет
Вам будет доступна история заказов, управление рассылками, свои цены и скидки для постоянных клиентов и прочее.
Ваш логин
Ваш пароль
Работаем для вас с 9:30 до 18:30
Ждем писем!
г. Санкт-Петербург, Краснопутиловская ул., 69