Получен неизвестный статус импорта ответ сервера mysql query error ответ сервера mysql query error

Добрый день!Выгрузка номенклатуры на сайт выдает ошибку  MySQL Query Error: INS ERT INTO b_xml_tree. Спецы по сайту указывают на то, что эта ошибка указывает на несколько одновременно запущенных процессов обмена: "Ошибка означает что отсутствовала таблица во время попытки записи в нее.Складывается ощущение что Вы запускаете два импорта разом. ну или первый импорт не успевает отработать к тому времени когда Вы запускаете второй. В этом случае второй импорт удаляет таблицу чтобы в нее загрузить...
 

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

Заглянувший

Сообщений: 30
Баллов: 1
Регистрация: 25.04.2015

#1

04.09.2018 07:41:15

Добрый день!
Выгрузка номенклатуры на сайт выдает ошибку  MySQL Query Error: INS ERT INTO b_xml_tree. Спецы по сайту указывают на то, что эта ошибка указывает на несколько одновременно запущенных процессов обмена: «Ошибка означает что отсутствовала таблица во время попытки записи в нее.
Складывается ощущение что Вы запускаете два импорта разом. ну или первый импорт не успевает отработать к тому времени когда Вы запускаете второй. В этом случае второй импорт удаляет таблицу чтобы в нее загрузить новые данные. А первый импорт пытается произвести в нее запись.»

ТП Битрикса, на подобное же обращение (моего коллеги с такой же проблемой) отвечает аналогичным образом.

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

Может кто сталкивался с подобным? Пример ошибки в логах:

Код
03.09.2018 16:33:08--Отправка запроса на авторизацию.
03.09.2018 16:33:08--Отправка запроса на инициализацию, для определения версии обмена данных.
03.09.2018 16:33:08--Процес выполнения обмена: Распаковка архива завершена.
03.09.2018 16:33:08--Процес выполнения обмена: Временные таблицы удалены.
03.09.2018 16:33:08--Процес выполнения обмена: Временные таблицы созданы.
03.09.2018 16:33:11--Процес выполнения обмена: Файл импорта прочитан.
03.09.2018 16:33:11--Процес выполнения обмена: Временные таблицы проиндексированы.
03.09.2018 16:33:11--Процес выполнения обмена: Метаданные импортированы успешно.
03.09.2018 16:33:11--Процес выполнения обмена: Группы импортированы.
03.09.2018 16:33:11--Процес выполнения обмена: Деактивация/удаление групп завершено.
03.09.2018 16:33:14--rests___1701f10a-3c88-428f-94c8-41ef35801b1d.xml: Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.
Ответ сервера: 
<br><font color=#ff0000>MySQL Query Error: INS ERT IN TO b_xml_tree (PARENT_ID, LEFT_MARGIN, RIGHT_MARGIN, DEPTH_LEVEL, NAME) VALUES (0, 4640, 0, 0, '')</font>[[1146] Table 'sv22.b_xml_tree' doesn't exist]<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>
                  <fo rm method="post" action="/bitrix/admin/site_checker.php?tabControl_active_tab=edit5#edit5">
                                          <input type="hidden" name="last_error_query" val ue="File: /var/www/www-root/data/www/sv22.ru/bitrix/modules/main/include/dbquery_error.php
