Failure ошибка открытия файла импорта bitrix

 

Пользователь 91720

Посетитель

Сообщений: 64
Баллов: 5
Регистрация: 19.05.2011

#1

15.04.2012 21:08:59

Здравствуйте.
На протяжении недели при  попытке выгрузки каталога товаров, выдается ошибка:

Код
failure
Ошибка открытия файла импорта.bitrix/admin/1c_exchange.php?type=catalog&mode=import&filename=import.xml
12.04.2012 13:56:37 Запуск выгрузки товаров
12.04.2012 15:12:16 Завершено формирование файлов выгрузки товаров
Выгружено товаров: 15 308
предложений: 49 216
картинок: 15 429
файлов: 0

В том числе для каталога Основной каталог товаров:
товаров: 15 308
предложений: 49 216
картинок: 15 429
файлов: 0

12.04.2012 15:22:45 Выгрузка на сайт завершилась с ошибками.
import.xml: Произошла ошибка на стороне сервера.
Ответ сервера: 
failure
Ошибка открытия файла импорта.
12.04.2012 15:23:09 Завершена выгрузка товаров

Параметры сервера:

Цитата
Процессор
16 ядер
2.66 ГГц
Память
RAM 4 ГБ
SWAP 1 ГБ
Скорость сети
Внутренняя 1000 Мбит/с
Внешняя 50 Мбит/с

Прилагаю скриншоты.

http://dl.dropbox.com/u/17332417/i001.png
http://dl.dropbox.com/u/17332417/i002.png
http://dl.dropbox.com/u/17332417/i003.png
http://dl.dropbox.com/u/17332417/i004.png

В чем может быть дело? Как решить проблему?

Заранее спасибо!

 

Как один из вариантов взять демо на другом хостинге и попробовать выгрузку. Хостер слабоват видимо.

 

Хостинг — Scalaxy, сервер 4 гб / 50 мбит.

 

Может быть в настройках интеграции дело?

 

Пользователь 105835

Эксперт

Сообщений: 761
Баллов: 122
Регистрация: 28.10.2011

#5

16.04.2012 08:50:01

Цитата
plns пишет:
Может быть в настройках интеграции дело?

Свободного места достаточно на сайте?

И все-таки советую проверить на другом хостере или выгружать порциями.

Битрикс и Битрикс 24 РАБОТА ВАКАНСИИ — https://t.me/bitrixworkrabota

 

Свободного места 8 ГБ. В данном случае выгрузка идет по категориям, а не полностью всего каталога.

 

Скорее всего проблема все-таки не в свободном месте, а в мощности хостера. Буквально на днях решал такую проблему. Взяли демку на другом хостере и выгрузка прошла без проблем.

 

Попробовал увеличить мощность сервера до 8 ГБ оперативки, ничего не изменилось.

 

Пользователь 91720

Посетитель

Сообщений: 64
Баллов: 5
Регистрация: 19.05.2011

#9

16.04.2012 14:28:50

Данные методы не помогут решить вопрос?

Цитата
http://distr.1c.ua/publications/8144/10148737/
Общие методы решения – это изменение настроек сервера. Во-первых, можно увеличить лимит времени и памяти в настройках PHP.

  • Откройте для редактирования файл php.ini.oci, расположенный в папке / apache.
  • Найдите в файле группу параметров Resource Limits.
  • Увеличьте значения параметров max_ execution_ time и memory_ limit.
  • Перезагрузите сервер.

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

  • Откройте для редактирования файл httpd.conf, размещенный в папке / apache/ conf/
  • Измените значение параметра Timeout.
  • Перезагрузите сервер.

Другой вариант решения этой проблемы (если хостер не соглашается на увеличение таймаута) — сделать равным таймаут сервера и таймаут «1С-Битрикс: Управление сайтом» (страница Магазин > Настройки магазина > Интеграция с 1С, поле Интервал одного шага в секундах). В этом случае пошаговое выполнение будет идти синхронно.

 

Другой вариант решения этой проблемы (если хостер не соглашается на увеличение таймаута) — сделать равным таймаут сервера и таймаут «1С-Битрикс: Управление сайтом» (страница Магазин > Настройки магазина > Интеграция с 1С, поле Интервал одного шага в секундах). В этом случае пошаговое выполнение будет идти синхронно.
Пробуйте этот вариант.

 

Правильно понимаю, что необходимо установить значение в 15?

http://dl.dropbox.com/u/17332417/i004.png

 

Промониторил выгрузку:
ZIP архивы (269 шт. по 2 мб) попадают на сайт и все файлы успешно разархивируется в папку  /upload/1c_catalog.
Но затем при обработке import.xml (55 мб) вылетает, с ошибкой описанной выше.

 

Пользователь 105835

Эксперт

Сообщений: 761
Баллов: 122
Регистрация: 28.10.2011

#13

16.04.2012 21:30:01

Цитата
plns пишет:
Промониторил выгрузку:
ZIP архивы (269 шт. по 2 мб) попадают на сайт и все файлы успешно разархивируется в папку /upload/1c_catalog.
Но затем при обработке import.xml (55 мб) вылетает, с ошибкой описанной выше.

В техподдержку Битрикса писали?

Битрикс и Битрикс 24 РАБОТА ВАКАНСИИ — https://t.me/bitrixworkrabota

 

Да, они рассматривают проблему только, если импорт стандартный. У нас он кастомизирован.

Покопались вчера сами, выяснилось, что частично проблема была из-за лимита на количество импортируемых файлов. Увеличили до 400. Импорт прошел успешно.
Сегодня пробуем выгрузить, например, 1 товар, чтобы отловить ошибку. Через раз выдает туже ошибку.

В логах обнаружилось:

[Tue Apr 17 14:01:23 2012] [notice] Apache/2.2.3 (CentOS) configured — resuming normal operations
[Tue Apr 17 14:46:08 2012] [notice] child pid 2297 exit signal Segmentation fault (11)

Как лечить? Влияет ли именно эта ошибка?

 

Пользователь 49449

Посетитель

Сообщений: 85
Баллов: 6
Регистрация: 25.09.2009

#15

17.04.2012 18:56:43

Цитата
plns пишет:
Как лечить?

Перегрузкой VPS

 

Пользователь 91720

Посетитель

Сообщений: 64
Баллов: 5
Регистрация: 19.05.2011

#16

17.04.2012 19:48:32

Цитата
Дмитрий Гуринович пишет:
Перегрузкой VPS

Без изменений

 

Какая конфа 1с? Используете ли торговые предложения и характеристики (цвет, размер)?

 

Пользователь 2948

Посетитель

Сообщений: 32
Баллов: 5
Регистрация: 11.12.2005

#18

01.05.2015 12:00:19

Такая же проблема была.

Решили следующим образом….

Магазин-Настройки-Интеграция с 1С

Интервал одного шага в секундах (0 — выполнять загрузку за один шаг) — ставим 30 секунд — у нас это совпало с таймаутом сервера
Использовать сжатие zip, если доступно: — ставим галочку

Если кому-то можем помочь с хостигом, обращайтесь.

Спасибо.

Нельзя просто взять и интегрировать сайт с 1С. (с) Народное творчество.

Цель написания поста  – изложить всю информацию по теме человеческим языком.

Интеграция сайта на 1С-Битрикс: Управление сайтом и 1С — неисчерпаемый источник вопросов и проблем. На сайте идей для Битрикс в соответствующем разделе 16 страниц, на форуме про это больше 23 000 сообщений. В форме обращения в техподдержку Битрикса есть даже отдельный тип заявки «Обмен с 1С».

Считается, что интеграция 1С и сайта на Битриксе должна работать из коробки. Самые простые функции действительно можно запустить за час-два. А вот на доработку обмена можно потратить и 10, и 100 часов. 

Доработка обмена сайта и 1С — это уже магия уровня «эксперт», пугает даже бородатого опытного разработчика. В этой статье мы поговорим о том, как происходит обмен данными между этими двумя монстрами и как можно расширять возможности этого обмена. Статья содержит множество технических деталей обмена и будет полезна в основном программистам, которые хотят разобраться в предмете.

В данной статье будет рассмотрена общая теория обмена между двумя IT-системами и два стандартных обмена между 1С и сайтом на 1С-Битрикс: обмен товарами и обмен справочниками.

Немного теории

Интеграция — обмен информацией между двумя IT-системами. Иногда называют просто обмен. Определяется форматом данных, протоколом (стандартом) передачи данных, алгоритмом работы

Формат = как выглядят данные (например, XML, YML, JSON, CSV).

Протокол = как данные оказываются в другом месте (например, HTTP, SIP, SMTP, FTP). 

Алгоритм = что при этом происходит. Представляется блок-схемой или диаграммой UML Activity.

Примеры интеграций:

  1. обмен товарами между самописной учетной системой и сайтом (протокол FTP, формат CSV);

  2. парсинг курсов валюты с сайта ЦБ РФ (протокол HTTP, формат XML);

  3. интеграция сайта с Яндекс.Маркет (протокол HTTP, формат YML).

Процедуру обмена можно разделить на 3 части:

  1. Экспорт данных из системы А в требуемый формат

  2. Передача данных

  3. Импорт данных требуемого формата в систему Б.

Часто весь обмен называют «импорт» («загрузка») и «экспорт» («выгрузка»). Это не ошибка, по такой формулировкой говорящий показывает, точка зрения какой системы ему ближе. То, что для 1С экспорт товаров, для Битрикса импорт. В дальнейшем тексте статьи мы не будем использовать эти понятия, чтобы не порождать двусмысленности.

И еще одно важное уточнение. «1С» — в зависимости от контекста, это может быть компания-легенда «ООО 1С», их разработка «1С:Предприятие» или конкретная конфигурация (например, «1С: Управление торговлей» или «1С:ERP Управление предприятием») с установленным модулем обмена с сайтом .  В мире веб-разработки имеется в виду как раз последнее определение. В статье будет действовать аналогичное соглашение. Так же и с сайтом на платформе 1С-Битрикс: Управление сайтом — обычно это просто «Битрикс».

Резюме

Интеграция — обмен данными между двумя системами.

Формат — как выглядят данные.

Протокол — как передаются данные. 

1С — софт.

Битрикс — сайт.

Краткость — сестра. 

Стандартные возможности обмена 1С и Битрикса

«Из коробки» (без доработок программиста) работают 4 типа обмена:

  1. товары из 1С на сайт (тип «catalog»);

  2. справочники из 1С на сайт (тип «reference»);

  3. пользователей/контрагентов из 1С на сайт (тип «sale»);

  4. заказы (тип «sale»):

    1. из 1С на сайт;

    2. из сайта в 1С.

Протокол

Все взаимодействия между 1С и Битриксом проводятся по HTTP, синхронно. Т.о. 1С подобна браузеру, она «открывает» специальную страницу, отправляет данные (методами POST и GET) и получает текстовый ответ. Есть даже способ имитировать выгрузку из 1С браузером (и мы часто используем этот трюк во время разработки и отладки). Подробнее про отладку мы рассказали в предыдущей статье «Типовые ошибки интеграции между 1С и 1С-Битрикс».

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

Протокол синхронный. 1С отправляет следующий запрос на сайт только после получения ответа на предыдущий (или получения ошибки таймаута).

Формат

Данные передаются в двух форматах. 

Первый формат — текстовый для ответов сайта на запросы из 1С. Сайт выводит в первой строке ответа «success», если завершил некую процедуру, «progress», если продолжает ее выполнять и «error» или «failure», если была ошибка. В последующих строках могут быть дополнительные данные (зависит от каждого конкретного запроса).

Второй формат — CommerceML 2 . Основан на XML, в этом формате передаются товары, предложения, цены, склады, заказы и контрагенты (пользователи+платежные профили).

Алгоритм

Подготовка к обмену

Выше мы уже сказали, что протокол обмена — синхронный HTTP. Все перечисленные типы обмена подразумевают выполнение нескольких запросов (шагов обмена) друг за другом. Первые два шага одинаковы для любого типа обмена, различия начинаются дальше

Авторизация

Запрос

GET-параметры:

type=<тип обмена>

mode=checkauth

Basic access логин:

Логин сайта из настроек 1С

Basic access пароль:

Пароль сайта из настроек 1С

Ответ

Если успех:

success

<имя Cookie авторизации>

<значение Cookie авторизации>

sessid=<ID сессии>

<параметр1>=<значение1>

<параметр2>=<значение2>

Если ошибка:

failure

<текст ошибки>

Любой обмен начинается с авторизации 1С на сайте методом Basic access. В случае успеха сайт выводит «success»,  имя и значение Cookie (которую будет проверять во всех последующих запросах), id сессии и прочие параметры (зависят от type — типа обмена).

Возможные ошибки

Текст ошибки

Что делать

Ошибка авторизации. Неверное имя пользователя или пароль.

Проверить логин и пароль в Битрикс

У Вас нет прав для импорта каталога. Проверьте настройки компонента импорта.

Проверить права пользователя в Битрикс

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

Обновить модуль обмена в 1С или выполнить php-код на сайте:

COption::SetOptionString(«catalog», «DEFAULT_SKIP_SOURCE_CHECK», «Y»);

COption::SetOptionString(«sale», «secure_1c_exchange», «N»);

Модуль Информационных блоков не установлен.

Проверить модуль iblock в Битрикс. Должен быть скачан и установлен

Включена смена идентификатора сессий. В файле подключения компонента обмена, до подключения пролога определите константу BX_SESSION_ID_CHANGE: define(‘BX_SESSION_ID_CHANGE’, false);

Выполнить предложенное действие

Время на сервере базы данных отличается от времени на веб-сервере больше, чем на 10 минут. Вероятно неправильно настроены временные зоны. Выполните настройку и повторите обмен.

Проверить настройку часовых поясов на веб-сервере и на сервере БД

Запрос настроек сайта

Запрос

GET-параметры:

type=<тип обмена>

mode=init

sessid=<ID сессии>

Cookie:

<имя Cookie авторизации>=<значение Cookie авторизации>

Ответ

Если успех:

zip=<yes|no>

file_limit=<число>

На этом шаге 1С узнает важные для обмена настройки сайта. Управление этими параметрами на сайте происходит на странице «Интеграция с 1С» в панели управления сайтом.

Параметр

Назначение

Возможные значения

zip

Сайт умеет распаковывать zip-архивы. Если yes — 1С будет загружать файлы обмена в архивах, что сильно экономит время и трафик.

yes

no

file_limit

Максимально допустимый размер файла в байтах для передачи за один HTTP-запрос. Если системе 1С понадобится передать файл большего размера, они будут разбиты на несколько частей.

целое число >= 0

Получив эти параметры, 1С начинает формирование данных для передачи на сайт. Если «zip=yes», то все файлы будут переданы как zip-архив. Иначе каждый выгружается по отдельности. Желательно включать всегда.

Возможные ошибки

Текст ошибки

Что делать

Ошибка инициализации временного каталога

При создании каталога для хранения файлов выгрузки произошла ошибка. Проверить права и путь для хранения файлов или закончилось место на диске. По умолчанию сайт складывает файлы в папку /upload/1c_catalog/.

Обмен товарами (1С -> Битрикс)

Данный тип обмена (type=catalog) используется для создания и обновления на сайте следующих сущностей:

  • инфоблок товаров;

  • UF-поля разделов в этом инфоблоке;

  • свойства элементов в этом инфоблоке;

  • инфоблок SKU;

  • типы цен;

  • склады;

  • разделы в инфоблоке товаров;

  • элементы в инфоблоке товаров (товары);

  • цены товаров;

  • наличие товаров по складам.

При обмене товарами 1С формирует XML-файлы, передает их на сайт и контролирует их обработку сайтом. 1С может передать 4 вида файлов:

В файлах с префиксом import_ — разделы каталога, товары, свойства товаров.

В файлах с префиксом offers_ — SKU.

В файлах с префиксом prices_ — цены товаров и предложений.

В файлах с префиксом rests_ — остатки товаров и предложений по складам.

На шаге авторизации в случае успеха сервер вернет дополнительный параметр timestamp (текущее время). 1С сохранит timestamp и передаст на сайт на последнем шаге обмена товарами. 

Обмен товарами

Обмен товарами

Шаг 1. Передача файла (повторяющийся)

Запрос

GET-параметры:

type=catalog

mode=file

sessid=<ID сессии>

filename=<имя файла>

POST:

Содержимое файла в виде строки

Cookie:

<имя Cookie>=<значение Cookie>

Ответ

Если успех:

success

Если ошибка:

failure

<текст ошибки>

