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

Здравствуйте.На протяжении недели при  попытке выгрузки каталога товаров, выдается ошибка:Код 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...
 

Пользователь 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, если доступно: — ставим галочку

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

Спасибо.

Интеграция сайта на CMS Bitrix с 1С. Обмен товарами

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

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

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

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

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

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

schema1.jpg

Шаг 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

Если изменения нет, то Битрикс только обновляет поле 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

Шаг 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

В 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

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

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

Запрос
GET-параметры type=<тип обмена>
mode=complete
sessid=<ID сессии>
timestamp=<время на сервере>
Cookie <имя Cookie>=<значение Cookie>
Ответ
Если успех success
Завершение процедуры импорта
Если ошибка failure
<текст ошибки>

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

У вас остались вопросы? Задайте их нашим специалистам!


Это штатная функция, которая уже давно присутствует начиная с версии программных продуктов «1С:Предприятие 8.1», редакция Управление торговлей (версия 10.3.4) и «1С-Битрикс: Управление сайтом» версии 6.5, в редакциях Малый бизнес, Бизнес и Большой бизнес.

Торговля в интернете не имеет никаких отличий от обычного ритейла в плане ведения бухгалтерской отчетности. В связи с этим возникает вопрос согласования продаж через интернет-магазин и проводки их по системе учета «1С». Для «1С-Битрикс: Управление сайтом» интеграция с «1С» – не проблема. Это штатная функция, которая уже давно присутствует начиная с версии продуктов «1С:Предприятие 8.1», редакция Управление торговлей (версия 10.3.4) и «1С-Битрикс: Управление сайтом» версии 6.5, в редакциях Малый бизнес, Бизнес и Большой бизнес.

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

Типовые проблемы можно сгруппировать примерно таким образом:

  • Ошибки с производительностью на стороне сервера
  • Ошибки при работе с файлами данных
  • Проблемы авторизации
  • Ошибки MySQL
  • Логические ошибки

Начнем по порядку.

Ошибки на стороне сервера

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

Наиболее частые проявления этих ошибок:

  • Ошибка работы с Интернет, выводится сообщение: failed sending data to the peer (no headers, no data)‏;
  • Получен пустой ответ сервера;
  • Ошибки 502, 500 или ошибка 404 уже в процессе обмена;
  • Ошибка нехватки памяти, например выводится сообщение: Fatal error : Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401…)‏
  • Не удалось получить текущее состояние процесса обмена. Данные обмена отправлены, но не загружены.

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

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

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

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

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

Если указанные меры не помогли или указанные параметры невозможно изменить, то, в крайнем случае, можно сделать следующее:

Наконец, можно уменьшить объем выгрузки товаров за 1 раз. Настройте фильтр по номенклатуре на стороне «1С»:

  • Запустите мастер настройки обмена данными (Сервисы > Обмен данными с WEB-сайтом > Настроить обмен данными с WEB-сайтом)
  • На первом шаге мастера выберите Изменить существующую настройку обмена данными и нажмите кнопку Далее.
  • Выберите настройку для редактирования и дважды кликните по ней.
  • В закладке Выгрузка товаров (Или Обмен заказами, в зависимости от ситуации) измените значения фильтра.
  • Сохраните изменения и повторите синхронизацию.

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

Ошибки при работе с файлами вызваны в основном неправильной настройкой прав доступа к файлам. Типовые сообщения при этом выглядят следующим образом: «Ошибка открытия файла» и «Ошибка записи файла». Способы решения проблемы, естественно, — настройка прав доступа на уровне операционной системы.

Обратим внимание на фразу «на уровне операционной системы». Права на уровне «1С-Битрикс: Управление сайтом», как правило, выставлены всегда правильно. Тем не менее, проверить права на осуществление импорта/экспорта не помешает. Делается это на странице Магазин > Настройки магазина > Интеграция с 1С.

Наиболее вероятные причины:

  • У пользователя, от которого ведется обмен данными, нет прав на запись в папку /upload .
  • Файл создается с правами, которые не позволяют чтение файла.
  • Файл также может быть передан на сервер в zip-архиве, но по определённым причинам не удалось распаковать архив, например, некорректно работает функция zip_open на сервере.

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