Query: INS ERT IN TO b_xml_tree (PARENT_ID, LEFT_MARGIN, RIGHT_MARGIN, DEPTH_LEVEL, NAME) VALUES (0, 4640, 0, 0, '')
[[1146] Table 'sv22.b_xml_tree' doesn't exist]
debug_backtrace:
Array
(
    [0] => Array
        (
            [file] => /var/www/www-root/data/www/sv22.ru/bitrix/modules/main/classes/mysql/database.php
            [line] => 194
            [class] => 
            [function] => include
            [args] => Array
                (
                    [0] => /var/www/www-root/data/www/sv22.ru/bitrix/modules/main/include/dbquery_error.php
                )

        )

    [1] => Array
        (
            [file] => /var/www/www-root/data/www/sv22.ru/bitrix/modules/iblock/classes/mysql/cml2.php
            [line] => 255
            [class] => CDatabaseMysql
            [function] => Query
            [args] => 
        )
 

Бывает с тестовой базы продолжает обмен работать.

А ещё можно попробовать удалить файлы таблицы и запустить обмен. Бывает файл таблицы отсутствует, а файл индекса остается, что mysql считает некорректной ситуацией и не дает создать файл таблицы.

 

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

 

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

Заглянувший

Сообщений: 30
Баллов: 1
Регистрация: 25.04.2015

#4

04.09.2018 09:34:01

Цитата
baltika написал:
В момент запуска обмена другие регламентные задания с сайтом не выполняются?

У нас из заданий с сайтом только обмен товарами. Могли бы вы привести пример? Я бы тогда обратилась к 1С-нику проверить эти моменты.

 

Администратор

Сообщений: 9036
Баллов: 1747
Регистрация: 05.08.2005

Epic fail — сказать «это так просто» и не суметь сделать

На кроне или на агентах нет ЛЮБОГО xml-импорта модуля инфоблоков? Не с 1С, а вообще?

Не надо сверлить зубы через задний проход дрелью от Сваровски

 

Есть импорт в Я.Маркет с сайта. Скрин

http://joxi.ru/a2XWYZkt1VP6Wm

 

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

Заглянувший

Сообщений: 30
Баллов: 1
Регистрация: 25.04.2015

#7

05.09.2018 07:16:51

Цитата
Алексей Беспалов написал:
Бывает с тестовой базы продолжает обмен работать.

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

Цитата
Алексей Беспалов написал:
А ещё можно попробовать удалить файлы таблицы и запустить обмен. Бывает файл таблицы отсутствует, а файл индекса остается, что mysql считает некорректной ситуацией и не дает создать файл таблицы.

За мониторингом этого варианта к хостерам обращаться? Они могут ответить остается ли индекс при отсутствующей таблице? или это к программистам по сайту?

 

Если точно не работает обмен из тестовой конечно снимается.

Можно к хостерам обратится или самим подключится к серверу по SSH или FTP и посмотреть.

 

Евгений Жуков

Администратор

Сообщений: 9036
Баллов: 1747
Регистрация: 05.08.2005

Epic fail — сказать «это так просто» и не суметь сделать

#9

05.09.2018 09:32:35

Цитата
Татьяна Гладкая написал:
Есть импорт в Я.Маркет с сайта

Нет, я спрашивал про xml-импорт НА сайт. Либо искать вызовы метода CIBlockCMLImport::DropTemporaryTables

Не надо сверлить зубы через задний проход дрелью от Сваровски

 

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

Заглянувший

Сообщений: 30
Баллов: 1
Регистрация: 25.04.2015

#10

05.09.2018 09:46:02

Цитата
Евгений Жуков написал:
Нет, я спрашивал про xml-импорт НА сайт.

На сайт еще из 1С выгружаются статусы талонов по ремонту оборудования. Но они выгружаются через Highload-блоки и никак не связаны с товарами. Так же они льются в тойже выгрузке: сначала выгружаются товары, затем талоны на ремонт. исключительно последовательно. Это может повлиять?

 

Администратор

Сообщений: 9036
Баллов: 1747
Регистрация: 05.08.2005

Epic fail — сказать «это так просто» и не суметь сделать

Если последовательно, то нет. Вообще проблема строго регулярная или эпизодическая?

Не надо сверлить зубы через задний проход дрелью от Сваровски

 

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

Заглянувший

Сообщений: 30
Баллов: 1
Регистрация: 25.04.2015

#12

05.09.2018 10:16:10

Цитата
Евгений Жуков написал:
проблема строго регулярная или эпизодическая?

Периодическая. При чем не предсказуемо периодическая! Я даже сопоставить не могу с чем это может быть связано. Может пару недель не быть ошибок, потом каждый день. Может в одной выгрузке из пяти за день ошибка. А может все выгрузки с ошибками.  

 

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

Эксперт

Сообщений: 273
Баллов: 46
Регистрация: 08.07.2016

#13

05.09.2018 10:16:33

Цитата
Татьяна Гладкая написал:
На сайт еще из 1С выгружаются статусы талонов по ремонту оборудования. Но они выгружаются через Highload-блоки и никак не связаны с товарами. Так же они льются в тойже выгрузке: сначала выгружаются товары, затем талоны на ремонт. исключительно последовательно. Это может повлиять?

Конечно. Не вожно связаны обмен с товарами или нет. Как я понял b_xml_tree это служебная таблица в которую кешируется загрузка… Вобщем она участвует в обмене так или иначе.

 

Евгений Жуков

Администратор

Сообщений: 9036
Баллов: 1747
Регистрация: 05.08.2005

Epic fail — сказать «это так просто» и не суметь сделать

#14

05.09.2018 12:23:12

Цитата
Татьяна Гладкая написал:
Периодическая. При чем не предсказуемо периодическая!

Тогда только ставить отладку с трассировкой и ждать ошибки.

Не надо сверлить зубы через задний проход дрелью от Сваровски

 

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

Заглянувший

Сообщений: 30
Баллов: 1
Регистрация: 25.04.2015

#15

05.09.2018 12:37:27

Цитата
Евгений Жуков написал:
ставить отладку с трассировкой и ждать ошибки

на стороне 1С это делается?

Битрикс мне написал: «Поставьте прокси-сервер fiddler (

http://www.fiddler2.com/fiddler2/

) на компьютер с 1C с которого производится выгрузка.
Откройте fiddler и включите логирование трафика по https —  Tools > Fiddler Options > HTTPS > Decrypt HTTPS traffic option, если ваш сайт работает по протоколу https. После запустите выгрузку. При этом ваши хиты отобразятся в fiddler, сохраните сессию из fiddler в формате saz и приложите её к обращению.»

Вы тоже об этом?

 
Татьяна Гладкая

Нашли какоето решение? такаяже проблема

 

Евгений Жуков

Администратор

Сообщений: 9036
Баллов: 1747
Регистрация: 05.08.2005

Epic fail — сказать «это так просто» и не суметь сделать

#17

14.12.2018 14:52:47

Цитата
Юра Козлов написал:
Татьяна Гладкая
Нашли какоето решение? такаяже проблема

А версия iblock и catalog какая?

Не надо сверлить зубы через задний проход дрелью от Сваровски

 

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

Заглянувший

Сообщений: 30
Баллов: 1
Регистрация: 25.04.2015

#18

17.12.2018 08:35:18

Цитата
Юра Козлов написал:
Нашли какоето решение? такаяже проблема

Добрый день! Да, методом наблюдения поняла.

Суть действительно та: две параллельные выгрузки одновременно. Как это получалось:
1. Исходно в 1С стоит выгрузка ИЗМЕНЕНИЙ. Затем я меняю на «ПОЛНАЯ ВЫГРУЗКА»

http://joxi.ru/823L8x3iJM1EdA

и нажимаю «Записать». При перезаписи узла обмена на полную выгрузку, как оказалось, эта полная выгрузка запускалась в фоновом режиме. А я, не зная этого, запускала ее кнопкой «Выполнить обмен». Получалось две параллельные выгрузки.
2. Это когда 1С-ник вносил какие-то изменния в конфигурацию 1с или его работы как-то затрагивали изменение или пересохранение узла обмена. Обмен автоматом запускался в фоном режиме. Если я, в это время запускала сама, опять получалось наложение выгрузок.
3. Еще один возможный вариант это когда стоит выгрузка по расписанию, но человек не зная этого или забыв, заходит и запускает сам выгрузку. У нас такого варианта не было. Но тоже может стать причиной наложения выгрузок.

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

 

такая же проблема, что делать если у меня на одной лицензии 3 сайта и три разные выгрузки? идут по 30-40 минут, запускаются раз в час

 

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

Эксперт

Сообщений: 273
Баллов: 46
Регистрация: 08.07.2016

#20

28.02.2020 06:42:50

Цитата
Афанасий Павлов написал:
такая же проблема, что делать если у меня на одной лицензии 3 сайта и три разные выгрузки? идут по 30-40 минут, запускаются раз в час

Так работать не будет.

Либо разносите обмен по времени, что не просто.

Либо делать только ночью.

Днем настроить только обмен остатками если это необходимо, он будет быстрым.

Ещё можно попробовать объединить все каталоги в один обмен. Я так не делал, но обмен позволяет.

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

Я
   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?

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

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

Друзья, всем привет! У меня возникла проблема обмена товарами с 1С и сайта. За последнюю неделю обмен завершается ошибкой. В журнале регистрации вот такое сообщение (см. ниже). Из этого сообщения я понимаю, что сайт не может принять файл обмена? Или это не так? Я начинающий, пока еще «чайник»! Помогите разобраться? Какие мои действия для устранения? А то заказы с сайта на товары идут, а их уже давно нет в наличии! Не удобно перед клиентами как то!
«Фоновый обмен
17.04.2021 17:58:02 Запуск выгрузки товаров
17.04.2021 17:58:04 Выгрузка на сайт завершилась с ошибками.
import0_1.xml: Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.
Ответ сервера:
<br><font color=#ff0000>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)
            )
         </font>[[1005] Can’t create table ‘vseres-addamant.b_xml_tree’ (errno: -1)]<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=»»/bitrix/admin/site_checker.php?tabControl_active_tab=edit5#edit5″»>
                                          <input type=»»hidden»» name=»»last_error_query»» value=»»File: /var/www/bitrix/data/www/vseresnicy.ru/bitrix/modules/main/include/dbquery_error.php
Query: 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)
            )

         [[1005] Can’t create table ‘vseres-addamant.b_xml_tree’ (errno: -1)]