Шаг может выполняется несколько раз. Каждый файл выгружается частями не более file_limit байт (см. предыдущий шаг) в бинарном виде через сырой POST-запрос. Сайт создает файл, если его нет. Имя файла берет из GET-параметра filename и дописывает в него переданный контент. Так продолжается до тех пор, пока 1С не передаст все части этого файла. 

Возможные ошибки

Текст ошибки

Что делать

Ошибка чтения HTTP данных

Проверить сетевое соединение между сайтом и 1С.

Ошибка открытия файла <имя файла> для записи

Проверить права на файл и папку файла у пользователя apache, под которым работает Битрикс.

Ошибка записи в файл <имя файла>

Проверить права на файл и папку файла у пользователя apache, под которым работает Битрикс.

Шаг 2. Основной

Запрос

GET-параметры:

type=<тип обмена>

mode=import

sessid=<ID сессии>

filename=<имя файла>

Cookie:

<имя Cookie>=<значение Cookie>

Ответ

Если импорт завершен:

success

Если импорт продолжается:

progress

<текущий статус>

Если ошибка:

failure

<текст ошибки>

Этот шаг — особенный. Файл уже целиком загружен на сайт и Битрикс готов его обработать. Его обработка может состоять из 11 более мелких операций, о которых 1С ничего не знает. Поэтому в параметре GET приходит mode=import (один и тот же запрос!), но сайт выполняет совершенно разные операции. Текущий прогресс Битрикс сохраняет в сессии в переменной $_SESSION[BX_CML2_IMPORT][NS]. Например, узел STEP в этом массиве отвечает как раз за номер внутренней операции импорта.

Шаг 2.1 Распаковка архива (повторяющийся, необязательный)

Ответ

Если файл распакован:

progress

Идет распаковка архива

Если файл распаковывается:

progress

Распаковка архива завершена

Если ошибка:

failure

<текст ошибки>

Шаг исполняется, только если 1С передала файл в формате ZIP. Распаковка происходит в той же директории, где лежат все файлы обмена товарами (по умолчанию — /upload/1c_catalog/). Эта операция не нумеруется внутри Битрикса (значение STEP в сессии не изменяется).

Возможные ошибки

Текст ошибки

Что делать

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

Проверьте работоспособность функции PHP zip_open и расширение Zip . Если все корректно — скачайте архив с сайта и проверьте его корректность вручную.

Шаг 2.2 Удаление временных таблиц

Ответ

Если успех:

progress

Временные таблицы удалены

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

0

Работать напрямую с файлом XML (тем более, если он большой) неудобно и неэффективно. Поэтому все данные прочитываются во временную таблицу b_xml_tree. На этом подготовительном шаге таблица b_xml_tree, если она существует, удаляется.

Шаг 2.3 Создание временных таблиц

Ответ

Если успех:

progress

Временные таблицы созданы

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

1

Таблица b_xml_tree создается. Если объявлена PHP константа BX_XML_CREATE_INDEXES_IMMEDIATELY, таблица сразу же индексируется. В конце этого шага Битрикс испускает событие OnBeforeCatalogImport1C .

Возможные ошибки

Текст ошибки

Что делать

Ошибка создания временных таблиц

Проверить права и подключение СУБД.

Шаг 2.4 Загрузка файла во временную таблицу (повторяющийся)

Ответ

Если файл читается:

progress

Обработано <число>% файла

Если файл прочитан:

progress

Файл импорта прочитан

Если ошибка:

failure

<текст ошибки>

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

2

Битрикс шаг за шагом начинает читать переданный из 1С файл, добавляя записи в таблицу b_xml_tree. Чтобы избежать проблем с временем исполнения, процесс происходит пошагово. Управление продолжительностью шага происходит на странице «Интеграция с 1С» в панели управления сайтом.

Возможные ошибки

Текст ошибки

Что делать

Ошибка открытия файла импорта

Проверить доступ к файлу

Шаг 2.5 Индексация временных таблиц

Ответ

Если успех:

progress

Временные таблицы проиндексированы

Если ошибка:

failure

<текст ошибки>

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

3

Для повышения скорости работы импорта таблица b_xml_tree индексируется после прочтения файла.

Возможные ошибки

Текст ошибки

Что делать

Ошибка создания индекса для временных таблиц

Возможная причина: проблемы с СУБД, правами в ней или подключением.

Шаг 2.6 Импорт метаданных

Ответ

Если успех:

progress

Метаданные импортированы успешно

Если ошибка:

failure

Ошибка импорта метаданных

<текст ошибки>

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

4

На этом шаге создаются или обновляются следующие данные:

  1. Инфоблоки товаров и SKU

  2. Служебные свойства каталога (с префиксом CML2_: CML2_BAR_CODE, CML2_ARTICLE, CML2_ATTRIBUTES…)

  3. Торговый каталог

  4. Свойства инфоблоков

  5. UF-поля разделов инфоблоков

  6. Типы цен

  7. Склады

  8. Единицы измерения

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

Возможные ошибки

Текст ошибки

Что делать

Отсутствует модуль «Торговый каталог». Импорт торговых предложений и цен невозможен

Пояснения не требуются

Ошибка создания типа информационных блоков

После этого сообщения следует текст ошибки API, который пояснит причину ошибки.

Ошибка добавления новой единицы измерения (код единицы: <код>)

Текст ошибки Битрикс не выведет, необходимо разобрать XML файл самостоятельно и найти причину ошибки.

Количество импортированных складов превышает разрешенное для данной редакции

Пояснения не требуются

Ошибка импорта пользовательского свойства (xml_id: <код>)

Проверить параметры пользовательского свойства

Название справочника должно начинаться с буквы и состоять только из латинских букв и цифр.

Пояснения не требуются

В выгрузке настроены цены с одинаковым названием. Продолжение обмена невозможно.

Пояснения не требуются

В редакции Малый Бизнес нет возможности иметь более одного типа цены. Настройте выгрузку из 1С или перейдите на другую редакцию БУС.

Пояснения не требуются

Шаг 2.7 Импорт разделов каталога

Ответ

Если успех:

progress

Группы импортированы

Если ошибка:

failure

Ошибка импорта метаданных

<текст ошибки>

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

5

На этом шаге в инфоблоке создаются и обновляются все разделы каталога, которые были в XML файле. Сопоставление разделов из XML-файла и в БД происходит по XML_ID.

Если на сайте нет раздела с XML_ID из файла, он создается. Если есть, то выполняется сравнение полей из XML файла с аналогичными полями в БД. Если изменения нет, то Битрикс только обновляет поле TIMESTAMP_X и пропускает раздел. Если изменения есть — происходит полноценное обновление. Это происходит независимо от настроек сайта.

Для экономии ресурсов сервера добавление разделов происходит без пересчета дерева (речь о полях LEFT_MARGIN и RIGHT_MARGIN).

Возможные ошибки

Так как импорт разделов не пошаговый, при обмене большом дереве разделов на сайте может возникать ошибка превышения времени исполнения. Решения три.

  1. Увеличить время исполнения на странице «Интеграция с 1С» и в настройках сервера (nginx).

  2. Доработать 1С, чтобы ошибки на этом этапе игнорировались пока не будет получен ответ «progress».

  3. Повторить всю выгрузку несколько раз.

Объясним, как поможет повтор шага или всей выгрузки. Допустим, в XML-файле и на сайте 20001 раздел. Пусть за один проход Битрикс успевает импортировать только 10000 разделов.

№ Обмена/шага

Пропущено т.к. нет изменений

Обработано

Ответ

1

0

10000

Ошибка сервера

2

10000

10000

Ошибка сервера

3

20000

1

progress

Группы импортированы

Битрикс каждый раз обрабатывает столько разделов, сколько успевает. При повторении выгрузки первые 10000 разделов он пропустит (обновит только TIMESTAMP_X) и обновит еще 10000 разделов, пока не наступил тайм-аут. И только на 3-ей выгрузке из 1С шаг будет завершен корректно.

Шаг 2.8 Пересчет дерева разделов

Ответ

Если успех:

progress

Деактивация/удаление групп завершено

Если ошибка:

failure

Ошибка импорта метаданных

<текст ошибки>

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

6

На этом шаге Битрикс выполняет две задачи:

  1. Удаление/деактивация разделов (в старых версиях модуля обмена в 1С)

  2. Перестройка дерева разделов

В старых версиях 1С отличить полную выгрузку от частичной просто: при частичной в узле «Классификатор» был атрибут СодержитТолькоИзменения=»true», при полной его не было.

В 2019 году 1С всегда выгружает этот атрибут. Если этого атрибута нет, Битрикс мог (и до сих пор может, просто этот код не используется) удалить, деактивировать старые разделы (или пропустить их). На выбор влиял параметр на странице «Интеграция с 1С». Сейчас эта настройка уже ни на что не влияет и ни деактивации, ни удаления не происходит.

Также на этом шаге пересчитываются служебные поля LEFT_MARGIN и RIGHT_MARGIN всех разделов.

Шаг 2.9 Импорт товаров (повторяющийся)

Ответ

Если идет процесс импорта:

progress

Обработано <число> из <число> элементов

Если импорт завершен:

progress

Загрузка элементов завершена

Если ошибка:

failure

<текст ошибки>

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

7

DONE

Ассоциативный массив, счетчик обработанных товаров и всех товаров в файле

На этом шаге в инфоблоке создаются и обновляются все товары, которые были в XML файле. Сопоставление товаров в файле товарам на сайте происходит по полю XML_ID.

Если на сайте нет товара с XML_ID из файла, он создается. Если есть, то выполняется сравнение полей из XML файла с аналогичными полями в БД. 

Если изменения нет, и задан параметр «Использовать контрольные суммы элементов для оптимизации обновления каталога», Битрикс только обновляет поле TIMESTAMP_X и пропускает товар. Иначе происходит полноценное обновление.

При импорте товара заполняется поле TMP_ID. Значение для этого поля хранится в узле <НомерВерсии>. Если узла нет — Битрикс вычисляет контрольную сумму от всей информации о товаре из XML файла.

Возможные ошибки

Текст ошибки

Что делать

Временная таблица не существует

Ошибка возникает если с сайтом работает несколько 1С или одна 1С присылает несколько запросов одновременно. В одном потоке выполняется шаг 4.9, а другой запустил шаг 4.2.

Шаг 2.10 Деактивация/удаление товаров (повторяющийся)

Ответ

Если идет обработка:

progress

Обработано <число> из <число> элементов

Если обработка завершена:

progress

Деактивация/Удаление элементов завершены

Если ошибка:

failure

<текст ошибки>

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

8

DONE

Ассоциативный массив, счетчик обработанных товаров и всех товаров в файле

На этом шаге раньше (как и на шаге  2.8 Пересчет дерева разделов ) Битрикс проводил чистку товаров. Чистка товаров происходила только если в узле “Классификатор” XML файла не было пометки СодержитТолькоИзменения=»true» (старый формат выгрузки). Есть аналогичная настройка для выбора, что делать с товарами.

В 2019 году на этом шаге ничего не происходит.

Шаг 2.11 Завершение импорта

Ответ

Если успех:

success

Импорт успешно завершен

Если ошибка:

failure

<текст ошибки>

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

9

Служебный шаг. Обработки данных нет, только испускается событие OnSuccessCatalogImport1C .

Шаг 3. Деактивация старых данных

Запрос

GET-параметры:

type=<тип обмена>

mode=deactivate

sessid=<ID сессии>

timestamp=<время на сервере>

Cookie:

<имя Cookie>=<значение Cookie>

Ответ

Если успех:

success

Деактивация элементов завершена

Если ошибка:

failure

Ошибка деактивации элементов

На этом шаге в 2019 году Битрикс деактивирует все товары и разделы каталога, не затронутые в текущей сессии. Для этого время последнего изменения сравнивается с timestamp, который передает 1С — время начала текущей сессии, полученное на шаге авторизации.

Напомним, что эти настройки в панели управления сайта сейчас ни на что не влияют (всегда происходит деактивация):

Этот шаг будет выполнен, только если современная 1С делает полную выгрузку. Для выгрузки изменений и в старых версиях 1С этого шага нет.

Шаг 4. Завершение импорта

Запрос

GET-параметры:

type=<тип обмена>

mode=complete

sessid=<ID сессии>

Cookie:

<имя Cookie>=<значение Cookie>

Ответ

Если успех:

success

Завершение процедуры импорта

Если ошибка:

failure

<текст ошибки>

Служебный шаг. Обработки данных нет, только испускается недокументированное событие модуля catalog OnCompleteCatalogImport1C. Аргументы обработчика аналогичны обработчикам события OnSuccessCatalogImport1C , возвращаемого значения нет.

Обмен справочниками (1С -> Битрикс)

Данный тип обмена (type=reference) используется для создания и обновления на сайте HL-блоков. Этот тип намного короче чем обмен товарами и повторяет многие из его шагов.

Часто обмен справочниками — простой и быстрый способ расширить стандартные функции обмена.

Обмен справочниками

Обмен справочниками

Шаг 1. Передача файла (повторяющийся)

см. аналогичный шаг обмена товарами, (отличается только mode, в данном типе обмена mode=reference).

Шаг 2. Основной

Запрос

GET-параметры:

type=reference

mode=import

sessid=<ID сессии>

Cookie:

<имя Cookie>=<значение Cookie>

Шаг 2.1 Распаковка архива (повторяющийся, необязательный)

см. аналогичный шаг обмена товарами.

Шаг 2.2 Подготовка справочника

Ответ

Если успех:

progress

Найден или создан справочник. Код справочника: <ID>

Если ошибка:

failure

<текст ошибки>

На этом шаге Битрикс создает HL-блок (если не существует) и все UF-поля. В начале шага испускается событие модуля catalog OnBeforeCatalogImportHL. Событие недокументированное, в обработчики передаются массив параметров компонента и путь к XML-файлу. Обработчик может вызвать ошибку и вернуть произвольное сообщение.

Важно знать следующие особенности импорта справочников:

  • 1С не может удалить справочник или поле, только создать;

  • 1С может создать только поля следующих типов: Строка, Булево, Дата, Число;

  • все поля, создаваемые 1С будут одиночными, необязательными, скрытыми в фильтре, показанными и редактируемыми в таблице;

  • Битрикс автоматически создает поля: UF_NAME, UF_XML_ID, UF_VERSION, UF_DESCRIPTION.

Возможные ошибки

Текст ошибки

Что делать

Ошибка при создании поля в справочнике <Текст ошибки>

Изучить текст и исправить в 1С или на сайте

Ошибка при создании справочника <Текст ошибки>

Изучить текст и исправить в 1С или на сайте

Ошибка разбора XML. Код ошибки: <Код ошибки>

Расшифровать код и исправить в 1С или на сайте

Расшифровка кодов ошибок.

Код

Объяснение

10

Неизвестная ошибка парсинга XML файла

20

Невалидный XML файл

110

В XML файле отсутствует или пустой узел <Ид> справочника

120

В XML файле отсутствует или пустой узел <Наименование> справочника

210

Во время импорта UF-полей не был найден higloadblock

220

В XML файле отсутствует или пустой узел <Ид> в <Реквизит>

230

В XML файле отсутствует или пустой узел <Наименование> в <Реквизит>

240

Неизвестный <ТипЗначений> в узле <Реквизит> (допустимы только: Строка, Булево, Дата, Число)

250

Неизвестная ошибка при создании UF-поля highload блока

310

Во время элементов справочника не был найден higloadblock

320

В XML файле отсутствует или пустой узел <Ид> в <ЭлементСправочника>

330

В XML файле отсутствует или пустой узел <ЗначениеРеквизита> в <ЗначенияРеквизитов> в <ЭлементСправочника>

Шаг 2.3 Импорт элементов (повторяющийся)

Ответ

Если импорт завершен:

success

Импорт успешно завершен

Если импорт в процессе:

progress

Импортировано элементов: <число>

Если ошибка:

failure

<текст ошибки>

На этом шаге Битрикс импортирует все элементы HL-блока.

Если выгрузка была полной, Битрикс удаляет все элементы HL-блока, у которых значение поля UF_VERSION не начинается с <ID текущей сессии> + «#»

В конце шага Битрикс испускает событие модуля catalog OnSuccessCatalogImportHL. Аргументы — массив параметров компонента и путь к файлу.

Возможные ошибки

Аналогичны ошибкам на предыдущем шаге.

Формат файлов

Формат файла обмена товарами

Формат файла обмена предложениями

Формат файла обмена ценами товаров и предложений

pasted image 0 (35).png

pasted image 0 (35).png

Формат файла обмена остатками товаров и предложений

Формат файла обмена справочниками

