Меню

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

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

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

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

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

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

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

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

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

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

return GetMessage("FILE_BAD_TYPE");

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

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

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

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

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

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

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

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

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

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

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

return GetMessage("FILE_BAD_TYPE");

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

print_r($arFile);

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

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

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

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

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

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

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

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

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

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

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

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

return GetMessage("FILE_BAD_TYPE");

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

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

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

Настройка обмена выполнена правильно, но обмен все равно проходит некорректно? Рассмотрим типичные проблемы, возникающие в процессе интеграции сайта с 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С и картинки не выгрузились в первый раз на сайт, то в настройках модуля обмена выполните обмен через кнопку принудительной полной выгрузке картинок.

Обмен с битрикс «сайтом»

Я
   progaoff

17.08.20 — 14:30

import___19e25806-af84-4466-886c-09afbc566612.xml: Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.

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

<br><font color=#ff0000>MySQL Query Error: create table b_xml_tree_import_1c

                (

                    ID int(11) not null auto_increment,

                    
                    PARENT_ID int(11),

                    LEFT_MARGIN int(11),

                    RIGHT_MARGIN int(11),

                    DEPTH_LEVEL int(11),

                    NAME varchar(255),

                    VALUE longtext,

                    ATTRIBUTES text,

                    PRIMARY KEY (ID)

                )

            </font>[[1813] Tablespace for table ‘`lavka`.`b_xml_tree_import_1c`’ exists. Please DISCARD the tablespace before IMPORT]<br><br>

<table cellpadding=»1″ cellspacing=»0″ width=»35%» bgcolor=»#9C9A9C»>

    <tr>

        <td><table cellpadding=»5″ cellspacing=»0″ width=»100%»>

            <tr>

                <td bgcolor=»#FFFFFF» align=»center»>

                    <FONT face=»Verdana, Arial, Helvetica, sans-serif» size=»-1″>

                    <font color=»#FF0000″><b>DB query error.</b></font><br>

                    Please try later.

                    </font><br>

                                            </form>

                        <form method=»post» action=»https://www.1c-bitrix.ru/support/»>;

                                                        <input type=»hidden» name=»last_error_query» value=»File: /var/www/hozmag/data/www/hozmag-econom.ru/bitrix/modules/main/include/dbquery_error.php

Query: create table b_xml_tree_import_1c

Добрый день, кто нибудь сталкивался с такой проблемой?

   progaoff

1 — 17.08.20 — 14:53

Не ужели никто?

   Fram

2 — 18.08.20 — 00:41

Попробуй удалить соответствующий .idb файл в папке бд

   Fram

3 — 18.08.20 — 00:41

* .ibd

   Fram

4 — 18.08.20 — 00:42

   progaoff

5 — 18.08.20 — 10:14

(2) да вот в том то и проблема что там пусто, нет этих файлов

   lenkavovka

6 — 18.08.20 — 11:00

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

Раньше работало?

Сервер с MySQL твой?

Ребут сервера помогает?

Если «да, да, нет» — гуглить «Проверка, восстановление и оптимизация баз MySQL». База иногда устаёт, нужно её в себя привести. Делается из любого менеджера MySQL по правому клику на названии базы. Например, DBForge Studio For MySQL.

   progaoff

7 — 18.08.20 — 11:19

(6) Да работало до обновления «сайта»

   yzimin

8 — 18.08.20 — 11:21

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

   progaoff

9 — 18.08.20 — 11:21

(8) «да, да, нет»

   progaoff

10 — 18.08.20 — 11:28

(8) они отправляют на сторону 1с

   progaoff

11 — 18.08.20 — 11:28

Типа того что идет два одновременных обмена. И бла бла бла

   yzimin

12 — 18.08.20 — 11:29

(11) Так это важные вводные данные. Да, битрикс не умеет работать паралельно, надо пилить, на стороне 1С дешевле

   progaoff

13 — 18.08.20 — 11:30

(12) нет двух обменов одновременно.

   yzimin

14 — 18.08.20 — 11:32

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

   progaoff

15 — 18.08.20 — 11:39

(14) да уже высылал — толку 0

   yzimin

16 — 18.08.20 — 11:46

(15) ты же сам говоришь, что тебе указали на зацикливание. Сам-то смотрел логи? чтобы начало обмена шло строго после окончания? Если всё ок, то подключайте административный инструмент)

   progaoff

17 — 18.08.20 — 11:47

(16) Ну конечно смотрел. Какой из инструментов то?

   lenkavovka

18 — 18.08.20 — 14:24

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

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

Если из старой копии обмен идёт — то проблема у нас. Чего, кстати, ни разу не бывало.

   progaoff

19 — 18.08.20 — 14:55

(18) Уже пробовал, с копией та же хрень

   progaoff

20 — 18.08.20 — 14:56

Сейчас пробую залить на сайт через xml

   progaoff

21 — 18.08.20 — 15:28

Жесть. Уже все перепробовал — результат 0

   lenkavovka

