Ошибка при выгрузке на битрикс

Пожалуйста, еще раз проверьте ваши настройки обмена по этому чек-листу. В нём перечислены наиболее часто встречающиеся проблемы, которые составляют 70% обращений в Техподдержку. Кейсы, не вошедшие в чек-лист, перечислены ниже.

  • Обмен заказами завершен с ошибками
  • Не меняется статус заказа при выгрузке из 1С
  • Изменения товаров не зарегистрированы. Выгрузка товаров не произведена.
  • Изменения на сайте не приходят в 1С.
  • Как выгрузить каталоги из 1С в разные типы инфоблоков?
  • Не удалось найти вид номенклатуры
  • Поле объекта не обнаружено
  • Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.
  • Произошла ошибка на стороне сервера. Файл не отправлен
  • Не работает авторизация при обмене данными с 1С
  • При выгрузке каталога из 1С не ставит галочку «уменьшать количество при заказе»
  • Возможные причины медленного импорта из 1С
  • Если структура каталога в 1С отличается от каталога на сайте?
  • Ошибка импорта метаданных
  • Выгрузка картинок
  • Проблема. При попытке обмена заказов в выходит сообщение:

    Выгружено товаров: 1
    Выгружено картинок: 1
    Выгрузка товаров успешно завершена
    Не установлен реквизит «ГруппаДоступаККонтрагенту». Элемент не записан!
    Не установлен реквизит «РегионДоставки». Элемент не записан!
    Не установлен реквизит «Основная форма оплаты». Элемент не записан!
    {Обработка.ОбменССайтом(3468)}: Ошибка при вызове метода контекста (Записать): Операция не выполнена!
    Произошла ошибка: . По причине:

    Не удалось найти/создать контрагента.
    Не удалось обработать документы, загруженные с сервера.
    Обмен не выполнен.
    Не выгружен ни один заказ.
    Обмен заказами завершен с ошибками!!!

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

    Проблема. Не меняется статус заказа при выгрузке из

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

    • В 1С:УТ зарегистрировать оплату заказа можно путем ввода на основании заказа документов оплаты, таких как Платежное поручение входящее и Приходный кассовый ордер.
    • Отгрузка, как правило, регистрируется вводом на основании заказа документа Реализация товаров и услуг.
    • Если в регистре Расчеты с контрагентами остаток по заказу <= 0, заказ считается оплаченным.
    • Если в регистре Заказы покупателей остаток по заказу <= 0, заказ считается отгруженным. У конфигурации УПП принцип тот же.


    Статусы

    Статусы заказа — этапы, через которые проходит заказ во время обработки.
    Подробнее…



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

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

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

    • Обычно появляется из-за некорректной настройки выгрузки товаров на вкладке Выгрузка товаров.
      Стоит обратить внимание на то, что настраивается именно фильтр(!), а не выбираются поля для выгрузки. Если отмечается поле для фильтра, то значение этого поля в фильтре должно быть задано.
    • В 1С: Управление торговлей обратите внимание в справочнике Номенклатура на реквизит вид номенклатуры. Должен быть обязательно признак товар (наименование товар и тип номенклатуры товар).
    • Если обмен осуществляется в режиме выгрузки изменений, а этих изменений с момента последнего обмена не зафиксировано, то возникает указанная ошибка. Стоит обратить внимание на следующие моменты:
      • Если осуществляется полная выгрузка каталога на сайт, то настройка фильтра необязательна (нужно снять выделение со всех отмеченных полей на вкладке Выгрузка товаров).
      • Изменения товара никаким образом не относятся к сайту, т.е. удаление товаров на сайте или их редактирование не фиксируется в . При обмене выгружаются изменения товаров, произведённые именно в с момента последней выгрузки.

    Проблема. заполнена и настроена на обмен по расписанию с «1С-Битрикс: Управление сайтом». Развернута копия базы .

    Изменения в «1С-Битрикс: Управление сайтом» не приходят в , т.е. якобы на сайте нет изменений.

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

    Чтобы изменения отслеживались в оригинале базы , просто поменяйте пароль у пользователя «1С-Битрикс: Управление сайтом».

    Проблема. Как выгрузить каталоги из в разные типы инфоблоков?

    Решение. Чтобы осуществить выгрузку в разные типы инфоблока, следует поместить несколько компонентов catalog.import.1c на разные страницы.

    Например, имеем две страницы: http://mysite.ru/1c_import_1.php и http://mysite.ru/1c_import_2.php. На обеих страницах настраиваем компонент catalog.import.1c — указываем в параметрах разные типы инфоблоков и устанавливаем флажок у опции Импортировать с учетом типа инфоблока.

    Затем при настройке импорта в , для выгрузки в нужный тип инфоблока указываем разные файлы: http://mysite.ru/1c_import_1.php либо http://mysite.ru/1c_import_2.php.

    Пример файла:

    <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
    $APPLICATION->SetTitle("import1");
    ?> 
    <?$APPLICATION->IncludeComponent("bitrix:catalog.import.1c", "", Array(
    		"IBLOCK_TYPE" => "books",
    		"SITE_LIST" => array(),
    		"INTERVAL" => "30",
    		"GROUP_PERMISSIONS" => array(0 => "1"),
    		"USE_OFFERS" => "N",
    		"USE_IBLOCK_TYPE_ID" => "Y",
    		"SKIP_ROOT_SECTION" => "N",
    		"ELEMENT_ACTION" => "D",
    		"SECTION_ACTION" => "D",
    		"FILE_SIZE_LIMIT" => "204800",
    		"USE_CRC" => "Y",
    		"USE_ZIP" => "Y",
    		"USE_IBLOCK_PICTURE_SETTINGS" => "N",
    		"GENERATE_PREVIEW" => "Y",
    		"PREVIEW_WIDTH" => "100",
    		"PREVIEW_HEIGHT" => "100",
    		"DETAIL_RESIZE" => "Y",
    		"DETAIL_WIDTH" => "300",
    		"DETAIL_HEIGHT" => "300",
    		"TRANSLIT_ON_ADD" => "Y",
    		"TRANSLIT_ON_UPDATE" => "Y",
    		"TRANSLIT_MAX_LEN" => "100",
    		"TRANSLIT_CHANGE_CASE" => "L",
    		"TRANSLIT_REPLACE_SPACE" => "_",
    		"TRANSLIT_REPLACE_OTHER" => "_",
    		"TRANSLIT_DELETE_REPEAT_REPLACE" => "Y"
    	),
    false
    );?> 
    <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
    

    Проблема. Не удалось найти вид номенклатуры

    В процессе обмена с сайтов возникает ошибка: Не удалось найти вид номенклатуры: Услуга Не удалось найти вид номенклатуры: Товар Не удалось найти/создать номенклатуру. Не удалось обработать документы, загруженные с сервера.

    Решение. Ошибка возникает, если в нет типов номенклатуры Услуга и Товар. Эти типы номенклатуры критичны для процесса обмена данными с сайтом. Следует создать в эти типы номенклатуры и только поле этого осуществлять обмен.

    Проблема. В процессе обмена возникает ошибка Поле объекта не обнаружено.

    В процессе обмена заказами возникает ошибка: {Обработка.ОбменССайтом(3271)}: Поле объекта не обнаружено (Наименование) >> ОтобразитьСостояние(«Идентификация контрагента: » + СтрокаДД.СтруктураДанныхКонтрагента.Наименование);

    Решение. Проверьте настройки интеграции с , закладка

    Профили обмена

    Нажмите на рисунок, чтобы увеличить
    Подробнее…



    : установлены ли соответствия для полей заказа.
    Обратите внимание на поля Полное Наименование и Наименование. Эти поля критичны для .

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

    • Возникает ошибка следующего вида:

      Выгружено товаров: 679 Выгружено картинок: 469 Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен. Ответ сервера. Fatal error : Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401 bytes) in /var/www/bitrix/modules/iblock/classes/general/cml2.php on line 483 Выгрузка товаров завершена с ошибками!

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

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

    • Возникает ошибка следующего вида:

      Выгружено товаров: 46 Выгружено картинок: 0 Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен Ответ сервера: DB query error. Please try later. Выгрузка товаров завершена с ошибками!

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

      Причиной может служить прокси-сервер, через который осуществляется обмен. Попробуйте осуществить выгрузку не через прокси-сервер. Также попробуйте отключить опцию Использовать сжатие zip, если доступно в настройках интеграции с — возможно, на сервере не поддерживается ZIP-сжатие. Проверьте настройки интеграции с .

    Проблема. Ошибка Произошла ошибка на стороне сервера. Файл не отправлен

    В процессе обмена возникает такого вида ошибка:

    Выгружено товаров: 3 Выгружено картинок: 0 Выгрузка товаров успешно завершена Выгружено заказов: 1 Произошла ошибка на стороне сервера. Файл не отправлен (C:Documents and SettingsUserLocal SettingsTempv8_5075_63.zip). Обмен не выполнен Ответ сервера: Файл для импорта пуст. Обмен заказами завершён с ошибками!

    Решение. Причины возникновения ошибки могут быть следующие:

    • На компьютере, где установлена , имеется файрволл или антивирус, препятствующий корректной передаче файла или блокирующий отправку файла на сервер.
    • Некорректно работает функции расширения ZIP, вследствие чего из архива не распаковываются файлы. Для решения возникшей проблемы рекомендуется:
      • Установить последние стабильные версии обновлений модуля интернет-магазина.
      • На время обмена отключить на локальной машине все блокирующее ПО (антивирус, файрволлы и т.д.)
      • Отключить ZIP-сжатие в настройках интеграции с .
    • Проблема. Не работает авторизация при обмене данными с

      Решение. Часто проблема возникает в результате работы PHP в режиме CGI. В этом режиме есть проблемы с передачей данных авторизации HTTP в PHP. Можно это проверить, посмотрев phpinfo() в разделе: Server API: CGI. Можно обойти проблему, но необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite. Выполните следующие действия:

      • В корне сайта в файл .htaccess добавьте строки:
            RewriteEngine on
            RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]
      • Закоментируйте следующие строки в файле bitrix/admin/.htaccess, которые отключают mod_rewrite:
            #<ifmodule mod_rewrite.c="">
            # RewriteEngine Off
            #</ifmodule>

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

      • В файл bitrix/php_interface/dbconn.php добавьте строки:
            $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);

      Для проверки работоспособности HTTP-авторизации воспользуйтесь скриптом

      Внимание! Данный вариант обхода не всегда может решить проблему. Если при выполнении всех рекомендаций HTTP-авторизация не заработала, то следует обратиться к хостинг-провайдеру с этой проблемой.

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

      Решение. Чтобы исправить это, необходимо в файле init.php добавить код, который будет срабатывать при добавление продукта (через событие OnProductAdd):

      <?
      AddEventHandler("sale", "OnProductAdd", "OnProductAdd"); 
       
          function OnProductAdd($ID,$Fields) 
          {   
        $res=Array("QUANTITY_TRACE"=>'Y); 
         CCatalogProduct::Update($ID,$res); 
       
      } 
      ?>

      Проблема: медленный импорт из 1C

      Возможные причины:

      Включённая индексация. Для ускорения можете в настройках инфоблока выключить индексацию элементов и разделов, а также свойств.

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

      Задача: Структура каталога на сайте должна отличаться от структуры в 1C.

      Варианты решения:

      Вариант 1. Делается отдельный классификатор — инфоблок и разделы. У разделов создаётся свойство привязка к разделам, и нужные «человеческие» разделы привязываются к разделам инфоблока с классификатором, который пришел из 1C. Можно сделать множественную привязку — будет проще свести в один раздел из кучи непонятных в 1C.

      Вариант 2. В 1C можно создать такой объект как прайс-лист и попробовать настроить обмен с сайтом, уже используя его как прокси. Т.е. если в справочнике Номенклатура бардак и вообще куча всякого, что на сайте не должно показываться, то создаётся прайс-лист, и уже в нём создаются нужные секции. И специально обученный сотрудник добавляет в узлы прайс-листа ссылки на позиции из справочника номенклатура.

      Тогда на сайт будет уходить CML, структура которого берётся из прайс-листа, а не из номенклатурного справочника.

      Проблема. На этапе выгрузки свойств после построения таблиц выводится сообщение об ошибке:

        Выгружено товаров: 1 832
        Выгружено картинок: 0
        Выгружено предложений: 0
        Произошла ошибка на стороне сервера.
        Обмен не выполнен
        Ответ сервера:
        Ошибка импорта метаданных.

        Выгрузка товаров завершена с ошибками!!!

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

      Проблема. На этапе выгрузки свойств после построения таблиц выводится сообщение об ошибке:

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

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

      Проблема. Неполная выгрузка картинок.

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

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

    • Ошибки на стороне веб-сервера
    • Ошибки при работе с файлами данных
    • Проблемы авторизации
    • Ошибки MySQL
    • Логические ошибки
    • Диагностика отладки
      • Отладка обмена на стороне 1С-Битрикс
      • Модуль отладки обмена от ИНТЕРВОЛГИ
    • Выводы

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

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

    Мы выделили несколько групп ошибок:

    • проблемы авторизации;
    • ошибки на стороне сервера;
    • ошибки при работе с файлами данных;
    • ошибки MySQL;
    • логические ошибки.

    Далее мы детально рассмотрим сами ошибки и способы их исправления.

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

    К этой группе относятся ошибки, возникающие в подсистемах веб-сервера, отвечающих за выполнение PHP-кода. Обычно это: Nginx, Apache и сам интерпретатор языка PHP.

    Возможны 2 варианта:

    • Ошибка действительно вызвана неоптимальными настройками Nginx/Apache/PHP. Если Вы чувствуете неуверенность в своем веб-сервере или совсем недавно на него переехали — привлеките администратора для проверки и изменения настроек.
    Название ошибки Как исправить
    Failed sending data to the peer (no headers, no data)‏.
    1. Увеличить значения параметров max_execution_time и memory_limit. в файле php.ini
    2. Перезагрузить сервер.
    3. Повторить выгрузку.
    Получен пустой ответ сервера.
    Ошибка нехватки памяти, например выводится сообщение: Fatal error : Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401…)‏. Проверить настройку memory_limit в php.ini. Должно быть указано не менее 512Mb, увеличить значение и перезагрузить сервер. Или не изменяя настройки сервера сделать равным таймаут сервера и таймаут «1С-Битрикс: Управление сайтом» (страница Магазин > Настройки магазина > Интеграция с 1С, поле Интервал одного шага в секундах). Если проблема с нехваткой памяти, данное решение не подойдёт.
    • Подобная ошибка может маскировать либо некорректную настройку объема одной порции загружаемых данных (10К товаров за раз, например), либо логическую ошибку в программном коде (например, пересчет каких-нибудь значений в товарах по событию изменения).

    Способы решения:

    1. уменьшать объем передаваемых за раз данных (проверить на 1 товаре, но лучше выставлять значение поочередно, 1, 100, 1000, 10000 и смотреть, какое значение оптимально для ваших настроек);
    2. временно закомментировать обработчики событий в файле /bitrix/php_interface/init.php, может быть они мешают обмену.

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

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

    Название ошибки Как исправить

    Закончилось место на диске.

    Удалить старые бэкапы или увеличить тариф на хостинге.

    По ftp файлы загружаются, а через веб-интерфейс административного раздела сайта нет.

    Обратиться в техническую поддержку хостинг-провайдера.

    Не работает или некорректно работает сжатие данных при обмене.

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

    Также можно проверить работу функции zip_open на сервере

    Откройте в браузере страницу http://<ваш_сайт>//bitrix/admin/phpinfo.php (Либо выполните команду

    if (exist_function (“zip_open”)){ echo “OK”; }

    В браузере отобразится таблица:

    Для строки ZIP должно стоять «enabled».

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

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

    Название ошибки Проблема / как исправить

    «Не удалось получить данные с сервера. Проверьте правильность адреса сервера, порт, имя пользователя и пароль, а также настройки подключения к Интернет».

    На сервере 1С установлено ПО, которое блокирует исходящие соединения, в этом случае при попытке обмена выдаётся ошибка. Исправляется добавлением адреса сайта в белый список ПО.

    «Авторизация не выполнена.

    Не удалось установить соединение с сервером. Проверьте имя пользователя и пароль».

    Неверно указаны логин/пароль доступа к сайту.

    Надо проверить, получается ли по указанному доступу зайти на сайт.

    И проверить наличие редиректов при переходе по ссылке, например на https версию сайта.

    Если по ссылке

    http:// адрес сайта /bitrix/admin/1c_exchange.php

    появляется сообщение, значит с логином и паролем всё в порядке.

    Ошибки MySQL

    Ошибки возникают при соединении с базой данных MySQL, настроенной на сайте.

    Название ошибки Проблема / как исправить

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

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

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

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

    Название ошибки Проблема / как исправить

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

    Проверить на официальном сайте “1С-Битрикс” соответствие версий продуктов.

    Если версии не совпадают, переустановить модуль обмена на стороне 1С

    «Изменения товаров не зарегистрированы. Выгрузка товаров не произведена».

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

    Также это сообщение выдаётся, если если в настройках Режима обмена данными с WEB-сайтом установлено: Выгружать только измененные объекты с момента последнего обмена. В этом случае это не ошибка, а выгрузки не произошло, потому что данные со стороны 1с не были изменены.

    «Не удалось найти вид номенклатуры».

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

    «Поле объекта не обнаружено».   

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

    Данные выгружаются на сайт, но не обновляются.

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

    Диагностика отладки

    Мы применяем два инструмента отладки обмена между 1С и 1С-Битрикс.

    Отладка обмена на стороне 1С-Битрикс

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

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

    Включить «режим отладки» можно отредактировав файл dbconn.php. А именно, создать константу такого вида: define(«BX_CATALOG_IMPORT_1C_PRESERVE», true).

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

    Модуль отладки обмена от ИНТЕРВОЛГИ

    Для упрощения диагностики мы создали модуль отладки обмена.

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

    Модуль отладки обмена от ИНТЕРВОЛГИ лучше логов со стороны 1С-Битрикс, потому что он:

    • следит за размером и в результате его работы не закончится место на сайте;
    • логирует обмен справочников и заказов;
    • логирует время обмена и время выполнения одного шага.

    Выводы

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

    Наша компания обладает компетенциями в вопросе отладки обмена. Если у вас возникла подобная проблема, напишите, обсудим.

    Вам может быть интересно:

    • Tutorial по стандартному и нестандартному обмену сайта с 1С. Часть первая: стандартный обмен и его хитрости.
    • Tutorial по обмену сайта с 1С. Часть вторая: зачем и как писать свой обмен с нуля на очередях и REST API.
    • Tutorial по обмену с 1С. Часть третья: Выжимаем максимум из стандарта. Что мы хотели бы знать 1000 проектов назад.
    • Tutorial по обмену с 1С. Часть четвертая: Обмен через промежуточную базу данных.
    • Tutorial по обмену с 1С. Часть пятая: Наш опыт настройки 1000 и 1 обмена.

    13.10.2020
    07:59
    13.10.2020 07:59:48

    Ошибка 504 Gateway Time-out — бывает по разным причинам, главное, что ответ от сервера не приходит в определенное время
    Самое просто решение (если код рабочий)

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

    Мы поставили 3500 секунд, но надо подбирать индивидуально

    1. ngix повысить время ожидания веб-сервера 3500 секунд поставить
    Подключитесь через ssh
    Откройте конфигурационный файл

     sudo nano /etc/nginx/nginx.conf

    Добавьте(измените) строки в блоке server:

    http{
       #...
       proxy_read_timeout 300;
       proxy_connect_timeout 300;
       proxy_send_timeout 300;
       #...
    }

    Добавьте(измените) строки в блоке server:

    server {
    
    #...
    
    proxy_connect_timeout 3500;
    proxy_send_timeout 3500;
    proxy_read_timeout 3500;
    send_timeout 600;
    
    #...
    }

    Перезапустите Nginx

    2 Установить php max_execution_time 3500
    или .htaccess (лучше для проверки)

    php_value max_execution_time 3500, 

    или в  /bitrix/php_interface/dbconn.php

    @ini_set("max_execution_time", 3500);

    3. Установить php session.gc_maxlifetime 3500  
    или .htaccess (лучше проверки)

    php_value  session.gc_maxlifetime 3500,

    или в  /bitrix/php_interface/dbconn.php

    @ini_set("session.gc_maxlifetime", 3500); 

    4. Установить  в /bitrix/php_interface/dbconn.php

    5. В параметрах безопасности группы тоже увеличить сессию(во всех группах, где состоит пользователь, из-под которого обмен происходит, в т.ч. неавторизованные пользователи) 60мин (3500/60=59 мин)

    Как проверить
    Вывести параметры
    можно в командной строке /bitrix/admin/php_command_line.php?lang=ru
    можно в тестовом скрипте

    //require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");//подключить пролог, если вы проверяете в скрипте и выставили max_execution_time и session.gc_maxlifetime в /bitrix/php_interface/dbconn.php
    echo ini_get('max_execution_time'); 
    echo ini_get('session.gc_maxlifetime');

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

    //require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");//подключить пролог, если вы выставили max_execution_time и session.gc_maxlifetime в /bitrix/php_interface/dbconn.php
    sleep(3470);
    echo "hello  world";

    Искать причину в коде и править код

    Причина 1
    Куча кастомных обработчиков событий, или мало но очень тяжелые (долго исполняются), или много запросов к базе можно оптимизировать
    Смотреть в init.php, в модулях
    Решение: переделать обработчики, убрать обработчики, оптимизировать запросы к базе

    Причина 2
    Большая структура разделов, она выполняется за 1 шаг, если количество товаров-свойств в пакете можно уменьшить, то структура создается за 1 шаг.
    Решение: только увеличить время ответа сервера, время выполнения срипта (см. выше)

    Причина 3
    при загрузке файла с ценами prices_***.xml
    в компоненте bitrix/catalog.import.1с/component.php
    на 7 шаге ($NS[«STEP»] == 7)
    вызывается метод

    $result = $obCatalog->ImportElements($start_time, $arParams["INTERVAL"]);

    который описан тут /bitrix/modules/iblock/classes/general/clm2.php

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

    IblockPropertyIndexManager::runDeferredIndexing($this->next_step["IBLOCK_ID"]);

    И он выполнялся у заказчика 2 минуты! Соответственно 1С получает 504 Gateway Time-out, и обмен завершается ошибкой.
    метод runDeferredIndexing описан тут /bitrix/modules/iblock/lib/propertyindex/manager.php
    цикл

     foreach (self::$elementQueue[$productIblock] as $elementId)
                   self::elementIndexing($indexer, $elementId); //тут долго выполняется

    Решение 2. закомментировать данную строку

    self::elementIndexing($indexer, $elementId); 

    но после выполнения обмена надо запустить создание фасетного индекса

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

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

    Проблема. При попытке обмена заказов в 1С выходит сообщение:

    Выгружено товаров: 1
    Выгружено картинок: 1
    Выгрузка товаров успешно завершена
    Не установлен реквизит «ГруппаДоступаККонтрагенту». Элемент не записан!
    Не установлен реквизит «РегионДоставки». Элемент не записан!
    Не установлен реквизит «Основная форма оплаты». Элемент не записан!
    {Обработка.ОбменССайтом(3468)}: Ошибка при вызове метода контекста (Записать): Операция не выполнена!
    Произошла ошибка: . По причине:

    Не удалось найти/создать контрагента.
    Не удалось обработать документы, загруженные с сервера.
    Обмен не выполнен.
    Не выгружен ни один заказ.
    Обмен заказами завершен с ошибками!!!

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

    Не меняется статус заказа при выгрузке из 1С

    Проблема. Не меняется статус заказа при выгрузке из 1С

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

    • В 1С:УТ зарегистрировать оплату заказа можно путем ввода на основании заказа документов оплаты, таких как Платежное поручение входящее и Приходный кассовый ордер.
    • Отгрузка, как правило, регистрируется вводом на основании заказа документа Реализация товаров и услуг.
    • Если в регистре Расчеты с контрагентами остаток по заказу <= 0, заказ считается оплаченным.
    • Если в регистре Заказы покупателей остаток по заказу <= 0, заказ считается отгруженным. У конфигурации УПП принцип тот же.

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

    Изменения товаров не зарегистрированы. Выгрузка товаров не произведена

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

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

    • Обычно появляется из-за некорректной настройки выгрузки товаров на вкладке Выгрузка товаров. Стоит обратить внимание на то, что настраивается именно фильтр(!), а не выбираются поля для выгрузки. Если отмечается поле для фильтра, то значение этого поля в фильтре должно быть задано.
    • В 1С: Управление торговлей обратите внимание в справочнике Номенклатура на реквизит вид номенклатуры. Должен быть обязательно признак товар (наименование товар и тип номенклатуры товар).
    • Если обмен осуществляется в режиме выгрузки изменений, а этих изменений с момента последнего обмена не зафиксировано, то возникает указанная ошибка. Стоит обратить внимание на следующие моменты:
      • Если осуществляется полная выгрузка каталога на сайт, то настройка фильтра необязательна (нужно снять выделение со всех отмеченных полей на вкладке Выгрузка товаров).
      • Изменения товара никаким образом не относятся к сайту, т.е. удаление товаров на сайте или их редактирование не фиксируется в 1С. При обмене выгружаются изменения товаров, произведённые именно в 1С с момента последней выгрузки.

    Изменения на сайте не приходят в 1С

    Проблема. 1С заполнена и настроена на обмен по расписанию с «1С-Битрикс: Управление сайтом». Развернута копия базы 1С. Изменения в «1С-Битрикс: Управление сайтом» не приходят в 1С, т.е. якобы на сайте нет изменений.

    Решение. На самом деле, изменения есть и они приходят в копию базы 1С. Чтобы изменения отслеживались в оригинале базы 1С, просто поменяйте пароль у пользователя «1С-Битрикс: Управление сайтом».

    Как выгрузить каталоги из 1С в разные типы инфоблоков?

    Проблема. Как выгрузить каталоги из 1С в разные типы инфоблоков?

    Решение. Чтобы осуществить выгрузку в разные типы инфоблока, следует поместить несколько компонентов catalog.import.1c на разные страницы.

    Например, имеем две страницы: http://mysite.ru/1c_import_1.php и http://mysite.ru/1c_import_2.php. На обеих страницах настраиваем компонент catalog.import.1c — указываем в параметрах разные типы инфоблоков и устанавливаем флажок у опции Импортировать с учетом типа инфоблока.

    Затем при настройке импорта в 1С, для выгрузки в нужный тип инфоблока указываем разные файлы: http://mysite.ru/1c_import_1.php либо http://mysite.ru/1c_import_2.php.

    Пример файла:

    <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
    $APPLICATION->SetTitle("import1");
    ?>
    <?$APPLICATION->IncludeComponent("bitrix:catalog.import.1c", "", Array(
    "IBLOCK_TYPE" => "books",
    "SITE_LIST" => array(),
    "INTERVAL" => "30",
    "GROUP_PERMISSIONS" => array(0 => "1"),
    "USE_OFFERS" => "N",
    "USE_IBLOCK_TYPE_ID" => "Y",
    "SKIP_ROOT_SECTION" => "N",
    "ELEMENT_ACTION" => "D",
    "SECTION_ACTION" => "D",
    "FILE_SIZE_LIMIT" => "204800",
    "USE_CRC" => "Y",
    "USE_ZIP" => "Y",
    "USE_IBLOCK_PICTURE_SETTINGS" => "N",
    "GENERATE_PREVIEW" => "Y",
    "PREVIEW_WIDTH" => "100",
    "PREVIEW_HEIGHT" => "100",
    "DETAIL_RESIZE" => "Y",
    "DETAIL_WIDTH" => "300",
    "DETAIL_HEIGHT" => "300",
    "TRANSLIT_ON_ADD" => "Y",
    "TRANSLIT_ON_UPDATE" => "Y",
    "TRANSLIT_MAX_LEN" => "100",
    "TRANSLIT_CHANGE_CASE" => "L",
    "TRANSLIT_REPLACE_SPACE" => "_",
    "TRANSLIT_REPLACE_OTHER" => "_",
    "TRANSLIT_DELETE_REPEAT_REPLACE" => "Y"
    ),
    false
    );?>
    <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

    Не удалось найти вид номенклатуры

    Проблема. Не удалось найти вид номенклатуры

    В процессе обмена 1С с сайтов возникает ошибка: Не удалось найти вид номенклатуры: Услуга Не удалось найти вид номенклатуры: Товар Не удалось найти/создать номенклатуру. Не удалось обработать документы, загруженные с сервера.

    Решение. Ошибка возникает, если в 1С нет типов номенклатуры Услуга и Товар. Эти типы номенклатуры критичны для процесса обмена данными с сайтом. Следует создать в 1С эти типы номенклатуры и только поле этого осуществлять обмен.

    Поле объекта не обнаружено

    Проблема. В процессе обмена возникает ошибка Поле объекта не обнаружено.

    В процессе обмена заказами возникает ошибка: {Обработка.ОбменССайтом(3271)}: Поле объекта не обнаружено (Наименование) >> ОтобразитьСостояние(«Идентификация контрагента: » + СтрокаДД.СтруктураДанныхКонтрагента.Наименование);

    Решение. Проверьте настройки интеграции с 1С, закладка Профили обмена: установлены ли соответствия для полей заказа. Обратите внимание на поля Полное Наименование и Наименование. Эти поля критичны для 1С.

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

    • Возникает ошибка следующего вида:

    Выгружено товаров: 679 Выгружено картинок: 469 Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен. Ответ сервера. Fatal error : Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401 bytes) in /var/www/bitrix/modules/iblock/classes/general/cml2.php on line 483 Выгрузка товаров завершена с ошибками!

    Решение. Ошибка скорее всего связана с нехваткой ресурсов на масштабирование передаваемых на сервер изображений. Выходом из данной ситуации может служить отключение опции Выгружать картинки (вкладка Выгрузка товаров в настройке обмена в 1С).

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

    • Возникает ошибка следующего вида:

    Выгружено товаров: 46 Выгружено картинок: 0 Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен Ответ сервера: DB query error. Please try later. Выгрузка товаров завершена с ошибками!

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

    Причиной может служить прокси-сервер, через который осуществляется обмен. Попробуйте осуществить выгрузку не через прокси-сервер. Также попробуйте отключить опцию Использовать сжатие zip, если доступно в настройках интеграции с 1С — возможно, на сервере не поддерживается ZIP-сжатие. Проверьте настройки интеграции с 1С.

    Произошла ошибка на стороне сервера. Файл не отправлен

    В процессе обмена возникает такого вида ошибка:

    Выгружено товаров: 3 Выгружено картинок: 0 Выгрузка товаров успешно завершена Выгружено заказов: 1 Произошла ошибка на стороне сервера. Файл не отправлен (C:Documents and SettingsUserLocal SettingsTempv8_5075_63.zip). Обмен не выполнен Ответ сервера: Файл для импорта пуст. Обмен заказами завершён с ошибками!

    Решение. Причины возникновения ошибки могут быть следующие:

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

    Не работает авторизация при обмене данными с 1С

    Решение. Часто проблема возникает в результате работы PHP в режиме CGI. В этом режиме есть проблемы с передачей данных авторизации HTTP в PHP. Можно это проверить, посмотрев phpinfo() в разделе: Server API: CGI. Можно обойти проблему, но необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite. Выполните следующие действия:

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

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

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

    #<ifmodule mod_rewrite.c="">
    # RewriteEngine Off
    #</ifmodule>

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

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

    $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);

    Для проверки работоспособности HTTP-авторизации воспользуйтесь скриптом

    Внимание! Данный вариант обхода не всегда может решить проблему. Если при выполнении всех рекомендаций HTTP-авторизация не заработала, то следует обратиться к хостинг-провайдеру с этой проблемой.

    При выгрузке каталога из 1С не ставит галочку «уменьшать количество при заказе»

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

    Решение. Чтобы исправить это, необходимо в файле init.php добавить код, который будет срабатывать при добавлении продукта (через событие OnProductAdd):

    <?
    AddEventHandler("sale", "OnProductAdd", "OnProductAdd");

    function OnProductAdd($ID,$Fields)
    {
    $res=Array("QUANTITY_TRACE"=>'Y);
    CCatalogProduct::Update($ID,$res);

    }
    ?>

    Возможные причины медленного импорта из 1С

    Проблема. Медленный импорт из 1C.

    Возможные причины:

    Включённая индексация. Для ускорения можете в настройках инфоблока выключить индексацию элементов и разделов, а также свойств.

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

    Если структура каталога в 1С отличается от каталога на сайте?

    Задача: Структура каталога на сайте должна отличаться от структуры в 1C.

    Варианты решения:

    Вариант 1. Делается отдельный классификатор — инфоблок и разделы. У разделов создаётся свойство привязка к разделам, и нужные «человеческие» разделы привязываются к разделам инфоблока с классификатором, который пришел из 1C. Можно сделать множественную привязку — будет проще свести в один раздел из кучи непонятных в 1C.

    Вариант 2. В 1C можно создать такой объект как прайс-лист и попробовать настроить обмен с сайтом, уже используя его как прокси. Т.е. если в справочнике Номенклатура бардак и вообще куча всякого, что на сайте не должно показываться, то создаётся прайс-лист, и уже в нём создаются нужные секции. И специально обученный сотрудник добавляет в узлы прайс-листа ссылки на позиции из справочника номенклатура.

    Тогда на сайт будет уходить CML, структура которого берётся из прайс-листа, а не из номенклатурного справочника.

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

    Проблема. На этапе выгрузки свойств после построения таблиц выводится сообщение об ошибке:

    Выгружено товаров: 1 832
    Выгружено картинок: 0
    Выгружено предложений: 0
    Произошла ошибка на стороне сервера.
    Обмен не выполнен
    Ответ сервера:
    Ошибка импорта метаданных.

    Выгрузка товаров завершена с ошибками!!!

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

    Проблема. На этапе выгрузки свойств после построения таблиц выводится сообщение об ошибке:

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

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

    Выгрузка картинок

    Проблема. Неполная выгрузка картинок.

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

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

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

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

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

    Понравилась статья? Поделить с друзьями:
  • Ошибка при выгрузке заявок в ацк
  • Ошибка при выборе формы прилагательного
  • Ошибка при выгрузке заявления о ввозе товаров
  • Ошибка при выборе раздела установки
  • Ошибка при выгрузке в устройство весы код ошибки 607