Поясним некоторые места этого XML.

  • Узел <Ид>

    • Значение становится названием сущности (после транслитерации).

    • С префиксом «b_» становится названием таблицы (после транслитерации).

  • Узел <Наименование> Не используется. Вообще. Но если узла не будет в файле, Битрикс выдаст ошибку (sic!)

  • Каждый <Реквизит> описывается тремя узлами:

    • <Ид>

      • Значение становится XML ID поля

      • С префиксом «UF_» становится кодом поля

    • <Наименование>

      • Значение становится названием UF-поля.

    • <ТипЗначений>

      • 4 допустимых значения: Строка, Булево, Дата, Число

  • Каждый <ЭлементСправочника> описывается полями:

  • <Ид>

    • Становится значением поля UF_XML_ID

  • <НомерВерсии>

    • C префиксом <ID текущей сессии> + «#» становится значением поля UF_VERSION

  • <ЗначенияРеквизитов>

    • Реквизит Код

      • Становится значением поля UF_NAME

    • Реквизит Наименование

      • Становится значением поля UF_DESCRIPTION

    • Реквизит ПометкаУдаления

      • Не используется

    • Прочие реквизиты

      • Поля типа «Дата» представлены в формате YYYY-MM-DD HH:MI:SS.

      • Поля типа «Булево» представлены строками true или false (или пустой строкой).

Как дорабатывать обмен?

Все запросы (при стандартном обмене) 1С присылает на служебную страницу /bitrix/admin/1c_exchange.php. Но если заглянуть в файл, выяснится что вся логика скрыта в недрах модуля «Торговый каталог»  в файле /bitrix/modules/sale/admin/1c_exchange.php. Эти страницу нельзя изменять, но можно скопировать (обычно мы копируем в /bitrix/admin/1c_exchange_custom.php) и изменить адрес в 1С.

На этой странице, в зависимости от переданных GET-параметров (совсем как комплексные компоненты в режиме не-ЧПУ) подключаются разные простые компоненты. Компоненты без шаблонов.

Значительная часть логики вынесена из этих компонентов в классы. Связь видов обмена, GET-параметров, компонентов и основных классов приведена ниже в таблице. 

Тип данных

GET[type]

Компонент

Класс с логикой

Путь к классу

Заказы, контрагенты

sale

bitrix:sale.export.1c

CSaleOrderLoader

/bitrix/modules/sale/general/order_loader.php

Товары, предложения, склады, цены, наличие

catalog

bitrix:catalog.import.1c

CIBlockCMLImport

/bitrix/modules/iblock/classes/general/cml2.php

Справочники

reference

bitrix:catalog.import.hl

CBitrixCatalogImportHl

В папке с компонентом

Существует 3 принципиально разных способа доработать обмен с 1С:

  1. Не трогать стандартный обмен, использовать обработчики событий.

  2. Кастомизировать файлы обмена на стороне сайта и доработать по требованиям

  3. Выгружать нужные данные как справочники и обрабатывать самостоятельно.

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

Второй способ реализуется так:

  1. Создать собственную страницу обмена. Обычно это /bitrix/admin/1c_exchange_custom.php.

  2. На эту страницу перенести код из /bitrix/modules/sale/admin/1c_exchange.php.

  3. Кастомизировать нужный компонент обмена и заменить вызов системного компонента на вызов собственного (например, bitrix:catalog.import.1c на intervolga:catalog.import.1c) на новой странице обмена.

  4. Может понадобиться изменение логики класса. Используйте наследование (например, класс IntervolgaCustomExchangeCml может быть наследником CIBlockCMLImport и переопределять метод ImportElements).

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

Настройка обмена в 1С с интернет-магазином

Настройка обмена в 1С с интернет-магазином

Третий способ (через справочники) подходит, если у нужной сущности 1С совсем нет аналога на сайте или по каким-то причинам стандартный импорт совсем не годится. У модуля highloadblock есть все необходимые события (создание, редактирование, удаление) и для ненагруженных проектов это достаточно неплохое решение. 

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

Отладка обмена — отдельный больной вопрос. Обычно решается логированием всех происходящих в недрах Битрикса процессов. В ИНТЕРВОЛГЕ разработали свою систему логирования обмена, которая представляет весь процесс в виде диаграммы Гантта. На ней сразу видно, если идут одновременно 2 обмена или 1С не дожидается ответа и начинает слать новые запросы.

Заключение

Часто самой сложной задачей в процессе разработки является именно интеграция с 1С. Отчетливое понимание происходящих в Битриксе процессов необходимо для серьезных проектов. 

Источник: блог ИНТЕРВОЛГИ.

 

Пользователь 91720

Посетитель

Сообщений: 64
Баллов: 5
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.05.2011

#1

0

15.04.2012 21:08:59

Здравствуйте.
На протяжении недели при  попытке выгрузки каталога товаров, выдается ошибка:

Код
failure
Ошибка открытия файла импорта.bitrix/admin/1c_exchange.php?type=catalog&mode=import&filename=import.xml
12.04.2012 13:56:37 Запуск выгрузки товаров
12.04.2012 15:12:16 Завершено формирование файлов выгрузки товаров
Выгружено товаров: 15 308
предложений: 49 216
картинок: 15 429
файлов: 0

В том числе для каталога Основной каталог товаров:
товаров: 15 308
предложений: 49 216
картинок: 15 429
файлов: 0

12.04.2012 15:22:45 Выгрузка на сайт завершилась с ошибками.
import.xml: Произошла ошибка на стороне сервера.
Ответ сервера: 
failure
Ошибка открытия файла импорта.
12.04.2012 15:23:09 Завершена выгрузка товаров

Параметры сервера:

Цитата
Процессор
16 ядер
2.66 ГГц
Память
RAM 4 ГБ
SWAP 1 ГБ
Скорость сети
Внутренняя 1000 Мбит/с
Внешняя 50 Мбит/с

Прилагаю скриншоты.

http://dl.dropbox.com/u/17332417/i001.png
http://dl.dropbox.com/u/17332417/i002.png
http://dl.dropbox.com/u/17332417/i003.png
http://dl.dropbox.com/u/17332417/i004.png

В чем может быть дело? Как решить проблему?

Заранее спасибо!

 

Пользователь 105835

Эксперт

Сообщений: 761
Баллов: 122
Авторитет:

3

Рейтинг пользователя:

0

Регистрация: 28.10.2011

Как один из вариантов взять демо на другом хостинге и попробовать выгрузку. Хостер слабоват видимо.

 

Пользователь 91720

Посетитель

Сообщений: 64
Баллов: 5
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.05.2011

Хостинг — Scalaxy, сервер 4 гб / 50 мбит.

 

Пользователь 91720

Посетитель

Сообщений: 64
Баллов: 5
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.05.2011

Может быть в настройках интеграции дело?

 

Пользователь 105835

Эксперт

Сообщений: 761
Баллов: 122
Авторитет:

3

Рейтинг пользователя:

0

Регистрация: 28.10.2011

#5

0

16.04.2012 08:50:01

Цитата
plns пишет:
Может быть в настройках интеграции дело?

Свободного места достаточно на сайте?

И все-таки советую проверить на другом хостере или выгружать порциями.

Битрикс и Битрикс 24 РАБОТА ВАКАНСИИ — https://t.me/bitrixworkrabota

 

Пользователь 91720

Посетитель

Сообщений: 64
Баллов: 5
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.05.2011

Свободного места 8 ГБ. В данном случае выгрузка идет по категориям, а не полностью всего каталога.

 

Пользователь 105835

Эксперт

Сообщений: 761
Баллов: 122
Авторитет:

3

Рейтинг пользователя:

0

Регистрация: 28.10.2011

Скорее всего проблема все-таки не в свободном месте, а в мощности хостера. Буквально на днях решал такую проблему. Взяли демку на другом хостере и выгрузка прошла без проблем.

 

Пользователь 91720

Посетитель

Сообщений: 64
Баллов: 5
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.05.2011

Попробовал увеличить мощность сервера до 8 ГБ оперативки, ничего не изменилось.

 

Пользователь 91720

Посетитель

Сообщений: 64
Баллов: 5
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.05.2011

#9

0

16.04.2012 14:28:50

Данные методы не помогут решить вопрос?

Цитата
http://distr.1c.ua/publications/8144/10148737/
Общие методы решения – это изменение настроек сервера. Во-первых, можно увеличить лимит времени и памяти в настройках PHP.

  • Откройте для редактирования файл php.ini.oci, расположенный в папке / apache.
  • Найдите в файле группу параметров Resource Limits.
  • Увеличьте значения параметров max_ execution_ time и memory_ limit.
  • Перезагрузите сервер.

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

  • Откройте для редактирования файл httpd.conf, размещенный в папке / apache/ conf/
  • Измените значение параметра Timeout.
  • Перезагрузите сервер.

Другой вариант решения этой проблемы (если хостер не соглашается на увеличение таймаута) — сделать равным таймаут сервера и таймаут «1С-Битрикс: Управление сайтом» (страница Магазин > Настройки магазина > Интеграция с 1С, поле Интервал одного шага в секундах). В этом случае пошаговое выполнение будет идти синхронно.

 

Пользователь 105835

Эксперт

Сообщений: 761
Баллов: 122
Авторитет:

3

Рейтинг пользователя:

0

Регистрация: 28.10.2011

#10

0

16.04.2012 14:38:25

Другой вариант решения этой проблемы (если хостер не соглашается на увеличение таймаута) — сделать равным таймаут сервера и таймаут «1С-Битрикс: Управление сайтом» (страница Магазин > Настройки магазина > Интеграция с 1С, поле Интервал одного шага в секундах). В этом случае пошаговое выполнение будет идти синхронно.
Пробуйте этот вариант.

 

Пользователь 91720

Посетитель

Сообщений: 64
Баллов: 5
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.05.2011

#11

0

16.04.2012 16:06:17

Правильно понимаю, что необходимо установить значение в 15?

http://dl.dropbox.com/u/17332417/i004.png

 

Пользователь 91720

Посетитель

Сообщений: 64
Баллов: 5
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.05.2011

#12

0

16.04.2012 21:10:29

Промониторил выгрузку:
ZIP архивы (269 шт. по 2 мб) попадают на сайт и все файлы успешно разархивируется в папку  /upload/1c_catalog.
Но затем при обработке import.xml (55 мб) вылетает, с ошибкой описанной выше.

 

Пользователь 105835

Эксперт

Сообщений: 761
Баллов: 122
Авторитет:

3

Рейтинг пользователя:

0

Регистрация: 28.10.2011

#13

0

16.04.2012 21:30:01

Цитата
plns пишет:
Промониторил выгрузку:
ZIP архивы (269 шт. по 2 мб) попадают на сайт и все файлы успешно разархивируется в папку /upload/1c_catalog.
Но затем при обработке import.xml (55 мб) вылетает, с ошибкой описанной выше.

В техподдержку Битрикса писали?

Битрикс и Битрикс 24 РАБОТА ВАКАНСИИ — https://t.me/bitrixworkrabota

 

Пользователь 91720

Посетитель

Сообщений: 64
Баллов: 5
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.05.2011

#14

0

17.04.2012 15:33:41

Да, они рассматривают проблему только, если импорт стандартный. У нас он кастомизирован.

Покопались вчера сами, выяснилось, что частично проблема была из-за лимита на количество импортируемых файлов. Увеличили до 400. Импорт прошел успешно.
Сегодня пробуем выгрузить, например, 1 товар, чтобы отловить ошибку. Через раз выдает туже ошибку.

В логах обнаружилось:

[Tue Apr 17 14:01:23 2012] [notice] Apache/2.2.3 (CentOS) configured — resuming normal operations
[Tue Apr 17 14:46:08 2012] [notice] child pid 2297 exit signal Segmentation fault (11)

Как лечить? Влияет ли именно эта ошибка?

 

Пользователь 49449

Посетитель

Сообщений: 85
Баллов: 6
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 25.09.2009

#15

0

17.04.2012 18:56:43

Цитата
plns пишет:
Как лечить?

Перегрузкой VPS

 

Пользователь 91720

Посетитель

Сообщений: 64
Баллов: 5
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.05.2011

#16

0

17.04.2012 19:48:32

Цитата
Дмитрий Гуринович пишет:
Перегрузкой VPS

Без изменений

 

Пользователь 43023

Заглянувший

Сообщений: 33
Баллов: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 28.09.2011

#17

0

18.04.2012 10:20:11

Какая конфа 1с? Используете ли торговые предложения и характеристики (цвет, размер)?

 

Пользователь 2948

Посетитель

Сообщений: 32
Баллов: 5
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 11.12.2005

#18

0

01.05.2015 12:00:19

Такая же проблема была.

Решили следующим образом….

Магазин-Настройки-Интеграция с 1С

Интервал одного шага в секундах (0 — выполнять загрузку за один шаг) — ставим 30 секунд — у нас это совпало с таймаутом сервера
Использовать сжатие zip, если доступно: — ставим галочку

Если кому-то можем помочь с хостигом, обращайтесь.

Спасибо.

А началось все довольно безобидно. Позвонил старый клиент у которого уже года 2-3 работает магазин в связке с 1С и пожаловался что обмен перестал работать. Полез я к нему в 1С и вижу, что обмен действительно падает причем с разными ошибками и на разных файлах.

Первое что сделали — перешли на более мощный тариф хостинга. Половина зоопарка ошибок исчезла. Однако ошибка

Выгрузка на сайт завершилась с ошибками.
import.xml: Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.
Неверный тип файла, либо превышен максимальный размер файла

осталась и уходить не собиралась.

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

В итоге обратились в поддержку Битрикса. Судя по оперативности и точности ответов поддержка знает о проблеме. А суть ответов была в следующем: поддержка вставила отладочную печать и попросила сделать выгрузку.
По результатам выгрузки в консоли 1С появилась отладочная информация вида

отладочная информация в консоли 1С

Отсюда можно видеть, что одна из картинок имеет mimetype: application/octet-stream (т.е. двоичные данные вместо структурированных).
Далее по названию картинки вычисляем (например, можно в import.xml поискать по названию картинки) нехороший товар, пересохраняем его картинку в любом графическом редакторе и все работает.

Кому интересно — вся отладка заключается в изменении файла /bitrix/modules/main/classes/general/file.php:
после каждого вызова

return GetMessage("FILE_BAD_TYPE");

нужно вставить

print_r($arFile);

Попросил поддержку исправить этот баг в импорте, но мы то с вами знаем сколько такие неважные исправления могут делаться. Поэтому я просто оставлю это сообщение здесь. Возможно кому-то поможет сэкономить время.

Выгрузка на сайт завершилась с ошибками. import.xml: Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.

Увидели такую ошибку и думаете «в коде кто-то накосячил»? А вот совсем не факт.
Об удивительной причине по которой обмен 1С с сайтом может неожиданно перестать работать я и хочу рассказать.

А началось все довольно безобидно. Позвонил старый клиент у которого уже года 2-3 работает магазин в связке с 1С и пожаловался что обмен перестал работать. Полез я к нему в 1С и вижу, что обмен действительно падает причем с разными ошибками и на разных файлах.

Первое что сделали — перешли на более мощный тариф хостинга. Половина зоопарка ошибок исчезла. Однако ошибка

Выгрузка на сайт завершилась с ошибками.
import.xml: Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.
Неверный тип файла, либо превышен максимальный размер файлаНеверный тип файла, либо превышен максимальный размер файла

осталась и уходить не собиралась.

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

В итоге обратились в поддержку Битрикса. Судя по оперативности и точности ответов поддержка знает о проблеме. А суть ответов была в следующем: поддержка вставила отладочную печать и попросила сделать выгрузку.
По результатам выгрузки в консоли 1С появилась отладочная информация вида

Array
(
    [name] => 04f5da44f3fe11e297cb002215a2039c_04f5da47f3fe11e297cb002215a2039c.jpg
    [size] => 3789
    [tmp_name] => /home/i/mysite/public_html/upload/tmp/1ec/04f5da44f3fe11e297cb002215a2039c_04f5da47f3fe11e297cb002215a2039c.jpg
    [type] => application/octet-stream
    [COPY_FILE] => Y
    [description] => 
    [copy] => 1
    [MODULE_ID] => iblock
)
 

Отсюда можно видеть, что одна из картинок имеет mimetype: application/octet-stream.
Далее по названию картинки вычисляем (например, можно в import.xml поискать по названию картинки) нехороший товар, пересохраняем его картинку в любом графическом редакторе и все работает.

Кому интересно — вся отладка заключается в изменении файла /bitrix/modules/main/classes/general/file.php:
после каждого вызова