Выставление корректных прав на создаваемые файлы в рамках «1С-Битрикс: Управление сайтом» производится следующим образом:

  • Откройте для редактирования файл dbconn.php из папки /bitrix/ php_interface.
  • В строке define(«BX_FILE_PERMISSIONS», 0644); установите значения, которые порекомендовал хостер вместо 0644 выставленных по умолчанию.

Точно также нужно проверить выставить права на создаваемые папки. Только это делается уже в строке define(«BX_DIR_PERMISSIONS», 0755);.

Вот так выглядит проверка наличия расширения ZIP в настройках PHP:

  • Откройте в браузере страницу http://<ваш_сайт>//bitrix/admin/phpinfo.php. (Либо выполните команду if (exist_function (“zip_open”)) echo “OK”;). В браузере отобразится таблица:

    Таблица свойств PHP
    Таблица свойств PHP

  • В области ZIP посмотрите настройки. Для строки ZIP должно стоять «enabled».

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

Проблемы авторизации

1С не может пройти процедуру аутентификации на сайт и в этой связи выдается ошибка. Вызвано это, как правило, неверной настройкой «1С-Битрикс: Управление сайтом».

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

Например, в файле /bitrix/php_interface/init.php или /bitrix/php_interface/dbconn.php и др.
Таким образом, 1С может получить ответ не «success», а «testsuccess» хотя данный авторизации отправлены корректные.

Другая типичная ошибка состоит в правах доступа на импорт каталога. Авторизация может не производиться, если пользователь, проводящий импорт, не обладает достаточным уровнем прав. Проверить это можно на странице Магазин > Настройки магазина > Интеграция с 1С.

Перейдите на указанную страницу и произведите следующие действия:

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

Но в авторизации могут возникать и особые ошибки. Например, при работе PHP в режиме CGI. Это характерно для сайтов, размещенных на Windows-серверах. Можно это проверить с помощью файла test.php, как мы это делали при проверке свойств ZIP. В свойства сервера Apache в строке Server API в таком случае стоит CGI. Можно попытаться обойти эту проблему, а если не получится, то целесообразно обратиться в техподдержку хостинга.

Для «обхода» проблемы необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite. Выполните следующие действия:

  • В корне сайта в файл .htaccess добавьте строки:

    RewriteEngine on
    RewriteRule .* — [E=REMOTE_USER:%{HTTP:Authorization},L]

  • Закоментируйте следующие строки в файле .htaccess папки bitrix/admin/, которые отключают mod_rewrite:

    #

    # RewriteEngine Off

    #

  • В файл dbconn.php папки bitrix/php_interface/ добавьте строки:

    $remote_user = $_SERVER[«REMOTE_USER»]

    ? $_SERVER[«REMOTE_USER»] : $_SERVER[«REDIRECT_REMOTE_USER»];

    $strTmp = base64_decode(substr($remote_user,6));

    if ($strTmp)

    list($_SERVER[‘PHP_AUTH_USER’], $_SERVER[‘PHP_AUTH_PW’]) = explode(‘:’, $strTmp);

Ошибки MySQL

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

  • Выводится сообщение: Lost connection to MySQL server during query. Ошибка, скорее всего здесь в таймауте.

Возможное решение проблемы: $DB->Query(«SET wait_timeout=28800»);

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

  • Конфликт кодировок. Например, выводится сообщение:

[Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE) for operation ‘=’]

Причиной является то, что таблицы базы данных в одной кодировке, а сам база в другой. В данном случае база в latin1 и новые таблицы создаются в latin1. При выгрузке из «1С» создается временная таблица b_xml_tree в «некорректной» кодировке latin1.

Решение простое и понятное: смена кодировки базы на корректную. Для решения этой проблемы нужно обратиться к хостеру.

Логические ошибки

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

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

Но, бывают ситуации, когда такое сообщение – нормальная ситуация. Это происходит в случае, если в настройках Режима обмена данными с WEB-сайтом установлено: Выгружать только измененные объекты с момента последнего обмена.