22 — 19.08.20 — 07:40

(21) Осталось попробовать достать из бэкапа копию сайта и базы MySQL до обновления и проверить обмен. Снова обновить Битрикс потом — не проблема.

А вообще здесь нужно обоюдное участие всех заинтересованных лиц, дебажить как со стороны 1С, так и со стороны Битрикса.

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

   Мисс

23 — 19.08.20 — 07:43

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

  

dmitryds

24 — 19.08.20 — 09:42

(21) а если почистить таблицу b_xml_tree_import_1c?

Если не поможет вообще удалить…

само собой сначала бэкап

Этот короткий пост рассказывает о том, как мы боролись с ошибкой базы данных «Can’t create table ‘b_xml_tree’ (errno: -1)», возникшей при обмене интернет-магазина с 1С и какое было найдено решение.

Как обнаружили ошибку

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


Процесс выполнения обмена: Распаковка архива завершена.
Процесс выполнения обмена: Временные таблицы удалены.
Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.
Ответ сервера:
MySQL Query Error: create table b_xml_tree ( ID int(11) not null auto_increment, PARENT_ID int(11), LEFT_MARGIN int(11), RIGHT_MARGIN int(11), DEPTH_LEVEL int(11), NAME varchar(255), VALUE longtext, ATTRIBUTES text, PRIMARY KEY (ID) ); [Can't create table 'dbname.b_xml_tree' (errno: -1)]

При всем этом — никаких изменений в процессы обмена сайта и 1С накануне внесено не было, но проблема явно на стороне сайта. Выгрузка обрывается с ошибкой создания таблицы в БД на этапе чтения xml-файла импорта.

Как удалось решить

Первым делом было проверено выполняется ли этот запрос на создание таблицы вручную через консоль. Оказалось — нет, не выполняется. Получали такую же ошибку как и при обмене — «Can’t create table». Затем в запросе было изменено название таблицы с b_xml_tree на b_xml_tree1. Таблица создалась! Выходит, что таблица не может создастся именно с названием b_xml_tree.

Тип таблиц на сайте — InnoDB. Не зависимо от типа хранения таблицы в MySQL (InnoDB или MyISAM) — для нее создается файл с расширением .frm. Этот файл хранит в себе описание таблицы и называется так же, как и она. InnoDB таблицы и индексы могут быть сохранены в собственный файл (так называемая функция «multiple tablespaces»). Если такая опция включена, InnoDB будет хранить вновь созданную таблицу в *.ibd файле в каталоге базы данных рядом с файлами расширение .frm.

Соответственно, если таблицы в БД нет, то и этих файлов тоже быть не должно. Зашли на сервер, перешли в /var/lib/mysql/dbname/ и обнаруживаем там файл b_xml_tree.ibd, которого там быть совсем не должно, если таблица удалена. После удаление этого лишнего файла — таблица снова смогла создаваться без проблем! Собственно, это и было решением возникшей ошибки. Но почему этот файл остался в системе после удаления таблицы, обнаружено так и не было.

Ссылки по теме

  • https://dev.mysql.com/doc/internals/en/frm-file-format.html
  • https://dev.mysql.com/doc/refman/5.0/en/innodb-multiple-tablespaces.html
  • http://dev.mysql.com/doc/refman/5.0/en/innodb-error-codes.html
  • http://dev.1c-bitrix.ru/community/forums/messages/forum32/topic51089/message271070/

bg-girl

Эффективная работа с клиентами онлайн невозможна без интеграции сайта с системами «1С:Предприятие»

Что дает интеграция сайта и 1С?

  • Быстрый сбор и обработка заказов
  • Всегда актуальные сведения по наличию, ценам и статусу заказа
  • Все заказы клиента собраны на сайте (и онлайн, и оффлайн)
  • Синхронизация справочников 1С и интернет-магазина
  • Добавление одному товару разных цен в зависимости от характеристик
  • Выгрузка каталога товаров в «1С»

Вопросы к рассмотрению:

  1. Настройки интеграции на стороне 1С-Битрикс.
  2. Настройки интеграции на стороне 1С: Предприятие.
  3. Возможные варианты синхронизации данных.
  4. Наиболее частые ошибки обмена данными.

Вступление

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

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

Каким образом настроить синхронизацию между 1С и сайтом?

Где находятся Настройки обмена с сайтами в 1С-Битрикс    

Настройки синхронизации данных CMS «1C-Битрикс: Управление сайтом» со сторонними системами учёта следует проводить в административной части сайта. После входа в систему управления по ссылке https://domain.ru/bitrix (пишите ваше доменное имя), необходимо перейти в панель администрирования сайта и перейти по пунктам, указанным на скриншоте слева <-
Откроется первая вкладка «Каталог» раздела настроек интеграции с 1С, в котором будут отображены параметры импорта данных (из 1С в 1С-Битрикс).

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

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

Чтобы не позволять злоумышленнику запускать соответствующий скрипт сайта на файловом уровне, необходимо создать соответствующую группу пользователей и наделить их необходимыми правами. Для этого администратор web-сайта должен создать отдельную группу пользователей для управления обменом данными и пользователя для системы управления содержимым.

Настройка импорта (на указанной выше вкладке) находится в зоне ответственности web-специалиста, который занимается вашем интернет-ресурсом. Именно он должен принять решение по таким нюансам, как: стоит ли выгружать товары и характеристики товаров в различные информационные блоки или в один, формировать ли ЧПУ URL (человеко-понятные адреса страниц) при загрузке товаров, генерировать ли preview-картинки при добавлении элементов каталога. Именно web-специалист подберёт наиболее удачную конфигурацию настроек обмена данными, исходя из особенностей вашего сайта и аппаратной инфраструктуры ваших информационных систем (хостинга).

После решения этих вопросов вашим web-специалистом, необходимо выполнить аналогичные настройки на стороне платформы «1С: Предприятие».

Рассмотрим пример настроек обмена данными со стороны платформы 1С, используя конфигурацию «1С: Управление торговлей (УТ)». Предварительно установите модуль интеграции с 1С-Битрикс, версии которого расположены на этой странице: https://1c.1c-bitrix.ru/ecommerce/download.php:

Модуль обмена с Битрикс скачать

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

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

Настраиваем Узлы обмена с сайтами

Данные будем выгружать на сайт по следующему пути: https:[ваш домен]/bitrix/1c/1c_exchange.php. Введите данные пользователя, созданного на предыдущем шаге специально для осуществления обмена. Проверьте соединение с сайтом с помощью специальной кнопки в этом окне:

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

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

Как настроить выгрузка информации о номенклатуре

Расписание обмена с сайтом настройки

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

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

выгрузка информации о номенклатуре

Таким образом, можно формировать уникальную структуру товарных позиций для сайта, коренным образом отличающуюся от исходной в системе учёта «1С: Предприятие». Используйте для этого инструмент «Настройка дерева групп»:

Настроить пользовательские группы товаров

Также откройте Форму настройки отбора, где можно задать специфические условия выгрузки данных:

Форма настройки отбора номенклатуры

Теперь можно попробовать выполнить выгрузку данных, нажав соответствующую кнопку «Выполнить обмен данными» из блока «Синхронизация данных». И если всё настроено правильно, вы увидите на сайте необходимую вам структуру товарных позиций. 

А как же заказы?

Теперь разберёмся с не менее важной составляющей интеграции данных – это обмен заказами товаров между сайтом и «1С: Предприятие».

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

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

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

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

Настройка полей экспорта на сайт

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

Настройка обмена документами между сайтом и 1С

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

Настройка соответствий загружаемых документов между сайтом и 1С

Также пробуйте выполнить обмен заказами из 1С по аналогии с синхронизацией товаров. И если всё настроено правильно, вы увидите заказы с сайта в системе «1С: Управление торговлей»:

Заказ на сайте:

Просмотр заказа на сайте

А вот этот заказ в 1С:

Просмотр заказа клиента в 1С

Просмотр заказа клиента в 1С

Соответствие созданных документов на сайте и загруженных в 1С:

Просмотр соответствия созданных документов на сайте и загруженных в 1С

Просмотр связанных документов

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

Дополнительные возможности по обмену 1С с сайтом на Битрикс

Проблемы настройки обмена с 1С-Битрикс и решения 1С. (картинка https://vk.com/asinastra) Автор картинки: https://vk.com/asinastra

Рассмотрим наиболее часто встречающиеся проблемы интеграции продуктов 1С с системой управления 1С-Битрикс.

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

Решение: наименования свойств начинаются с числового значения. Первый знак – символ. Переименуйте их.


Проблема: импорт данных из 1С происходит ну очень медленно.

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


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

Решение: часто проблема возникает в результате работы PHP в режиме CGI. Передача данных авторизации HTTP в PHP в этом режиме не гарантируется. Обратитесь к вашему системному администратору для включения на сервере обработки .htaccess и поддержки mod_rewrite.


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

Решение: проверьте настройки файрволла или антивируса, они могут препятствовать корректной передаче файла или блокировать отправку файла на сервер. Может помочь отключение ZIP-сжатия в настройках интеграции с 1С, если настройка firewall или антивируса не помогло.


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

Решение: ошибка может быть связана с нехваткой ресурсов на масштабирование передаваемых на сервер изображений. Выходом из данной ситуации может служить отключение опции «Выгружать картинки» (вкладка «Выгрузка товаров» в настройке обмена в 1С). Также можно увеличить размер выделяемой памяти в настройках PHP (рекомендуемый параметр memory_limit для php указан на вкладке «Диагностика» CMS Битрикс. 


Проблема: поле объекта не обнаружено.

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


Если ничего не получается? Свяжитесь с нами, и работу по настройке интеграции 1С-Битрикс и 1С мы возьмём на себя.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Bitrix ошибка при загрузке файла
  • Binkw64 dll skyrim se ошибка