return GetMessage("FILE_BAD_TYPE");

нужно вставить

Попросил поддержку исправить этот баг в импорте, но мы то с вами знаем сколько такие неважные исправления могут делаться. Поэтому я просто оставлю это сообщение здесь. Возможно кому-то поможет сэкономить время.

Назад в раздел

  

arishkaKlimova

04.08.15 — 15:25

УТ 11.1.10.131

1С-Битрикс: Управление сайтом 12.5.5.

При отправке данных выдаётся вот такая ошибка в журнале регистрации:

Интерактивный обмен

04.08.2015 17:10:32 Запуск выгрузки пакета предложений

04.08.2015 17:10:34 Выгрузка на сайт завершилась с ошибками.

offers0_1.xml: Произошла ошибка на стороне сервера.

Ответ сервера:

failure

Ошибка импорта метаданных.

04.08.2015 17:10:35 Завершена выгрузка пакета предложений

Что это может быть? Как исправить?

  

Maniac

1 — 04.08.15 — 15:28

Вот ребята работают с обменами могут помочь http://cms1c.ru

  

Котокот

2 — 04.08.15 — 15:29

(1) Что ж ты их так пиаришь то постоянно?

  

Maniac

3 — 04.08.15 — 15:30

(2) да потому что реально больше не от кого помощи ждать

  

Maniac

4 — 04.08.15 — 15:30

если люди профессионально этим занимаются, то почему бы не дать. все таки проблема.

  

Mitriy

5 — 04.08.15 — 15:31

(2) потому что жадный

  

Котокот

6 — 04.08.15 — 15:34

(3) Я бы не был столь категоричным. За деньги тут сейчас пара десятков желающих помочь найдется.

  

arishkaKlimova

7 — 04.08.15 — 15:48

А есть информация по теме?

  

ИА1С

8 — 04.08.15 — 15:51

offers.xml ходят предложения. И остатки.

Что то неожиданное ты ему передаешь. У тебя в предложениях стоит Истина во внешнем подключении?

Посмотри в общем модуле Б_ОбменССайтомСервер есть процедура формирования файла XML, он формируется в системной Temp, отлови и посмотри что в нем.

И со стороны сайта импорт то настроен?

http://cms1c.ru — пацаны крутые. Но много кто обмена занимается.

  

ИА1С

9 — 04.08.15 — 15:53

Функция называется ЗаписьИОтправкаXMLДанныхНаСайт, в ней точну остановы после МойXML.Закрыть() и смотри что в нем.

  

ИА1С

10 — 04.08.15 — 15:55

  

Котокот

11 — 04.08.15 — 15:56

(7) А что по теме, по теме надо лезть в битрикс, смотреть на его стороне, что ему там 1С пихает в качестве данных, как товарищ в (8) написал. Если там с виду валидный xml-файл, то пошагово проверять, на каком именно месте валится загрузка.

Рекомендации из http://dev.1c-bitrix.ru/support/forum/forum26/topic47899/ выполнены?

  

Котокот

12 — 04.08.15 — 15:57

  

ИА1С

13 — 04.08.15 — 16:00

(11) — экранирование в последней редакции они уже сделали. (12) — там бы просто сервер возвращал что нельзя устанавливать несколько цен.

Тут ошибка именно в формировании файла. Отловить и посмотреть. Может быть ему какое название свойства не нравится. Или просто предложение не настроено.

  

viraboy

14 — 04.08.15 — 16:29

(13) Ошибка на сервере, там и смотреть

  

ИА1С

15 — 04.08.15 — 16:37

(14) А как ты на сервере посмотришь? Там скрипт в 5000+ строк. Да и если на хостинге сайт. То так просто не отловишь. Только если на стороне сайта в скрипте запись в логи организовывать. Легче на стороне 1С отловить и посмотреть что в нем. Ну и сначала пройтись по всем настройкам по инструкции.

  

viraboy

16 — 05.08.15 — 09:02

(15) Неужели на сервере нету логов?

  

Котокот

17 — 05.08.15 — 11:20

(15) Не обязательно все 5000 строк смотреть, начать с процедуры открытия xml-ки и дальше по коду.

  

DmitriyDI

18 — 05.08.15 — 11:31

(0)обмен стоит товарами и заказами ?

  

arishkaKlimova

19 — 05.08.15 — 12:09

(18) Обмен только товарами.

Посмотрела в папке «Temp» файл «import0_1.xml». С ним вроде всё хорошо. Но уже там нет цен.

  

arishkaKlimova

20 — 05.08.15 — 12:14

В принципе, обмен происходит — в битриксе появляется структура, сами товары и даже картинки, но нет остатков и цен

  

Котокот

21 — 05.08.15 — 12:34

(20) А в xml есть остатки и цены? Модуль «Интернет-магазин» на сайте у вас есть?

  

arishkaKlimova

22 — 05.08.15 — 14:25

(21) Нет, в xml цен и остатков не нашла.

Модуль стоит.

Кстати, делаю обмен через стандартную обработку

  

Котокот

23 — 05.08.15 — 14:32

(22) Ну если в xml нет цен и остатков, значит надо смотреть в 1С, почему она их туда не кладет.

  

drcrasher

24 — 05.08.15 — 14:33

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

но вот название не помню, хоть убейте.

  

drcrasher

25 — 05.08.15 — 14:33

dmatveev1994

Как устранить ошибку импорта метаданных?

Настраиваю выгрузку между 1С 8,3 и битрикс. Не могу избавиться от ошибки:
import___0582b3d2-fdb7-4326-8fd5-8923c36c3961.xml: Произошла ошибка на стороне сервера.
Ответ сервера:
failure
Ошибка импорта метаданных.Ошибка добавления новой единицы измерения (код единицы: ).
Соответственно товары выгружаются, но в общую папку без группировки по разделам.
Как устранить данную ошибку? Спасайте кто сталкивался!


  • Вопрос задан

    более двух лет назад

  • 1970 просмотров

Пригласить эксперта

Это на стороне 1С нужна правка.
Заходите в Единицы измерения, проверяете что все единицы имеют код.
Если не имеют, то удаляете. Добавляете новые подбором из классификатора.

Насколько я вижу из вашей выгрузки — нет кода у единицы Упак


  • Показать ещё
    Загружается…

30 янв. 2023, в 23:32

5000 руб./за проект

30 янв. 2023, в 23:11

500 руб./за проект

30 янв. 2023, в 22:43

1500 руб./в час

Минуточку внимания

Содержание

  1. Странное зависание обмена
  2. Произошла ошибка на стороне сервера. Ошибка импорта метаданных.
  3. Странное зависание обмена
  4. Интернет-магазин на битрикс, упала скорость обмена в 10 раз.
  5. Модуль обмена для БУС

Странное зависание обмена

Здравствуйте, есть УТ 11.1.7.54 с соответствующим модулем, база в клиент-серверном варианте, платформа последняя. В базе 11000 товаров, при обмене происходит странное, он просто зависает без всяких ошибок. Лог просто обрывается, например так

18.04.2015 8:47:50—Начало выгрузки пакета 8 каталога: Основной каталог товаров
18.04.2015 8:48:28—Выгрузка справочных данных.
18.04.2015 8:48:28—Выгрузка товаров в XML.
18.04.2015 8:49:38—Выгружено 1 563 картинок.
18.04.2015 8:49:38—Выгружено 367 файлов.
18.04.2015 8:49:38—Выгрузка товаров в XML завершено. Выгружено 500 элементов.
18.04.2015 8:49:38—Отправка запроса на авторизацию.
18.04.2015 8:49:38—Отправка запроса на инициализацию, для определения версии обмена данных.
18.04.2015 8:58:21—Процес выполнения обмена: Распаковка архива завершена.
18.04.2015 8:58:21—Процес выполнения обмена: Временные таблицы удалены.
18.04.2015 8:58:21—Процес выполнения обмена: Временные таблицы созданы.
18.04.2015 8:58:36—Процес выполнения обмена: Файл импорта прочитан.
18.04.2015 8:58:37—Процес выполнения обмена: Временные таблицы проиндексированы.
18.04.2015 8:58:37—Процес выполнения обмена: Метаданные импортированы успешно.
18.04.2015 8:58:37—Процес выполнения обмена: Группы импортированы.
18.04.2015 8:58:38—Процес выполнения обмена: Деактивация/удаление групп завершено.

18.04.2015 1:36:12—Начало выгрузки пакета 13 каталога: Основной каталог товаров
18.04.2015 1:36:26—Выгрузка справочных данных.
18.04.2015 1:36:26—Выгрузка товаров в XML.
18.04.2015 1:36:49—Выгружено 550 картинок.
18.04.2015 1:36:49—Выгружено 0 файлов.
18.04.2015 1:36:49—Выгрузка товаров в XML завершено. Выгружено 500 элементов.
18.04.2015 1:36:49—Отправка запроса на авторизацию.
18.04.2015 1:36:49—Отправка запроса на инициализацию, для определения версии обмена данных.
18.04.2015 1:39:18—Процес выполнения обмена: Распаковка архива завершена.
18.04.2015 1:39:18—Процес выполнения обмена: Временные таблицы удалены.
18.04.2015 1:39:18—Процес выполнения обмена: Временные таблицы созданы.
18.04.2015 1:39:31—Процес выполнения обмена: Файл импорта прочитан.
18.04.2015 1:39:33—Процес выполнения обмена: Временные таблицы проиндексированы.
18.04.2015 1:39:33—Процес выполнения обмена: Метаданные импортированы успешно.
18.04.2015 1:39:33—Процес выполнения обмена: Группы импортированы.
18.04.2015 1:39:33—Процес выполнения обмена: Деактивация/удаление групп завершено.
18.04.2015 1:40:04—Процес выполнения обмена: Обработано 91 из 500 элементов.
18.04.2015 1:40:35—Процес выполнения обмена: Обработано 189 из 500 элементов.
18.04.2015 1:41:06—Процес выполнения обмена: Обработано 281 из 500 элементов.

Это может быть любой пакет, 7,8, 12. Дальше в логах перестают появляться записи, программа продолжает мирно висеть в процессе обмена. На сайте соответсвенно новых записей не появляется, но и никаких ошибок нигде не вываливается. Сейчас пытаюсь дождаться хоть каких-то выпадов ошибок. Программу принудительно не закрываю. Может подкинете какие идеи?

Источник

Произошла ошибка на стороне сервера. Ошибка импорта метаданных.

Здравствуйте,
При обмене 1С с БУСом начала возникать ошибка.
Соответственно номенклатура и цены не передаются. Заказы ходят нормально.
Ранее такой ошибки не наблюдалось.
Помогите, пожалуйста, уже не знаю где копать.

Вот что пишется в логе:

14.09.2017 13:44:26—Начало обмена узла sitename.ru
14.09.2017 13:44:26— Каталог на диске: C:UserssitenameAppDataLocalTemp4941 035 132 860webdata00000001
14.09.2017 13:44:26—Выгрузка информации по товарам.
14.09.2017 13:44:26—Формирование пакета для общих данных для товаров.
14.09.2017 13:44:26—Формирование пакетов для каталога: Оборудование
14.09.2017 13:44:31—Формирование пакетов для каталога: Оборудование Завершено
14.09.2017 13:44:31—Формирование пакета для для общих данных для товаров завершено.
14.09.2017 13:44:31—Выгрузка пакетов общей информации в в XML.
14.09.2017 13:44:31—Выгрузка пакета общей информации каталога: Оборудование
14.09.2017 13:44:31—Выгрузка пакетов каталога: Оборудование
14.09.2017 13:44:31—Выгрузка справочных данных.
14.09.2017 13:44:31—Выгрузка групп в XML.
14.09.2017 13:44:31—Выгрузка групп в XML завершено. Выгружено 159 элементов.
14.09.2017 13:44:31—Выгрузка единиц измерения в XML.
14.09.2017 13:44:32—Выгрузка единиц измерения в XML завершено. Выгружено 0 элементов.
14.09.2017 13:44:32—Выгрузка складов в XML.
14.09.2017 13:44:32—Выгрузка складов в XML завершено. Выгружено 1 элементов.
14.09.2017 13:44:32—Выгрузка типов цен в XML.
14.09.2017 13:44:32—Выгрузка типов цен в XML завершено. Выгружено 1 элементов.
14.09.2017 13:44:32—Отправка запроса на авторизацию.
14.09.2017 13:44:32—Отправка запроса на инициализацию, для определения версии обмена данных.
14.09.2017 13:44:32—Процес выполнения обмена: Распаковка архива завершена.
14.09.2017 13:44:32—Процес выполнения обмена: Временные таблицы удалены.
14.09.2017 13:44:32—Процес выполнения обмена: Временные таблицы созданы.
14.09.2017 13:44:32—Процес выполнения обмена: Файл импорта прочитан.
14.09.2017 13:44:33—Процес выполнения обмена: Временные таблицы проиндексированы.
14.09.2017 13:44:33—import___025b4041-04b4-4bd0-95b6-0f3e81e47c13.xml: Произошла ошибка на стороне сервера.
Ответ сервера:
failure
Ошибка импорта метаданных.
14.09.2017 13:44:39—Отправка запроса на авторизацию.
14.09.2017 13:44:39—Отправка запроса на инициализацию, для определения версии обмена данных.
14.09.2017 13:44:39—Процес выполнения обмена: Распаковка архива завершена.
14.09.2017 13:44:39—Процес выполнения обмена: Временные таблицы удалены.
14.09.2017 13:44:39—Процес выполнения обмена: Временные таблицы созданы.
14.09.2017 13:44:39—Процес выполнения обмена: Файл импорта прочитан.
14.09.2017 13:44:39—Процес выполнения обмена: Временные таблицы проиндексированы.
14.09.2017 13:44:39—import___025b4041-04b4-4bd0-95b6-0f3e81e47c13.xml: Произошла ошибка на стороне сервера.
Ответ сервера:
failure
Ошибка импорта метаданных.
14.09.2017 13:44:45—Отправка запроса на авторизацию.
14.09.2017 13:44:45—Отправка запроса на инициализацию, для определения версии обмена данных.
14.09.2017 13:44:45—Процес выполнения обмена: Распаковка архива завершена.
14.09.2017 13:44:45—Процес выполнения обмена: Временные таблицы удалены.
14.09.2017 13:44:45—Процес выполнения обмена: Временные таблицы созданы.
14.09.2017 13:44:45—Процес выполнения обмена: Файл импорта прочитан.
14.09.2017 13:44:47—Процес выполнения обмена: Временные таблицы проиндексированы.
14.09.2017 13:44:47—import___025b4041-04b4-4bd0-95b6-0f3e81e47c13.xml: Произошла ошибка на стороне сервера.
Ответ сервера:
failure
Ошибка импорта метаданных.
14.09.2017 13:44:47—Завершение выгрузки пакета с общей информацией каталога: Оборудование
14.09.2017 13:44:47—Выгрузка пакета общей информации каталога: Оборудование завершена.
14.09.2017 13:44:47—Выгрузка пакетов общей информации в XML завершена.
14.09.2017 13:44:47—Выгрузка неотправленных пакетов данных о товарах и предложениях.
14.09.2017 13:44:47—Выгрузка пакетов товаров в в XML.
14.09.2017 13:44:47—Выгрузка пакетов каталога: Оборудование
14.09.2017 13:44:47—Выгрузка пакетов каталога: Оборудование
14.09.2017 13:44:47—Выгрузка пакетов каталога: Оборудование завершена.
14.09.2017 13:44:47—Выгрузка пакетов товаров в XML завершена.
14.09.2017 13:44:47—Выгрузка неотправленных пакетов данных о товарах и предложениях ЗАВЕРШЕНА
14.09.2017 13:44:47—Выгрузка информации о товарах и предложениях.
14.09.2017 13:44:47—Формирование пакетов для товаров.
14.09.2017 13:44:47—Формирование пакетов для каталога: Оборудование
14.09.2017 13:44:52—Формирование пакетов для каталога: Оборудование Завершено
14.09.2017 13:44:52—Формирование пакетов для товаров завершено.
14.09.2017 13:44:52—Выгрузка пакетов товаров в в XML.
14.09.2017 13:44:52—Выгрузка пакетов каталога: Оборудование
14.09.2017 13:44:52—Выгрузка пакетов каталога: Оборудование
14.09.2017 13:44:52—Выгрузка пакетов каталога: Оборудование завершена.
14.09.2017 13:44:52—Отправка запроса об окончании выгрузки информации о товарах.
14.09.2017 13:44:52—Отправка запроса на авторизацию.
14.09.2017 13:44:52—Выгрузка пакетов товаров в XML завершена.
14.09.2017 13:44:52—Выгрузка информации о товарах и предложениях ЗАВЕРШЕНА