Другая ошибка при выгрузке каталога товаров — сообщение: «Не удалось найти вид номенклатуры». Эта ошибка возникает, если в «1С» нет видов «Услуга» и «Товар». Эти типы критичны для процесса обмена данными с сайтом. Решение проблемы – создать в «1С» указанные виды номенклатуры.

Если в процессе обмена возникает ошибка: «Поле объекта не обнаружено», то это означает, что не установлены соответствия для полей заказа в «1С-Битрикс: Управление сайтом». Проверьте настройки, заданные в закладке Экспорт в «1С:Предприятие» страницы Настройки > Настройки продукта > Настройки модулей > Интернет-магазин. Поля «Полное Название» и «Название» критичны для 1С., то есть без задачи соответствия этих полей экспорт выполняться не будет. Обратите внимание, что настройка соответствий производится отдельно для разных типов плательщиков.

Резюме

Экспорт/импорт товаров и заказов в связке «1С-Битрикс: Управление сайтом» и «1С:Предприятие» позволяет решить проблемы синхронизации данных на сайте и в системе учета. Как и в работе любой другой сложной системы, в этой «связке» могут возникать проблемы и неточности. Однако все они решаемы. Купить Битрикс можно у партнеров 1Софт.

Роберт Басыров

Все права защищены. По вопросам использования статьи обращайтесь к администраторам сайта

284 / 283 / 73

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

Сообщений: 1,613

1

19.09.2013, 14:37. Показов 4221. Ответов 13


Добрый день.
Можно ли реализовать выгрузку csv файла в БД bitrix’а?
Не в инфоблок, а именно в mySQL.



0



13207 / 6595 / 1041

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

Сообщений: 15,069

19.09.2013, 14:55

2

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



0



284 / 283 / 73

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

Сообщений: 1,613

19.09.2013, 15:08

 [ТС]

3

Vovan-VE, а чем это может обернуться?
Ну кроме потери непосредственно той таблицы, в которую я импортирую?
Просто проблема такова, что нам необходимо каждый день обновлять инфу, но с 1с интеграция пока не налажена, приходится делать вручную. А вручную, я так понял, нельзя обновить только изменившиеся записи, можно только полностью перезаписать всё, а это долго (порядка 120 000 строк). А в mySQL, я полагаю, будет быстрее.



0



436 / 404 / 111

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

Сообщений: 1,715

19.09.2013, 15:13

4

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

Добавлено через 2 минуты

Цитата
Сообщение от sMockingbird
Посмотреть сообщение

вручную, я так понял, нельзя обновить только изменившиеся записи

я на 1 из сайтов обновляю вручную(тоже не налажено автоматическое обновление) — просто закидываю xml в нужную папку и запускаю скрипт обновления и все



1



13207 / 6595 / 1041

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

Сообщений: 15,069

19.09.2013, 15:14

5

Цитата
Сообщение от sMockingbird
Посмотреть сообщение

а чем это может обернуться?

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

Так же и тут. Это Вам кажется, что там всего-навсего таблицы, и если в них сунуть данные, то всё будет отлично.
А Вы знаете архитектуру этих данных? Что от чего зависит и какие где связи?
Вы же не полезете чинить ядерный реактор, не зная, как он работает.



1



284 / 283 / 73

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

Сообщений: 1,613

19.09.2013, 15:18

 [ТС]

6

tgarl, я думаю стандартный CDatabase::Query меня полностью устроит. У меня вопрос именно как реализовать импорт. Т.е. в инфоблок импортировать — там понятно как. А вот в mysql каким образом?
Ни разу не импортировал в mysql ничего

Добавлено через 1 минуту
Vovan-VE,
Неплохо объяснили, спасибо)

Добавлено через 1 минуту

Цитата
Сообщение от tgarl
Посмотреть сообщение

я на 1 из сайтов обновляю вручную(тоже не налажено автоматическое обновление) — просто закидываю xml в нужную папку и запускаю скрипт обновления и все

Вы в инфоблок импортируете, я так полагаю?
Какой у Вас объёма импорта?
Обновляются только изменённые строки или всё?
И сколько времени это занимает?
Ну и самое главное, что за скрипт у Вас?)



1



tgarl

436 / 404 / 111

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