debug_backtrace:
Array
(

  • =&gt; Array
            (
                [file] =&gt; /var/www/bitrix/data/www/vseresnicy.ru/bitrix/modules/main/classes/mysql/database.php
                [line] =&gt; 194
                [class] =&gt;
                [function] =&gt; include
                [args] =&gt; Array
                    (
                       
  • =&gt; /var/www/bitrix/data/www/vseresnicy.ru/bitrix/modules/main/include/dbquery_error.php
                    )

            )

        [1] =&gt; Array
            (
                [file] =&gt; /var/www/bitrix/data/www/vseresnicy.ru/bitrix/modules/main/classes/general/database.php
                [line] =&gt; 562
                [class] =&gt; CDatabaseMysql
                [function] =&gt; Query
                [args] =&gt;
            )

        [2] =&gt; Array
            (
                [file] =&gt; /var/www/bitrix/data/www/vseresnicy.ru/bitrix/modules/iblock/classes/mysql/cml2.php
                [line] =&gt; 137
                [class] =&gt; CAllDatabase
                [function] =&gt; DDL
                [args] =&gt;
            )

        [3] =&gt; Array
            (
                [file] =&gt; /var/www/bitrix/data/www/vseresnicy.ru/bitrix/modules/iblock/classes/mysql/cml2.php
                [line] =&gt; 125
                [class] =&gt; CIBlockXMLFile
                [function] =&gt; CreateTemporaryTables
                [args] =&gt;
            )

        [4] =&gt; Array
            (
                [file] =&gt; /var/www/bitrix/data/www/vseresnicy.ru/bitrix/components/bitrix/catalog.import.1c/component.php
                [line] =&gt; 362
                [class] =&gt; CIBlockXMLFile
                [function] =&gt; CreateTemporaryTables
                [args] =&gt;
            )

        [5] =&gt; Array
            (
                [file] =&gt; /var/www/bitrix/data/www/vseresnicy.ru/bitrix/modules/main/classes/general/component.php
                [line] =&gt; 551
                [class] =&gt;
                [function] =&gt; include
                [args] =&gt; Array
                    (

  • =&gt; /var/www/bitrix/data/www/vseresnicy.ru/bitrix/components/bitrix/catalog.import.1c/component.php
                    )

            )

        [6] =&gt; Array
            (
                [file] =&gt; /var/www/bitrix/data/www/vseresnicy.ru/bitrix/modules/main/classes/general/component.php
                [line] =&gt; 99
                [class] =&gt; CBitrixComponent
                [function] =&gt; __includeComponent
                [args] =&gt;
            )

        [7] =&gt; Array
            (
                [file] =&gt; /var/www/bitrix/data/www/vseresnicy.ru/bitrix/modules/main/classes/general/component.php
                [line] =&gt; 588
                [class] =&gt; CBitrixComponent
                [function] =&gt; executeComponent
                [args] =&gt;
            )

        [8] =&gt; Array
            (
                [file] =&gt; /var/www/bitrix/data/www/vseresnicy.ru/bitrix/modules/main/classes/general/main.php
                [line] =&gt; 1041
                [class] =&gt; CBitrixComponent
                [function] =&gt; includeComponent
                [args] =&gt;
            )

        [9] =&gt; Array
            (
                [file] =&gt; /var/www/bitrix/data/www/vseresnicy.ru/bitrix/components/addamant/sale.export.1c/1c_exchange.php
                [line] =&gt; 90
                [class] =&gt; CAllMain
                [function] =&gt; IncludeComponent
                [args] =&gt;
            )

        [10] =&gt; Array
            (
                [file] =&gt; /var/www/bitrix/data/www/vseresnicy.ru/bitrix/admin/1c_exchange.php
                [line] =&gt; 3
                [class] =&gt;
                [function] =&gt; require_once
                [args] =&gt; Array
                    (

  • =&gt; /var/www/bitrix/data/www/vseresnicy.ru/bitrix/components/addamant/sale.export.1c/1c_exchange.php
                    )

            )

    )

    «»>
                         <input type=»»hidden»» name=»»sessid»» id=»»sessid»» value=»»a7e1e4bec6593399cb4780cbb1f89067″» />                     <input type=»»submit»» value=»»Send error report to support»»>
                      </form>
                               </td>
             </tr>
          </table></td>
       </tr>
    </table>
    <br><br><br>

    17.04.2021 17:58:04 Завершена выгрузка товаров»

Этот короткий пост рассказывает о том, как мы боролись с ошибкой базы данных «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/

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

Понравилась статья? Поделить с друзьями:

Читайте также:

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

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

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