Подозрение, что «падает» хостинг. Обмен 1с и битрикс достаточно ресурсоемкий.

Попробуйте увеличить мощность хостинга, либо уменьшить число товаров в пакете. Также можно включить «повторную отправку неудачных пакетов», если применяете аддон для обмена.

Цитата
Александр Новиков написал:
Подозрение, что «падает» хостинг. Обмен 1с и битрикс достаточно ресурсоемкий.

Попробуйте увеличить мощность хостинга, либо уменьшить число товаров в пакете. Также можно включить «повторную отправку неудачных пакетов», если применяете аддон для обмена.

Проблема решена, дело было в остатках на складах. Убрал выгрузку остатков по складам и ошибка пропала.
Но теперь проблема в другом. Не выгружаются разделы каталога, товары выгружаются скопом, без разделов.
В логах 1с ошибок нет.
В xml раздел формируется, а вот на сайте нет.

Источник

Странное зависание обмена

Здравствуйте, есть УТ 11.1.7.54 с соответствующим модулем, база в клиент-серверном варианте, платформа последняя. В базе 11000 товаров, при обмене происходит странное, он просто зависает без всяких ошибок. Лог просто обрывается, например так

18.04.2015 8:47:50—Начало выгрузки пакета 8 каталога: Основной каталог товаров
18.04.2015 8:48:28—Выгрузка справочных данных.
18.04.2015 8:48:28—Выгрузка товаров в XML.
18.04.2015 8:49:38—Выгружено 1 563 картинок.
18.04.2015 8:49:38—Выгружено 367 файлов.
18.04.2015 8:49:38—Выгрузка товаров в XML завершено. Выгружено 500 элементов.
18.04.2015 8:49:38—Отправка запроса на авторизацию.
18.04.2015 8:49:38—Отправка запроса на инициализацию, для определения версии обмена данных.
18.04.2015 8:58:21—Процес выполнения обмена: Распаковка архива завершена.
18.04.2015 8:58:21—Процес выполнения обмена: Временные таблицы удалены.
18.04.2015 8:58:21—Процес выполнения обмена: Временные таблицы созданы.
18.04.2015 8:58:36—Процес выполнения обмена: Файл импорта прочитан.
18.04.2015 8:58:37—Процес выполнения обмена: Временные таблицы проиндексированы.
18.04.2015 8:58:37—Процес выполнения обмена: Метаданные импортированы успешно.
18.04.2015 8:58:37—Процес выполнения обмена: Группы импортированы.
18.04.2015 8:58:38—Процес выполнения обмена: Деактивация/удаление групп завершено.

18.04.2015 1:36:12—Начало выгрузки пакета 13 каталога: Основной каталог товаров
18.04.2015 1:36:26—Выгрузка справочных данных.
18.04.2015 1:36:26—Выгрузка товаров в XML.
18.04.2015 1:36:49—Выгружено 550 картинок.
18.04.2015 1:36:49—Выгружено 0 файлов.
18.04.2015 1:36:49—Выгрузка товаров в XML завершено. Выгружено 500 элементов.
18.04.2015 1:36:49—Отправка запроса на авторизацию.
18.04.2015 1:36:49—Отправка запроса на инициализацию, для определения версии обмена данных.
18.04.2015 1:39:18—Процес выполнения обмена: Распаковка архива завершена.
18.04.2015 1:39:18—Процес выполнения обмена: Временные таблицы удалены.
18.04.2015 1:39:18—Процес выполнения обмена: Временные таблицы созданы.
18.04.2015 1:39:31—Процес выполнения обмена: Файл импорта прочитан.
18.04.2015 1:39:33—Процес выполнения обмена: Временные таблицы проиндексированы.
18.04.2015 1:39:33—Процес выполнения обмена: Метаданные импортированы успешно.
18.04.2015 1:39:33—Процес выполнения обмена: Группы импортированы.
18.04.2015 1:39:33—Процес выполнения обмена: Деактивация/удаление групп завершено.
18.04.2015 1:40:04—Процес выполнения обмена: Обработано 91 из 500 элементов.
18.04.2015 1:40:35—Процес выполнения обмена: Обработано 189 из 500 элементов.
18.04.2015 1:41:06—Процес выполнения обмена: Обработано 281 из 500 элементов.

Это может быть любой пакет, 7,8, 12. Дальше в логах перестают появляться записи, программа продолжает мирно висеть в процессе обмена. На сайте соответсвенно новых записей не появляется, но и никаких ошибок нигде не вываливается. Сейчас пытаюсь дождаться хоть каких-то выпадов ошибок. Программу принудительно не закрываю. Может подкинете какие идеи?

Источник

Интернет-магазин на битрикс, упала скорость обмена в 10 раз.

Параметры сервера.
Server Supermicro SYS-5018R-MR
1 х CPU Intel Xeon Processor E5-1650 v3 (15M Cache, 3.50 GHz)
1 x BOARD Super X10Sri-F Rev.1.0
4 х DDR4 2133MHz 8Гб (32Гб)
2 x SSD 256 GB Samsung 850 PRO 2.5″ RAID1 (Система)
1 x HDD SATA 1000 GB, 7200rpm, 64 MB cache, SATA 6Gb/s 3.5″ (Бэкапы)

Проблема. У нас выделенный сервер, на котором крутиться только 2 наших сайта. 2 отдельных лицензии битрикс. Сайты не связанны друг с другом.
23 сентября, обмены с сайтами начали тормозить, скорость обмена резко упала в 10-15 раз.
В логах обмена подивились строки с %, которых раньше не было:
03.10.2016 8:15:15—Отправка запроса на авторизацию.
03.10.2016 8:15:15—Отправка запроса на инициализацию, для определения версии обмена данных.
03.10.2016 8:15:22—Процес выполнения обмена: Распаковка архива завершена.
03.10.2016 8:15:22—Процес выполнения обмена: Временные таблицы удалены.
03.10.2016 8:15:23—Процес выполнения обмена: Временные таблицы созданы.
03.10.2016 8:15:38—Процес выполнения обмена: Обработано 1.53% файла.
03.10.2016 8:15:54—Процес выполнения обмена: Обработано 2.89% файла.
03.10.2016 8:16:10—Процес выполнения обмена: Обработано 4.3% файла.
03.10.2016 8:16:26—Процес выполнения обмена: Обработано 5.62% файла.
03.10.2016 8:16:42—Процес выполнения обмена: Обработано 6.96% файла.
03.10.2016 8:16:58—Процес выполнения обмена: Обработано 8.32% файла.
03.10.2016 8:17:14—Процес выполнения обмена: Обработано 9.72% файла.
.
03.10.2016 8:32:10—Процес выполнения обмена: Обработано 95.46% файла.
03.10.2016 8:32:26—Процес выполнения обмена: Обработано 96.95% файла.
03.10.2016 8:32:42—Процес выполнения обмена: Обработано 98.45% файла.
03.10.2016 8:32:58—Процес выполнения обмена: Обработано 99.9% файла.
03.10.2016 8:32:59—Процес выполнения обмена: Файл импорта прочитан.

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

Попробовали выгрузить сайт на бесплатный хостинг, там обмены с тестовой базой пошли нормально, без тормозов. Из чего сделали выводы, что ошибка не в программном коде сайта. А в настройках сервера.
В течении месяца разработчики занимаются настройками различных параметров сервера. После которых тестируем обмен. Эффекта 0.

Помогите советом. Куда копать. Думаю найти эксперта по обмену с битриксом, но не знаю где искать.

Источник

Модуль обмена для БУС

Цитата
Николай Мунхажеев написал:
новый модуль грузит в другой «Основной каталог товаров»

Добрый день!
Обновили платформу с 8.3.5.1460 на 8.3.5.1570 и Управление торговлей с 11.1.10.86 на 11.1.10.145. На старой версии выгрузка на сайт и обмен заказами работал.

26.05.2015 10:14:09—____________________________________________________________ ­__________
26.05.2015 10:14:09—Начало обмена узла Обмен с сайтом __
26.05.2015 10:14:15—Очистка регистра пакетов обмена.
26.05.2015 10:14:15—Очистка регистра пакетов обмена завершена.
26.05.2015 10:14:15—Выгрузка информации по товарам.
26.05.2015 10:14:15—Формирование пакетов для товаров.
26.05.2015 10:14:15—Формирование пакетов для каталога: Основной каталог товаров
26.05.2015 10:14:20—Формирование пакетов для каталога: Основной каталог товаров Завершено
26.05.2015 10:14:20—Формирование пакетов для товаров завершено.
26.05.2015 10:14:20—Выгрузка пакетов товаров в в XML.
26.05.2015 10:14:20—Выгрузка пакетов каталога: Основной каталог товаров
26.05.2015 10:14:20—Выгрузка пакетов каталога: Основной каталог товаров
26.05.2015 10:14:20—Начало выгрузки пакета 0 каталога: Основной каталог товаров
26.05.2015 10:15:16—Выгрузка справочных данных.
26.05.2015 10:15:16—Выгрузка групп в XML.
26.05.2015 10:15:19—Выгрузка групп в XML завершено. Выгружено 0 элементов.
26.05.2015 10:15:19—Выгрузка единиц измерения в XML.
26.05.2015 10:15:19—Выгрузка единиц измерения в XML завершено. Выгружено 0 элементов.
26.05.2015 10:15:19—Выгрузка складов в XML.
26.05.2015 10:15:19—Выгрузка складов в XML завершено. Выгружено 1 элементов.
26.05.2015 10:15:19—Выгрузка типов цен в XML.
26.05.2015 10:15:19—Выгрузка типов цен в XML завершено. Выгружено 1 элементов.
26.05.2015 10:15:19—Отправка запроса на авторизацию.
26.05.2015 10:15:19—Отправка запроса на инициализацию, для определения версии обмена данных.
26.05.2015 10:15:20—Процес выполнения обмена: Временные таблицы удалены.
26.05.2015 10:15:20—Процес выполнения обмена: Временные таблицы созданы.
26.05.2015 10:15:20—Процес выполнения обмена: Файл импорта прочитан.
26.05.2015 10:15:20—Процес выполнения обмена: Временные таблицы проиндексированы.
26.05.2015 10:15:20—Процес выполнения обмена: Метаданные импортированы успешно.
26.05.2015 10:15:20—Процес выполнения обмена: Группы импортированы.
26.05.2015 10:15:21—Процес выполнения обмена: Деактивация/удаление групп завершено.
26.05.2015 10:15:21—Процес выполнения обмена: Загрузка элементов завершена.
26.05.2015 10:15:21—Процес выполнения обмена: Деактивация/Удаление элементов завершены.
26.05.2015 10:15:21—import___af87308d-0af0-4a9d-ac61-e33f16c2a6ef.xml: Данные успешно обработаны сервером.
Ответ сервера: success
Импорт успешно завершен.
26.05.2015 10:15:21—Отправка запроса на авторизацию.
26.05.2015 10:15:23—Отправка запроса на инициализацию, для определения версии обмена данных.
26.05.2015 10:15:24—Процес выполнения обмена: Временные таблицы удалены.
26.05.2015 10:15:24—Процес выполнения обмена: Временные таблицы созданы.
26.05.2015 10:15:24—Процес выполнения обмена: Файл импорта прочитан.
26.05.2015 10:15:28—Процес выполнения обмена: Временные таблицы проиндексированы.
26.05.2015 10:15:29—Процес выполнения обмена: Метаданные импортированы успешно.
26.05.2015 10:15:30—Процес выполнения обмена: Группы импортированы.
26.05.2015 10:15:30—Процес выполнения обмена: Деактивация/удаление групп завершено.
26.05.2015 10:15:30—Процес выполнения обмена: Загрузка элементов завершена.
26.05.2015 10:15:30—Процес выполнения обмена: Деактивация/Удаление элементов завершены.
26.05.2015 10:15:30—offers___b5a0a305-790d-4f29-8059-91f2bc4de15a.xml: Данные успешно обработаны сервером.
Ответ сервера: success
Импорт успешно завершен.
26.05.2015 10:15:30—Завершение выгрузки пакета 0 каталога: Основной каталог товаров
26.05.2015 10:15:30—Выгрузка пакетов каталога: Основной каталог товаров завершена.
26.05.2015 10:15:30—Выгрузка пакетов товаров в XML завершена.
26.05.2015 10:15:30—Выгрузка информации по товарам ЗАВЕРШЕНА
26.05.2015 10:15:30—Загрузка информации по заказам.
26.05.2015 10:15:31—Отправка запроса на авторизацию.
26.05.2015 10:15:31—Отправка запроса на инициализацию, для определения версии обмена данных.
26.05.2015 10:15:31—Отправка запроса на получение заказов с сайта.
26.05.2015 10:15:32—Нет документов для обработки
26.05.2015 10:15:32—Сообщение на сайт, что заказы получены и обработаны, доставлено.
26.05.2015 10:15:32—Загрузка информации по заказам ЗАВЕРШЕНА
26.05.2015 10:15:32—Выгрузка информации по заказам.
26.05.2015 10:15:32—Формирование пакетов для документов
26.05.2015 10:15:32—Формирование пакетов для документов завершено
26.05.2015 10:15:32—Выгрузка пакетов заказов в XML.
26.05.2015 10:15:32—Выгрузка пакетов заказов в XML завершена.
26.05.2015 10:15:32—Выгрузка информации по заказам ЗАВЕРШЕНА
26.05.2015 10:15:32—Выгрузка текущего лог файла на сайт.
26.05.2015 10:15:32—Отправка запроса на авторизацию.
26.05.2015 10:15:33—Завершение обмена Обмен с сайтом Termit.su
26.05.2015 10:15:33—____________________________________________________________ ­__________
26.05.2015 10:17:34—____________________________________________________________ ­__________
26.05.2015 10:17:34—Начало обмена узла Обмен с сайтом Termit.su
26.05.2015 10:17:34—Очистка регистра пакетов обмена.
26.05.2015 10:17:34—Очистка регистра пакетов обмена завершена.
26.05.2015 10:17:34—Выгрузка информации по товарам.
26.05.2015 10:17:34—Формирование пакетов для товаров.
26.05.2015 10:17:34—Формирование пакетов для каталога: Каталог товаров
26.05.2015 10:17:42—Формирование пакетов для каталога: Каталог товаров Завершено
26.05.2015 10:17:42—Формирование пакетов для товаров завершено.
26.05.2015 10:17:42—Выгрузка пакетов товаров в в XML.
26.05.2015 10:17:42—Выгрузка пакетов каталога: Каталог товаров
26.05.2015 10:17:42—Выгрузка пакетов каталога: Каталог товаров
26.05.2015 10:17:42—Начало выгрузки пакета 0 каталога: Каталог товаров
26.05.2015 10:18:33—Выгрузка справочных данных.
26.05.2015 10:18:33—Выгрузка групп в XML.
26.05.2015 10:18:35—Выгрузка групп в XML завершено. Выгружено 122 элементов.
26.05.2015 10:18:35—Выгрузка единиц измерения в XML.
26.05.2015 10:18:35—Выгрузка единиц измерения в XML завершено. Выгружено 5 элементов.
26.05.2015 10:18:35—Выгрузка складов в XML.
26.05.2015 10:18:35—Выгрузка складов в XML завершено. Выгружено 1 элементов.
26.05.2015 10:18:35—Выгрузка типов цен в XML.
26.05.2015 10:18:35—Выгрузка типов цен в XML завершено. Выгружено 1 элементов.
26.05.2015 10:18:35—Отправка запроса на авторизацию.
26.05.2015 10:18:35—Отправка запроса на инициализацию, для определения версии обмена данных.
26.05.2015 10:18:37—Процес выполнения обмена: Временные таблицы удалены.
26.05.2015 10:18:37—Процес выполнения обмена: Временные таблицы созданы.
26.05.2015 10:18:38—Процес выполнения обмена: Файл импорта прочитан.
26.05.2015 10:18:38—Процес выполнения обмена: Временные таблицы проиндексированы.
26.05.2015 10:18:38—Процес выполнения обмена: Метаданные импортированы успешно.
26.05.2015 10:18:38—Процес выполнения обмена: Группы импортированы.
26.05.2015 10:18:39—Процес выполнения обмена: Деактивация/удаление групп завершено.
26.05.2015 10:18:39—Процес выполнения обмена: Загрузка элементов завершена.
26.05.2015 10:18:39—Процес выполнения обмена: Деактивация/Удаление элементов завершены.
26.05.2015 10:18:39—import___55663f38-c54e-4e6b-b03a-b15972529c37.xml: Данные успешно обработаны сервером.
Ответ сервера: success
Импорт успешно завершен.
26.05.2015 10:18:39—Отправка запроса на авторизацию.
26.05.2015 10:18:39—Отправка запроса на инициализацию, для определения версии обмена данных.
26.05.2015 10:18:40—Процес выполнения обмена: Временные таблицы удалены.
26.05.2015 10:18:40—Процес выполнения обмена: Временные таблицы созданы.
26.05.2015 10:18:40—Процес выполнения обмена: Файл импорта прочитан.
26.05.2015 10:18:40—Процес выполнения обмена: Временные таблицы проиндексированы.
26.05.2015 10:18:40—Процес выполнения обмена: Метаданные импортированы успешно.
26.05.2015 10:18:40—Процес выполнения обмена: Группы импортированы.
26.05.2015 10:18:40—Процес выполнения обмена: Деактивация/удаление групп завершено.
26.05.2015 10:18:41—Процес выполнения обмена: Загрузка элементов завершена.
26.05.2015 10:18:41—Процес выполнения обмена: Деактивация/Удаление элементов завершены.
26.05.2015 10:18:41—offers___88d57d35-7b97-475e-b501-3635c24d04f7.xml: Данные успешно обработаны сервером.
Ответ сервера: success
Импорт успешно завершен.
26.05.2015 10:18:41—Завершение выгрузки пакета 0 каталога: Каталог товаров
26.05.2015 10:18:41—Начало выгрузки пакета 1 каталога: Каталог товаров
26.05.2015 10:19:28—Выгрузка справочных данных.
26.05.2015 10:19:28—Выгрузка товаров в XML.
26.05.2015 10:20:18—Выгружено 771 картинок.
26.05.2015 10:20:18—Выгружено 142 файлов.
26.05.2015 10:20:18—Выгрузка товаров в XML завершено. Выгружено 1 017 элементов.
26.05.2015 10:20:18—Отправка запроса на авторизацию.
26.05.2015 10:20:19—Отправка запроса на инициализацию, для определения версии обмена данных.