Сообщений: 1,715

19.09.2013, 15:32

7

Цитата
Сообщение от sMockingbird
Посмотреть сообщение

Ну и самое главное, что за скрипт у Вас?

catalog.import.1c

Цитата
Сообщение от sMockingbird
Посмотреть сообщение

Вы в инфоблок импортируете, я так полагаю

да

Цитата
Сообщение от sMockingbird
Посмотреть сообщение

Какой у Вас объёма импорта

около 5-10000 позиций

Цитата
Сообщение от sMockingbird
Посмотреть сообщение

Обновляются только изменённые строки или всё

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

PHP
1
?type=catalog&mode=import&filename=import.xml

Цитата
Сообщение от sMockingbird
Посмотреть сообщение

И сколько времени это занимает?

ну минут 5-10 потому как за 1 шаг выполнить нельзя и нужно следить и вовремя нажимать F5

есть еще 1 сайт где написан свой импорт из xml — там я поставил счетчик по сколько записывать -и автоматическуюперезагрузку страницы (не знаю как пошагово просто сделать) с передачей через гет сколько строк обработано, но там около 2500 позиций(в основном цена обновляется) — по времени мин 10-15 выходит, но это по причине неоптимизированного кода(при каждом редиректе массив из xml заного формируется после отсекается то что уже обработано и что нет — на каждом шаге лишнее время тратится)



1



284 / 283 / 73

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

Сообщений: 1,613

19.09.2013, 15:37

 [ТС]

8

Цитата
Сообщение от tgarl
Посмотреть сообщение

обновляются те которые в файле есть, те которых нету не обновляются

Я имею в виду, записи перетираются и заново перезаписываются, или, если изменений нет, то эти записи не трогаются?



0



436 / 404 / 111

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

Сообщений: 1,715

19.09.2013, 15:44

9

в catalog.import.1c только измененные записи меняются
в самописном полностью обновляются все значения (чтобы не нагружать скрипт проверкой дополнительной я писал просто обновлять все поля )



0



sMockingbird

284 / 283 / 73

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

Сообщений: 1,613

19.09.2013, 15:45

 [ТС]

10

PHP
1
?type=catalog&mode=import&filename=import.xml

Это куда Вы вбиваете?

catalog.import.1c

он разве не для импорта 1с предназначен?

У меня вопросы наверное ламерские, но я что то совсем запутался тут)



0



436 / 404 / 111

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

Сообщений: 1,715

19.09.2013, 15:50

11

да для кастомного импорта

кидаю этот компонент на свою страницу(imp.php)
в настройках компонента делаю такие же как и в настройках модуля значения (мне кастомизация не нужна была)
далее в адресной строке открываю эту страницу с вышеуказанными параметрами (1с при импорте такие же параметры отпрвляет) и все дальше жду когда нужно будет F5 нажать — на последнем шаге будет надпись импорт завершен



1



284 / 283 / 73

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

Сообщений: 1,613

19.09.2013, 15:56

 [ТС]

12

Цитата
Сообщение от tgarl
Посмотреть сообщение

кидаю этот компонент на свою страницу(imp.php)

В смысле в код добавляете?
Спасибо, огромное, буду разбираться)



0



436 / 404 / 111

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

Сообщений: 1,715

19.09.2013, 16:00

13

Цитата
Сообщение от sMockingbird
Посмотреть сообщение

В смысле в код добавляете?

это обычный компонент
создал новую страницу и на нем разместил этот компонент, так же как любой другой



1



284 / 283 / 73

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

Сообщений: 1,613

20.09.2013, 10:02

 [ТС]

14

tgarl, я это и имел в виду)

Добавлено через 17 часов 42 минуты
tgarl, всё вроде сделал, но выдаёт ошибку

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

погуглил, ничего толкового не нашёл.
В чём причина может быть, не подскажете?



0



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

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

Настройки подключения к 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

Понравилась статья? Поделить с друзьями:
  • Failure with error 3003 не был произведен вызов startdocprinter
  • Failure to write file error code 5008
  • Failure to create file error code 5007
  • Failure reason an error occurred during logon status 0xc000035b
  • Failure loading the trainer reason data error