После этого зависает наглухо. В чем проблема? Помогите!!

Источник

Рекомендованные сообщения

Rookie

Добрый день!

Подскажите, обмен с сайтом завершается ошибкой:

import3.xml: Произошла ошибка на стороне сервера.
Ответ сервера: 
failure
ERROR 10: file not found

Файлы offers импортируются нормально, а вот файл импорта нет… все время ошибка даже если ты выгружаешь 1 файл в пакете…

image.png.600799caf18179ecbc9ae68df3b1a5f2.png

  • Цитата

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

NeoSeo Team

Enthusiast

3 часа назад, ingenum сказал:

Добрый день!

Подскажите, обмен с сайтом завершается ошибкой:

import3.xml: Произошла ошибка на стороне сервера.
Ответ сервера: 
failure
ERROR 10: file not found

Файлы offers импортируются нормально, а вот файл импорта нет… все время ошибка даже если ты выгружаешь 1 файл в пакете…

image.png.600799caf18179ecbc9ae68df3b1a5f2.png

Попробуйте переключить опцию «Требовать архив» в модуле на главной вкладке. Иногда не выгружает корректно файл или удаляет его раньше чем обработало.

  • Цитата

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Rookie

8 часов назад, NeoSeo Team сказал:

Попробуйте переключить опцию «Требовать архив» в модуле на главной вкладке. Иногда не выгружает корректно файл или удаляет его раньше чем обработало.

Помогло, спасибо. Знаем про эту настройку, но что-то совсем пропустили из виду…


Изменено 5 мая 2021 пользователем ingenum

  • Цитата

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

NeoSeo Team

Enthusiast

9 часов назад, ingenum сказал:

Помогло, спасибо. Знаем про эту настройку, но что-то совсем пропустили из виду…

Отлично, если будут вопросы, обращайтесь, всегда рады помочь.

  • Цитата

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Если у вас есть аккаунт, войдите в него для написания от своего имени.

Заказать сайт

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

Настройки подключения к 1С должны быть произведены согласно официальной документации

Очистка кеша после импорта

В файле init.php добавляем

//При начале импорта из 1С устанавливаем сессионную переменную
AddEventHandler(
    'catalog',
    'OnBeforeCatalogImport1C',
    function ()
    {
        $_SESSION["1C_UPDATE"] = true;
    }
);

//При окончании импорта из 1С устанавливаем сессионную переменную
AddEventHandler(
    'catalog',
    'OnSuccessCatalogImport1C',
    function ()
    {
        $_SESSION["1C_UPDATE"] = false;

        define('BX_BUFFER_USED', true);
        define('NO_KEEP_STATISTIC', true);
        define('NOT_CHECK_PERMISSIONS', true);
        define('NO_AGENT_STATISTIC', true);
        define('STOP_STATISTICS', true);
        define('SITE_ID', 's1');

        BXClearCache(true);

        if (class_exists('BitrixMainDataManagedCache')) {
            (new BitrixMainDataManagedCache())->cleanAll();
        }

        if (class_exists('CStackCacheManager')) {
            (new CStackCacheManager())->CleanAll();
        }

        if (class_exists('BitrixMainDataStaticHtmlCache')) {
            BitrixMainDataStaticHtmlCache::getInstance()->deleteAll();
        }
    }
);

Запуск импорта вручную

Для этого нужно перейти по адресу: https://site.ru/bitrix/admin/1c_exchange.php?type=catalog&mode=import&filename=import.xml

Так же импорт можно запустить из отладочного файла /bx_1c_import.php, что намного удобнее, но небезопасно! Переименуйте его и удалить сразу после использования

Включение отладки

В файле /bitrix/php_interface/dbconn.php добавляем константу

define("BX_CATALOG_IMPORT_1C_PRESERVE", true);

Для каждого обновляемого файла получим массив вида

Host: site.ru:443
Date: 2020-06-29 09:23:48
Module: ------------UPDATE-----------
Array
(
    [ACTIVE] => Y
    [PROPERTY_VALUES] => Array
        (
                )

            [339] => Array
                (
                    [n0] => Array
                        (
                            [VALUE] => 5055185210794
                            [DESCRIPTION] => 
                        )

                )

            [340] => Array
                (
                    [n0] => Array
                        (
                            [VALUE] => 5678000-01109
                            [DESCRIPTION] => 
                        )

                )

            [342] => Array
                (
                    [n0] => Array
                        (
                            [VALUE] => Товар 
                            [DESCRIPTION] => ВидНоменклатуры
                        )

                    [n1] => Array
                        (
                            [VALUE] => Товар
                            [DESCRIPTION] => ТипНоменклатуры
                        )

                    [n2] => Array
                        (
                            [VALUE] => Набор для вышивания "Поле маков". По картине Стива Томса ("Poppy Field", Steve Thoms). 25х25 см
                            [DESCRIPTION] => Полное наименование
                        )

                    [n3] => Array
                        (
                            [VALUE] => 1933.83
                            [DESCRIPTION] => Цена
                        )

                    [n4] => Array
                        (
                            [VALUE] => 0
                            [DESCRIPTION] => Вес
                        )

                )

        )

    [TMP_ID] => 1765642395
    [XML_ID] => 583b6b8d-d8f1-11e0-9980-1c6f65bc8a97
    [NAME] => Набор для вышивания MAIA Поле маков
    [DETAIL_TEXT] => Размер:25*25см (состав: канва Aida 16, цветная схема, нитки Anchor, игла, инструкция), счетный крест
    [DETAIL_TEXT_TYPE] => text
    [PREVIEW_TEXT] => Набор для вышивания "Поле маков". По картине Стива Томса ("Poppy Field", Steve Thoms). 25х25 см
    [PREVIEW_TEXT_TYPE] => text
    [DETAIL_PICTURE] => Array
        (
            [name] => 583b6b8d-d8f1-11e0-9980-1c6f65bc8a97_2b668b28-d6b7-11e5-afc8-001e676a37f6.jpg
            [size] => 84906
            [tmp_name] => /home/bitrix/www/upload/1c_catalog/import_files/58/583b6b8d-d8f1-11e0-9980-1c6f65bc8a97_2b668b28-d6b7-11e5-afc8-001e676a37f6.jpg
            [type] => image/jpeg
            [external_id] => 825a18b4d6a465891654f1227d1968e4
            [description] => 09
            [MODULE_ID] => iblock
            [old_file] => 122987
        )

    [PREVIEW_PICTURE] => Array
        (
            [name] => 583b6b8d-d8f1-11e0-9980-1c6f65bc8a97_2b668b28-d6b7-11e5-afc8-001e676a37f6.resize1.jpg
            [size] => 40462
            [tmp_name] => /home/bitrix/www/upload/1c_catalog/import_files/58/583b6b8d-d8f1-11e0-9980-1c6f65bc8a97_2b668b28-d6b7-11e5-afc8-001e676a37f6.resize1.jpg
            [type] => image/jpeg
            [external_id] => 825a18b4d6a465891654f1227d1968e4
            [description] => 09
            [MODULE_ID] => iblock
            [old_file] => 122986
        )

    [IBLOCK_SECTION] => Array
        (
            [0] => 1217
        )

    [BASE_WEIGHT] => 0
    [MODIFIED_BY] => 1
    [WF] => N
    [SEARCHABLE_CONTENT] => НАБОР ДЛЯ ВЫШИВАНИЯ MAIA ПОЛЕ МАКОВ
НАБОР ДЛЯ ВЫШИВАНИЯ "ПОЛЕ МАКОВ". ПО КАРТИНЕ СТИВА ТОМСА ("POPPY FIELD", STEVE THOMS). 25Х25 СМ
РАЗМЕР:25*25СМ (СОСТАВ: КАНВА AIDA 16, ЦВЕТНАЯ СХЕМА, НИТКИ ANCHOR, ИГЛА, ИНСТРУКЦИЯ), СЧЕТНЫЙ КРЕСТ
    [PREVIEW_PICTURE_ID] => 136021
    [DETAIL_PICTURE_ID] => 136022
    [ID] => 116896
    [IBLOCK_ID] => 22
    [RESULT] => 1
)

Поиск проблемного файла при получении во время импорта из 1С ответа Файл не является графическим

В файле /bitrix/modules/main/classes/general/file.php перед каждым

return GetMessage("FILE_BAD_FILE_TYPE");

вставляем:

print_r($arFile)

Получим массив вида

[
	[name] => 493d6d81-6ebb-11e3-8f8e-001e676a37f6_493d6d83-6ebb-11e3-8f8e-001e676a37f6.jpg
	[size] => 1051
	[tmp_name] => /home/bitrix/www/upload/1c_catalog/import_files/49/493d6d81-6ebb-11e3-8f8e-001e676a37f6_493d6d83-6ebb-11e3-8f8e-001e676a37f6.jpg
	[type] => image/jpeg
	[external_id] => b6c6e1bf0372a666323fd0a000999734
	[description] => PN-0146947
	[MODULE_ID] => iblock
	[old_file] => 
]

Теперь в файле import.xml мы можем найти id проблемного товара по имени изображения

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

Вместо print_r добавьте в файл /bitrix/modules/main/classes/general/file.php такой код

$log = '///////////////////////////////////////////////////////////////n';
$log .= date('Y-m-d H:i:s') . ' ' . print_r($arFile, true);
//$log .= str_replace(array('	', PHP_EOL), '', print_r($arFile, true)); //Для вывода в одну строку
file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/log.txt', $log . PHP_EOL, FILE_APPEND);

Выгрузка на сайт завершилась с ошибками. import.xml: Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.

1С вернул код ответа Ошибка открытия файла

Если вы убедились, что на жестком диске место есть, у вашего скрипта есть права доступа к папке /upload/ и сама папка существует, то попробуйте отключить сжатие при обмене с 1С.

Перейдите по ссылке /bitrix/admin/1c_admin.php?lang=ru&tabControl_active_tab=edit_catalog или используя навигацию Магазин > Настройки > Интеграция с 1С и снимите галочку с опции Использовать сжатие zip, если доступно

Теги:

1С Битриксphp

Обмен товарами (1С -> Битрикс).

Данный тип обмена (type=catalog) используется для создания и обновления на сайте следующих сущностей:

  • инфоблок товаров
  • UF-поля разделов в этом инфоблоке
  • свойства элементов в этом инфоблоке
  • инфоблок SKU
  • типы цен
  • склады
  • разделы в инфоблоке товаров
  • элементы в инфоблоке товаров (товары)
  • цены товаров
  • наличие товаров по складам

При обмене товарами 1С формирует XML-файлы, передает их на сайт и контролирует их обработку сайтом. 1С может передать 4 вида файлов:

  • В файлах с префиксом import_ — разделы каталога, товары, свойства товаров
  • В файлах с префиксом offers_ — SKU
  • В файлах с префиксом prices_ — цены товаров и предложений
  • В файлах с префиксом rests_ — остатки товаров и предложений по складам

На шаге авторизации в случае успеха сервер вернет дополнительный параметр timestamp (текущее время). 1С сохранит timestamp и передаст на сайт на последнем шаге обмена товарами.

schema1.jpg - ITsale

Шаг 1. Передача файла (повторяющийся).

Запрос
GET-параметры type=catalog
mode=file
sessid=<ID сессии>
filename=<имя файла>
POST Содержимое файла в виде строки
Cookie <имя Cookie>=<значение Cookie>
Ответ
Если успех success
Если ошибка failure
<текст ошибки>

Шаг может выполняется несколько раз. Каждый файл выгружается частями не более file_limit байт (см. предыдущий шаг) в бинарном виде через сырой POST-запрос. Сайт создает файл, если его нет. Имя файла берет из GET-параметра filename и дописывает в него переданный контент. Так продолжается до тех пор, пока 1С не передаст все части этого файла.
Возможные ошибки

Текст ошибки Что делать
Ошибка чтения HTTP данных Проверить сетевое соединение между сайтом и 1С.
Ошибка открытия файла <имя файла> для записи Проверить права на файл и папку файла у пользователя Apache, под которым работает Битрикс.
Ошибка записи в файл <имя файла> Проверить права на файл и папку файла у пользователя Apache, под которым работает Битрикс.

Шаг 2. Основной.

Запрос
GET-параметры type=<тип обмена>
mode=import
sessid=<ID сессии>
filename=<имя файла>
Cookie <имя Cookie>=<значение Cookie>
Ответ
Если импорт завершен success
Если импорт продолжается progress
<текущий статус>
Если ошибка failure
<текст ошибки>

Этот шаг — особенный. Файл уже целиком загружен на сайт и Битрикс готов его обработать. Его обработка может состоять из 11 более мелких операций, о которых 1С ничего не знает. Поэтому в параметре GET приходит mode=import (один и тот же запрос!), но сайт выполняет совершенно разные операции. Текущий прогресс Битрикс сохраняет в сессии в переменной $_SESSION[BX_CML2_IMPORT][NS]. Например, узел STEP в этом массиве отвечает как раз за номер внутренней операции импорта.

Шаг 2.1 Распаковка архива (повторяющийся, необязательный).

Ответ
Если файл распакован progress
Идет распаковка архива
Если файл распаковывается progress
Распаковка архива завершена
Если ошибка failure
<текст ошибки>

Шаг исполняется, только если 1С передала файл в формате ZIP. Распаковка происходит в той же директории, где лежат все файлы обмена товарами (по умолчанию — /upload/1c_catalog/). Эта операция не нумеруется внутри Битрикса (значение STEP в сессии не изменяется).
Возможные ошибки

Текст ошибки Что делать
Ошибка распаковки архива Проверьте работоспособность функции PHP zip_open и расширение Zip . Если все корректно — скачайте архив с сайта и проверьте его корректность вручную.

Шаг 2.2 Удаление временных таблиц.

Ответ
Если успех progress
Временные таблицы удалены
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 0

Работать напрямую с файлом XML (тем более, если он большой) неудобно и неэффективно. Поэтому все данные прочитываются во временную таблицу b_xml_tree. На этом подготовительном шаге таблица b_xml_tree, если она существует, удаляется.

Шаг 2.3 Создание временных таблиц.

Ответ
Если успех progress
Временные таблицы созданы
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 1

Таблица b_xml_tree создается. Если объявлена PHP константа BX_XML_CREATE_INDEXES_IMMEDIATELY, таблица сразу же индексируется. В конце этого шага Битрикс испускает событие OnBeforeCatalogImport1C.
Возможные ошибки

Текст ошибки Что делать
Ошибка создания временных таблиц Проверить права и подключение СУБД.

Шаг 2.4 Загрузка файла во временную таблицу (повторяющийся).

Ответ
Если файл читается progress
Обработано <число>% файла
Если файл прочитан progress
Файл импорта прочитан
Если ошибка failure
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 2

Битрикс шаг за шагом начинает читать переданный из 1С файл, добавляя записи в таблицу b_xml_tree. Чтобы избежать проблем с временем исполнения, процесс происходит пошагово. Управление продолжительностью шага происходит на странице «Интеграция с 1С» в панели управления сайтом.
Возможные ошибки

Текст ошибки Что делать
Ошибка открытия файла импорта Проверить доступ к файлу

Шаг 2.5 Индексация временных таблиц.

Ответ
Если успех progress
Временные таблицы проиндексированы
Если ошибка failure
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 3

Для повышения скорости работы импорта таблица b_xml_tree индексируется после прочтения файла.
Возможные ошибки

Текст ошибки Что делать
Ошибка создания индекса для временных таблиц Возможная причина: проблемы с СУБД, правами в ней или подключением.

Шаг 2.6 Импорт метаданных.

Ответ
Если успех progress
Метаданные импортированы успешно
Если ошибка failure
Ошибка импорта метаданных
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 4

На этом шаге создаются или обновляются следующие данные:

  1. Инфоблоки товаров и SKU
  2. Служебные свойства каталога (с префиксом CML2_: CML2_BAR_CODE, CML2_ARTICLE, CML2_ATTRIBUTES…)
  3. Торговый каталог
  4. Свойства инфоблоков
  5. UF-поля разделов инфоблоков
  6. Типы цен
  7. Склады
  8. Единицы измерения

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

Возможные ошибки

Текст ошибки Что делать
Отсутствует модуль «Торговый каталог». Импорт торговых предложений и цен невозможен Пояснения не требуются
Ошибка создания типа информационных блоков После этого сообщения следует текст ошибки API, который пояснит причину ошибки.
Ошибка добавления новой единицы измерения (код единицы: <код>) Текст ошибки Битрикс не выведет, необходимо разобрать XML файл самостоятельно и найти причину ошибки.
Количество импортированных складов превышает разрешенное для данной редакции Пояснения не требуются
Ошибка импорта пользовательского свойства (xml_id: <код>) Проверить параметры пользовательского свойства
Название справочника должно начинаться с буквы и состоять только из латинских букв и цифр. Пояснения не требуются
В выгрузке настроены цены с одинаковым названием. Продолжение обмена невозможно. Пояснения не требуются
В редакции Малый Бизнес нет возможности иметь более одного типа цены. Настройте выгрузку из 1С или перейдите на другую редакцию БУС. Пояснения не требуются
Текст ошибки Что делать
Ошибка создания индекса для временных таблиц Возможная причина: проблемы с СУБД, правами в ней или подключением.

Шаг 2.7 Импорт разделов каталога.

Ответ
Если успех progress
Группы импортированы
Если ошибка failure
Ошибка импорта метаданных
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 5

На этом шаге в инфоблоке создаются и обновляются все разделы каталога, которые были в XML файле. Сопоставление разделов из XML-файла и в БД происходит по XML_ID. Если на сайте нет раздела с XML_ID из файла, он создается. Если есть, то выполняется сравнение полей из XML файла с аналогичными полями в БД.

2. 2-8.jpg - ITsale

Если изменения нет, то Битрикс только обновляет поле TIMESTAMP_X и пропускает раздел. Если изменения есть — происходит полноценное обновление. Это происходит независимо от настроек сайта. Для экономии ресурсов сервера добавление разделов происходит без пересчета дерева (речь о полях LEFT_MARGIN и RIGHT_MARGIN).
Возможные ошибки Так как импорт разделов не пошаговый, при обмене большом дереве разделов на сайте может возникать ошибка превышения времени исполнения. Решения три.

  1. Увеличить время исполнения на странице «Интеграция с 1С» и в настройках сервера (nginx).
  2. Доработать 1С, чтобы ошибки на этом этапе игнорировались пока не будет получен ответ «progress».
  3. Повторить всю выгрузку несколько раз.

Объясним, как поможет повтор шага или всей выгрузки. Допустим, в XML-файле и на сайте 20001 раздел. Пусть за один проход Битрикс успевает импортировать только 10000 разделов.

№ Обмена/шага Пропущено т.к. нет изменений Обработано Ответ
1 0 10000 Ошибка сервера
2 10000 10000 Ошибка сервера
3 20000 1 progress
Группы импортированы

Битрикс каждый раз обрабатывает столько разделов, сколько успевает. При повторении выгрузки первые 10000 разделов он пропустит (обновит только TIMESTAMP_X) и обновит еще 10000 разделов, пока не наступил тайм-аут. И только на 3-ей выгрузке из 1С шаг будет завершен корректно.

Шаг 2.8 Пересчет дерева разделов.

Ответ
Если успех progress
Деактивация/удаление групп завершено
Если ошибка failure
Ошибка импорта метаданных
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 6

На этом шаге Битрикс выполняет две задачи:

  1. Удаление/деактивация разделов (в старых версиях модуля обмена в 1С)
  2. Перестройка дерева разделов

В старых версиях 1С отличить полную выгрузку от частичной просто: при частичной в узле «Классификатор» был атрибут СодержитТолькоИзменения=»true», при полной его не было. В 2019 году 1С всегда выгружает этот атрибут. Если этого атрибута нет, Битрикс мог (и до сих пор может, просто этот код не используется) удалить, деактивировать старые разделы (или пропустить их). На выбор влиял параметр на странице «Интеграция с 1С». Сейчас эта настройка уже ни на что не влияет и ни деактивации, ни удаления не происходит.
Также на этом шаге пересчитываются служебные поля LEFT_MARGIN и RIGHT_MARGIN всех разделов.

3. 2-9.jpg - ITsale

Шаг 2.9 Импорт товаров (повторяющийся).

Ответ
Если идет процесс импорта progress
Обработано <число> из <число> элементов
Если импорт завершен progress
Загрузка элементов завершена
Если ошибка failure
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 7
DONE Ассоциативный массив, счетчик обработанных товаров и всех товаров в файле

На этом шаге в инфоблоке создаются и обновляются все товары, которые были в XML файле. Сопоставление товаров в файле товарам на сайте происходит по полю XML_ID.
Если на сайте нет товара с XML_ID из файла, он создается. Если есть, то выполняется сравнение полей из XML файла с аналогичными полями в БД.
Если изменения нет, и задан параметр «Использовать контрольные суммы элементов для оптимизации обновления каталога», Битрикс только обновляет поле TIMESTAMP_X и пропускает товар. Иначе происходит полноценное обновление.
При импорте товара заполняется поле TMP_ID. Значение для этого поля хранится в узле <НомерВерсии>. Если узла нет — Битрикс вычисляет контрольную сумму от всей информации о товаре из XML файла.
Возможные ошибки

Текст ошибки Что делать
Временная таблица не существует Ошибка возникает если с сайтом работает несколько 1С или одна 1С присылает несколько запросов одновременно. В одном потоке выполняется шаг 4.9, а другой запустил шаг 4.2.

Шаг 2.10 Деактивация/удаление товаров (повторяющийся).

Ответ
Если идет обработка progress
Обработано <число> из <число> элементов
Если обработка завершена progress
Деактивация/Удаление элементов завершены
Если ошибка failure
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 8
DONE Ассоциативный массив, счетчик обработанных товаров и всех товаров в файле

На этом шаге раньше (как и на шаге 2.8 Пересчет дерева разделов) Битрикс проводил чистку товаров. Чистка товаров происходила только если в узле “Классификатор” XML файла не было пометки СодержитТолькоИзменения=»true» (старый формат выгрузки). Есть аналогичная настройка для выбора, что делать с товарами.

4. 2-11.jpg - ITsale

В 2019 году на этом шаге ничего не происходит.

Шаг 2.11 Завершение импорта

Ответ
Если успех success
Импорт успешно завершен
Если ошибка failure
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 9

Служебный шаг. Обработки данных нет, только испускается событие OnSuccessCatalogImport1C.

Шаг 3. Деактивация старых данных.

Запрос
GET-параметры type=<тип обмена>
mode=deactivate
sessid=<ID сессии>
timestamp=<время на сервере>
Cookie <имя Cookie>=<значение Cookie>
Ответ
Если успех success
Деактивация элементов завершена
Если ошибка failure
Ошибка деактивации элементов

На этом шаге в 2019 году Битрикс деактивирует все товары и разделы каталога, не затронутые в текущей сессии. Для этого время последнего изменения сравнивается с timestamp, который передает 1С — время начала текущей сессии, полученное на шаге авторизации.
Напомним, что эти настройки в панели управления сайта сейчас ни на что не влияют (всегда происходит деактивация):

5. 3.jpg - ITsale

Этот шаг будет выполнен, только если современная 1С делает полную выгрузку. Для выгрузки изменений и в старых версиях 1С этого шага нет.

Шаг 4. Завершение импорта.

Запрос
GET-параметры type=<тип обмена>
mode=complete
sessid=<ID сессии>
timestamp=<время на сервере>
Cookie <имя Cookie>=<значение Cookie>
Ответ
Если успех success
Завершение процедуры импорта
Если ошибка failure
<текст ошибки>

Служебный шаг. Обработки данных нет, только испускается недокументированное событие модуля catalog OnCompleteCatalogImport1C. Аргументы обработчика аналогичны обработчикам события OnSuccessCatalogImport1C, возвращаемого значения нет.

В статье описываем процедуру интеграции 1С, отвечаем на общие вопросы и даем практические советы программистам, которые будут работать с 1С.

1С — это семейство продуктов. Они различаются по версии платформы (7, 8.0, 8.1) и конфигурации (УТ, УПП, Бухгалтерия, ЗУП и др.). А интеграция — это передача данных между двумя системами. Интеграция характеризуется:

  • направлениями передачи —
    • система A → (или ←) система Б (односторонняя выгрузка/загрузка);
    • система A ↔ система Б (двусторонний обмен);
  • частотой обмена —
    • периодический обмен;
    • обмен в режиме реального времени;
  • полнотой обмена —
    • всегда полный;
    • обмен только изменениями.

Чаще всего 1С интегрируются с корпоративными сайтами, различными сервисами или интернет-магазинами на разных cms.

Какие сайты можно интегрировать с 1С

Чаще предприятия заказывают следующие варианты интеграций.

Интеграция интернет-магазина с 1С:УТ — выгрузка каталога номенклатуры в магазин и двусторонний обмен заказами в режиме реального времени.

Интеграция Битрикс24 с 1С:УТ и 1С:Бухгалтерией — выгрузка заказов, счетов и контрагентов из 1С в Битрикс24.

Трехсторонняя интеграция 1С, Битрикс24 и интернет-магазина — полная интеграция 1С одновременно и с магазином, и с Битрикс24. Для реализации этого сценария компания 1С-Битрикс выпустила версию «Битрикс24: Интернет-магазин». В нем магазин и CRM будут объединены, и интеграция снова станет двухсторонней.

Интеграция 1С с личным кабинетом — это или выгрузка контрагентов/заказов/персональных цен из 1С на сайт, или предоставление частичного доступа к данным внутри 1С. Например, проверка/активация карт лояльности, уточнение статуса заявки.

Интеграция абстрактного сайта с абстрактной 1С — это вариант, если ни один из вышеперечисленных не подошел.

Стандартные возможности обмена 1С и Битрикса

«Из коробки», когда не нужна ручная доработка, работают четыре обмена.

  1. Товары из 1С на сайт (тип «catalog»).
  2. Справочники из 1С на сайт (тип «reference»).
  3. Пользователей/контрагентов из 1С на сайт (тип «sale»).
  4. Заказы (тип «sale»): из 1С на сайт и наоборот.

Протокол

Все взаимодействия между 1С и Битриксом проводятся по HTTP, синхронно. 1С, как и браузер, «открывает» специальную страницу, отправляет данные (методами POST и GET) и получает текстовый ответ. Существует вариант имитировать выгрузку из 1С браузером.

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

Протокол синхронный. Это значит, что 1С отправляет следующий запрос на сайт только после получения ответа на предыдущий или ошибки таймаута.

Формат

Данные передаются в двух форматах.

Формат 1. Текстовый, для ответов сайта на запросы из 1С. Сайт выводит в первой строке ответа:

  • «success», если завершил некую процедуру;
  • «progress», если продолжает ее выполнять;
  • «error» или «failure», если была ошибка.

В зависимости от каждого конкретного запроса в последующих строках могут быть дополнительные данные.

Формат 2. CommerceML 2. Он основан на XML. Подходит для передачи товаров, предложений, цен, складов, заказов и контрагентов.

Алгоритм

Подготовка к обмену

Протокол обмена — синхронный HTTP. Перечисленные типы обмена подразумевают следование строгому алгоритму запросов. Первые два шага одинаковы для любого типа обмена. Начиная с третьего, они будут различаться.

Авторизация

Запрос
GET-параметры: type=<тип обмена>
mode=checkauth
Basic access логин: Логин сайта из настроек 1С
Basic access пароль: Пароль сайта из настроек 1С
Ответ
Если успех: success
<имя Cookie авторизации>
<значение Cookie авторизации>
sessid=<ID сессии>
<параметр1>=<значение1>
<параметр2>=<значение2> …
Если ошибка: failure <текст ошибки>

Любой обмен начинается с авторизации 1С на сайте методом Basic access. В случае успеха сайт выводит:

  • «success»;
  • имя и значение Cookie (это он будет проверять во всех последующих запросах);
  • id сессии и прочие параметры (зависят от type — типа обмена).

Возможные ошибки

Текст ошибки Что делать
Ошибка авторизации. Неверное имя пользователя или пароль. Проверить логин и пароль в Битрикс.
У Вас нет прав для импорта каталога. Проверьте настройки компонента импорта. Проверить права пользователя в Битрикс.
Ошибка проверки источника запроса. Обновите модуль обмена или отключите проверку в настройках компонента. Обновить модуль обмена в 1С или выполнить php-код на сайте:
COption::SetOptionString(«catalog», «DEFAULT_SKIP_SOURCE_CHECK», «Y»); COption::SetOptionString(«sale», «secure_1c_exchange», «N»).
Модуль Информационных блоков не установлен. Проверить модуль iblock в Битрикс. Должен быть скачан и установлен.
Включена смена идентификатора сессий. В файле подключения компонента обмена, до подключения пролога, определите константу BX_SESSION_ID_CHANGE: define(‘BX_SESSION_ID_CHANGE’, false). Выполнить предложенное действие.
Время на сервере базы данных отличается от времени на веб-сервере больше, чем на 10 минут. Вероятно, неправильно настроены временные зоны. Выполните настройку и повторите обмен. Проверить настройку часовых поясов на веб-сервере и на сервере БД.

Запрос настроек сайта

Запрос
GET-параметры: type=<тип обмена>
mode=init
sessid=<ID сессии>
Cookie: <имя Cookie авторизации>=<значение Cookie авторизации>
Ответ
Если успех: zip=<yes|no>
file_limit=<число>

На этом шаге 1С узнает важные для обмена настройки сайта. Управление этими параметрами на сайте происходит на странице «Интеграция с 1С» в панели управления сайтом.

Параметр Назначение Возможные значения
zip Сайт умеет распаковывать zip-архивы. Если yes — 1С будет загружать файлы обмена в архивах, что сильно экономит время и трафик. yes no
file_limit Максимально допустимый размер файла в байтах для передачи за один HTTP-запрос. Если системе 1С понадобится передать файл большего размера, они будут разбиты на несколько частей. целое число >= 0

Получив эти параметры, 1С сформирует данные для передачи на сайт. Если «zip=yes», то все файлы будут переданы как zip-архив. Или каждый выгружается по отдельности. Желательно всегда включать zip.

Возможные ошибки

Текст ошибки Что делать
Ошибка инициализации временного каталога При создании каталога для хранения файлов выгрузки произошла ошибка. Проверить права и путь для хранения файлов, или закончилось место на диске. По умолчанию сайт складывает файлы в папку /upload/1c_catalog/.

Обмен товарами (1С -> Битрикс)

Этот обмен (type=catalog) используется для создания и обновления на сайте сущностей:

  • инфоблок товаров;
  • UF-поля разделов в этом инфоблоке;
  • свойства элементов в этом инфоблоке;
  • инфоблок SKU;
  • типы цен;
  • склады;
  • разделы в инфоблоке товаров;
  • элементы в инфоблоке товаров (товары);
  • цены товаров;
  • наличие товаров по складам.

При обмене товарами 1С формирует XML-файлы, передает их на сайт и контролирует их обработку сайтом. 1С может передать 4 вида файлов с префиксами:

  • import_ — разделы каталога, товары, свойства товаров;
  • offers_ — SKU;
  • prices_ — цены товаров и предложений;
  • rests_ — остатки товаров и предложений по складам.

На шаге авторизации в случае успеха сервер вернет дополнительный параметр timestamp (текущее время). 1С сохранит timestamp и передаст на сайт на последнем шаге обмена товарами.

Шаг 1. Передача файла (повторяющийся)

Запрос
GET-параметры: type=catalog
mode=file
sessid=<ID сессии>
filename=<имя файла>
POST: Содержимое файла в виде строки
Cookie: <имя Cookie>=<значение Cookie>
Ответ
Если успех: success
Если ошибка: failure
<текст ошибки>

Шаг может выполняться несколько раз. Каждый файл выгружается частями не более file_limit байт в бинарном виде через сырой POST-запрос. Сайт создает файл, если его нет. Имя файла берет из GET-параметра filename и дописывает в него переданный контент. Так продолжается до тех пор, пока 1С не передаст все части этого файла.

Возможные ошибки

Текст ошибки Что делать
Ошибка чтения HTTP данных Проверить сетевое соединение между сайтом и 1С.
Ошибка открытия файла <имя файла> для записи Проверить права на файл и папку файла у пользователя apache, под которым работает Битрикс.
Ошибка записи в файл <имя файла> Проверить права на файл и папку файла у пользователя apache, под которым работает Битрикс.

Шаг 2. Основной

Запрос
GET-параметры: type=<тип обмена>
mode=import
sessid=<ID сессии>
filename=<имя файла>
Cookie: <имя Cookie>=<значение Cookie>
Ответ
Если импорт завершен: success
Если импорт продолжается: progress
<текущий статус>
Если ошибка: failure
<текст ошибки>

На этом этапе файл уже целиком загружен на сайт, и Битрикс готов его обработать. Обработка может состоять из 11 более мелких операций, о которых 1С ничего не знает. Поэтому в параметре GET приходит mode=import (один и тот же запрос!), но сайт выполняет совершенно разные операции.

Текущий прогресс Битрикс сохраняет в сессии в переменной $_SESSION[BX_CML2_IMPORT][NS]. Например, узел STEP в этом массиве отвечает как раз за номер внутренней операции импорта.

Шаг 2.1 Распаковка архива (повторяющийся, необязательный)

Ответ
Если файл распакован: progress Распаковка архива завершена.
Если файл распаковывается: progress
Идет распаковка архива.
Если ошибка: failure
<текст ошибки>

Шаг исполняется, только если система 1С передала файл в формате ZIP. Распаковка происходит в той же директории, где лежат все файлы обмена товарами. По умолчанию это /upload/1c_catalog/. Эта операция не нумеруется внутри Битрикса. Значение STEP в сессии не изменяется).

Возможные ошибки

Текст ошибки Что делать
Ошибка распаковки архива Проверьте работоспособность функции PHP zip_open и расширение Zip. Если все корректно — скачайте архив с сайта и проверьте его корректность вручную.

Шаг 2.2 Удаление временных таблиц

Ответ
Если успех: progress
Временные таблицы удалены.
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 0

Работать напрямую с файлом XML неудобно и неэффективно. Поэтому все данные вносятся во временную таблицу b_xml_tree. На этом подготовительном шаге таблица b_xml_tree, если она существует, удаляется.

Шаг 2.3 Создание временных таблиц

Ответ
Если успех: progress
Временные таблицы созданы
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 1

Таблица b_xml_tree создается. Если объявлена PHP константа BX_XML_CREATE_INDEXES_IMMEDIATELY, таблица сразу же индексируется. В конце этого шага Битрикс испускает событие OnBeforeCatalogImport1C.

Возможные ошибки

Текст ошибки Что делать
Ошибка создания временных таблиц Проверить права и подключение СУБД

Шаг 2.4 Загрузка файла во временную таблицу (повторяющийся)

Ответ
Если файл читается: progress
Обработано <число>% файла.
Если файл прочитан: progress
Файл импорта прочитан.
Если ошибка: failure
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 2

Битрикс шаг за шагом начинает читать переданный из 1С файл, добавляя записи в таблицу b_xml_tree. Чтобы избежать проблем со временем исполнения, процесс происходит пошагово. Управление продолжительностью шага происходит на странице «Интеграция с 1С» в панели управления сайтом.

Возможные ошибки

Текст ошибки Что делать
Ошибка открытия файла импорта. Проверить доступ к файлу.

Шаг 2.5 Индексация временных таблиц

Ответ
Если успех: progress
Временные таблицы проиндексированы.
Если ошибка: failure
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 3

Для повышения скорости работы импорта таблица b_xml_tree индексируется после прочтения файла.

Возможные ошибки

Текст ошибки Что делать
Ошибка создания индекса для временных таблиц Возможная причина: проблемы с СУБД, правами в ней или подключением.

Шаг 2.6 Импорт метаданных

Ответ
Если успех: progress
Метаданные импортированы успешно.
Если ошибка: failure
Ошибка импорта метаданных
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 4

На этом шаге создаются или обновляются следующие данные:

  1. Инфоблоки товаров и SKU.
  2. Служебные свойства каталога (с префиксом CML2_: CML2_BAR_CODE, CML2_ARTICLE, CML2_ATTRIBUTES…).
  3. Торговый каталог.
  4. Свойства инфоблоков.
  5. UF-поля разделов инфоблоков.
  6. Типы цен.
  7. Склады.
  8. Единицы измерения.

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

Возможные ошибки

Текст ошибки Что делать
Отсутствует модуль «Торговый каталог». Импорт торговых предложений и цен невозможен. Пояснения не требуются.
Ошибка создания типа информационных блоков. После этого сообщения следует текст ошибки API, который пояснит причину ошибки.
Ошибка добавления новой единицы измерения (код единицы: <код>). Текст ошибки Битрикс не выведет, необходимо разобрать XML- файл самостоятельно и найти причину ошибки.
Количество импортированных складов превышает разрешенное для данной редакции. Пояснения не требуются.
Ошибка импорта пользовательского свойства (xml_id: <код>). Проверить параметры пользовательского свойства.
Название справочника должно начинаться с буквы и состоять только из латинских букв и цифр. Пояснения не требуются.
В выгрузке настроены цены с одинаковым названием. Продолжение обмена невозможно. Пояснения не требуются.
В редакции «Малый Бизнес» нет возможности иметь более одного типа цены. Настройте выгрузку из 1С или перейдите на другую редакцию БУС. Пояснения не требуются.

Шаг 2.7 Импорт разделов каталога

Ответ
Если успех: progress
Группы импортированы
Если ошибка: failure
Ошибка импорта метаданных
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 5

На этом шаге в инфоблоке создаются и обновляются все разделы каталога, которые были в XML- файле. Сопоставление разделов из XML-файла и в БД происходит по XML_ID.

Если на сайте нет раздела с XML_ID из файла, он создается. Если есть, то выполняется сравнение полей из XML- файла с аналогичными полями в БД. Если изменения нет, то Битрикс только обновляет поле TIMESTAMP_X и пропускает раздел. Если изменения есть — происходит полноценное обновление. Это случается независимо от настроек сайта.

Для экономии ресурсов сервера добавление разделов происходит без пересчета дерева (речь о полях LEFT_MARGIN и RIGHT_MARGIN).

Возможные ошибки

Так как импорт разделов не пошаговый, при обмене большого дерева разделов на сайте может возникать ошибка превышения времени исполнения. Решения три.

  1. Увеличить время исполнения на странице «Интеграция с 1С» и в настройках сервера (nginx).
  2. Доработать 1С, чтобы ошибки на этом этапе игнорировались, пока не будет получен ответ «progress».
  3. Повторить всю выгрузку несколько раз.

Объясним, как поможет повтор шага или всей выгрузки. Допустим, в XML-файле и на сайте — 20001 раздел. Пусть за один проход Битрикс успевает импортировать только 10000 разделов.

№ Обмена/шага Пропущено т.к. нет изменений Обработано Ответ
1 0 10000 Ошибка сервера.
2 10000 10000 Ошибка сервера.
3 20000 1 progress Группы импортированы.

Битрикс каждый раз обрабатывает столько разделов, сколько успевает. При повторении выгрузки первые 10000 разделов он пропустит (обновит только TIMESTAMP_X) и обновит еще 10000 разделов, пока не наступил тайм-аут. И только на 3-ей выгрузке из 1С шаг будет завершен корректно.

Шаг 2.8 Пересчет дерева разделов

Ответ
Если успех: progress
Деактивация/удаление групп завершено
Если ошибка: failure
Ошибка импорта метаданных
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 6

На этом шаге Битрикс выполняет две задачи.

  1. Удаление/деактивация разделов (в старых версиях модуля обмена в 1С).
  2. Перестройка дерева разделов.

В старых версиях 1С отличить полную выгрузку от частичной просто: при частичной в узле «Классификатор» был атрибут СодержитТолькоИзменения=»true», при полной его не было.

1С выгружает этот атрибут. Если этого атрибута нет, Битрикс мог (и до сих пор может, просто этот код не используется) удалить, деактивировать старые разделы (или пропустить их). На выбор влиял параметр на странице «Интеграция с 1С». Сейчас эта настройка уже ни на что не влияет, и ни деактивации, ни удаления не происходит.

Также на этом шаге пересчитываются служебные поля LEFT_MARGIN и RIGHT_MARGIN всех разделов.

Шаг 2.9 Импорт товаров (повторяющийся)

Ответ
Если идет процесс импорта: progress
Обработано <число> из <число> элементов
Если импорт завершен: progress
Загрузка элементов завершена
Если ошибка: failure
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 7
DONE Ассоциативный массив, счетчик обработанных товаров и всех товаров в файле

На этом шаге в инфоблоке создаются и обновляются все товары, которые были в XML-файле. Сопоставление товаров в файле товарам на сайте происходит по полю XML_ID.

Если на сайте нет товара с XML_ID из файла, он создается. Если есть, то выполняется сравнение полей из XML-файла с аналогичными полями в БД.

Если изменения нет, и задан параметр «Использовать контрольные суммы элементов для оптимизации обновления каталога», Битрикс только обновляет поле TIMESTAMP_X и пропускает товар. Иначе происходит полноценное обновление.

При импорте товара заполняется поле TMP_ID. Значение для этого поля хранится в узле <НомерВерсии>. Если узла нет — Битрикс вычисляет контрольную сумму от всей информации о товаре из XML-файла.

Возможные ошибки

Текст ошибки Что делать
Временная таблица не существует Ошибка возникает, если с сайтом работает несколько 1С или одна 1С присылает несколько запросов одновременно. В одном потоке выполняется шаг 4.9, а другой запустил шаг 4.2.

Шаг 2.10 Деактивация/удаление товаров (повторяющийся)

Ответ
Если идет обработка: progress
Обработано <число> из <число> элементов.
Если обработка завершена: progress
Деактивация/Удаление элементов завершены.
Если ошибка: failure
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 8
DONE Ассоциативный массив, счетчик обработанных товаров и всех товаров в файле.

На этом шаге Битрикс деактивирует все товары и разделы каталога, не затронутые в текущей сессии. Для этого время последнего изменения сравнивается с timestamp, который передает 1С — время начала текущей сессии, полученное на шаге авторизации.

Напомним, что эти настройки в панели управления сайта сейчас ни на что не влияют.

Этот шаг будет выполнен, только если современная 1С делает полную выгрузку. Для выгрузки изменений и в старых версиях 1С этого шага нет.

Шаг 3. Завершение импорта

Запрос
GET-параметры: type=<тип обмена>
mode=complete
sessid=<ID сессии>
Cookie: <имя Cookie>=<значение Cookie>
Ответ
Если успех: success
Завершение процедуры импорта.
Если ошибка: failure
<текст ошибки>

Служебный шаг. Обработки данных нет, только испускается недокументированное событие модуля catalog OnCompleteCatalogImport1C. Аргументы обработчика аналогичны обработчикам события OnSuccessCatalogImport1C, возвращаемого значения нет.

Обмен справочниками (1С -> Битрикс)

Данный тип обмена (type=reference) используется для создания и обновления на сайте HL-блоков. Этот тип намного короче, чем обмен товарами, и повторяет многие из его шагов.

Часто обмен справочниками — простой и быстрый способ расширить стандартные функции обмена.

Шаг 1. Передача файла (повторяющийся)

Этот шаг, аналогичный шагу обмена товарами, отличается только mode, в данном типе обмена mode=reference.

Шаг 2. Основной

Запрос
GET-параметры: type=reference
mode=import
sessid=<ID сессии>
Cookie: <имя Cookie>=<значение Cookie>

Шаг 2.1 Распаковка архива (повторяющийся, необязательный)

Аналогичный шаг обмена товаров.

Шаг 2.2 Подготовка справочника.

Ответ
Если успех: progress
Найден или создан справочник. Код справочника: <ID>
Если ошибка: failure
<текст ошибки>

На этом шаге Битрикс создает HL-блок (если не существует) и все UF-поля. В начале шага испускается событие модуля catalog OnBeforeCatalogImportHL. Событие недокументированное, в обработчики передаются массив параметров компонента и путь к XML-файлу. Обработчик может вызвать ошибку и вернуть произвольное сообщение.

Важно знать следующие особенности импорта справочников:

  • 1С не может удалить справочник или поле, только создать;
  • 1С может создать только поля следующих типов — Строка, Булево, Дата, Число;
  • все поля, создаваемые 1С, будут одиночными, необязательными, скрытыми в фильтре, показанными и редактируемыми в таблице;
  • Битрикс автоматически создает поля — UF_NAME, UF_XML_ID, UF_VERSION, UF_DESCRIPTION.

Возможные ошибки

Текст ошибки Что делать
Ошибка при создании поля в справочнике <Текст ошибки> Изучить текст и исправить в 1С или на сайте.
Ошибка при создании справочника <Текст ошибки> Изучить текст и исправить в 1С или на сайте.
Ошибка разбора XML. Код ошибки: <Код ошибки> Расшифровать код и исправить в 1С или на сайте.

Расшифровка кодов ошибок

Код Объяснение
10 Неизвестная ошибка парсинга XML-файла.
20 Невалидный XML-файл.
110 В XML-файле отсутствует или пустой узел <Ид> справочника.
120 В XML-файле отсутствует или пустой узел <Наименование> справочника.
210 Во время импорта UF-полей не был найден higloadblock.
220 В XML-файле отсутствует или пустой узел <Ид> в <Реквизит>.
230 В XML-файле отсутствует или пустой узел <Наименование> в <Реквизит>.
240 Неизвестный <ТипЗначений> в узле <Реквизит> (допустимы только: Строка, Булево, Дата, Число).
250 Неизвестная ошибка при создании UF-поля highload-блока.
310 Во время создания элементов справочника не был найден higloadblock.
320 В XML-файле отсутствует или пустой узел <Ид> в <ЭлементСправочника>.
330 В XML-файле отсутствует или пустой узел <ЗначениеРеквизита> в <ЗначенияРеквизитов> в <ЭлементСправочника>.

Шаг 2.3 Импорт элементов (повторяющийся)

Ответ
Если импорт завершен: success
Импорт успешно завершен.
Если импорт в процессе: progress
Импортировано элементов: <число>
Если ошибка: failure
<текст ошибки>

На этом шаге Битрикс импортирует все элементы HL-блока.

Если выгрузка была полной, Битрикс удаляет все элементы HL-блока, у которых значение поля UF_VERSION не начинается с <ID текущей сессии> + «#»

В конце шага Битрикс испускает событие модуля catalog OnSuccessCatalogImportHL. Аргументы — массив параметров компонента и путь к файлу.

Возможные ошибки аналогичны ошибкам в предыдущем шаге.

Формат файлов

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

  • Формат файла обмена товарами.
  • Формат файла обмена предложениями.
  • Формат файла обмена ценами товаров и предложений.
  • Формат файла обмена остатками товаров и предложений.
  • Формат файла обмена справочниками.

Заключение

Интеграция с 1С часто — самая сложная задача в процессе разработки. Хорошее понимание процессов необходимо для улучшения навыков любого специалиста и работы над серьезными проектами.

Понравилась статья? Поделить с друзьями:
  • Failure of the connection ошибка на пежо 308
  • Failure during update process fifa 23 ошибка
  • Failsafe prog bmw x5 e53 расшифровка ошибки
  • Failed to start the virtual machine ошибка
  • Failed to start raise network interfaces ошибка