- Ошибки на стороне веб-сервера
- Ошибки при работе с файлами данных
- Проблемы авторизации
- Ошибки 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). |
|
Получен пустой ответ сервера. | |
Ошибка нехватки памяти, например выводится сообщение: Fatal error : Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401…). | Проверить настройку memory_limit в php.ini. Должно быть указано не менее 512Mb, увеличить значение и перезагрузить сервер. Или не изменяя настройки сервера сделать равным таймаут сервера и таймаут «1С-Битрикс: Управление сайтом» (страница Магазин > Настройки магазина > Интеграция с 1С, поле Интервал одного шага в секундах). Если проблема с нехваткой памяти, данное решение не подойдёт. |
- Подобная ошибка может маскировать либо некорректную настройку объема одной порции загружаемых данных (10К товаров за раз, например), либо логическую ошибку в программном коде (например, пересчет каких-нибудь значений в товарах по событию изменения).
Способы решения:
- уменьшать объем передаваемых за раз данных (проверить на 1 товаре, но лучше выставлять значение поочередно, 1, 100, 1000, 10000 и смотреть, какое значение оптимально для ваших настроек);
- временно закомментировать обработчики событий в файле /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 обмена.
Это штатная функция, которая уже давно присутствует начиная с версии программных продуктов «1С:Предприятие 8.1», редакция Управление торговлей (версия 10.3.4) и «1С-Битрикс: Управление сайтом» версии 6.5, в редакциях Малый бизнес, Бизнес и Большой бизнес.
Торговля в интернете не имеет никаких отличий от обычного ритейла в плане ведения бухгалтерской отчетности. В связи с этим возникает вопрос согласования продаж через интернет-магазин и проводки их по системе учета «1С». Для «1С-Битрикс: Управление сайтом» интеграция с «1С» – не проблема. Это штатная функция, которая уже давно присутствует начиная с версии продуктов «1С:Предприятие 8.1», редакция Управление торговлей (версия 10.3.4) и «1С-Битрикс: Управление сайтом» версии 6.5, в редакциях Малый бизнес, Бизнес и Большой бизнес.
Несмотря на существующую документацию по продукту, у многих разработчиков сайтов возникают сложности с обменом данными в этих двух программах. Сложности интеграции бывают разные. Рассмотрим некоторые, самые типовые, которые возникают у многих пользователей.
Типовые проблемы можно сгруппировать примерно таким образом:
- Ошибки с производительностью на стороне сервера
- Ошибки при работе с файлами данных
- Проблемы авторизации
- Ошибки MySQL
- Логические ошибки
Начнем по порядку.
Ошибки на стороне сервера
Ошибки на стороне сервера происходят в силу целого ряда причин, но общее у них то, что виноваты не столько настройки программ «1С-Битрикс: Управление сайтом» или «1С:Предприятие«, сколько настройки сервера или проблемы в линиях связи. В основном они «лечатся» соответствующей настройкой серверного оборудования и программного обеспечения. И только при невозможности этого – путем единовременного снижения объемов выгрузки. Для решения большинства этих проблем вам не избежать обращения к службе технической поддержки хостинговой компании, где размещен ваш сайт.
Наиболее частые проявления этих ошибок:
- Ошибка работы с Интернет, выводится сообщение: failed sending data to the peer (no headers, no data);
- Получен пустой ответ сервера;
- Ошибки 502, 500 или ошибка 404 уже в процессе обмена;
- Ошибка нехватки памяти, например выводится сообщение: Fatal error : Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401…)
- Не удалось получить текущее состояние процесса обмена. Данные обмена отправлены, но не загружены.
Общие методы решения – это изменение настроек сервера. Во-первых, можно увеличить лимит времени и памяти в настройках PHP.
- Откройте для редактирования файл php.ini.oci, расположенный в папке /apache.
- Найдите в файле группу параметров Resource Limits.
- Увеличьте значения параметров max_execution_time и memory_limit.
- Перезагрузите сервер.
Во-вторых, часто помогает увеличение таймаута сервера. С этим лучше обратиться к хостеру, так как у вас, скорее всего, не будет на это прав доступа. Но если есть возможность сделать это самому, то нужно произвести следующую последовательность действий:
- Откройте для редактирования файл httpd.conf, размещенный в папке /apache/conf/
- Измените значение параметра Timeout.
- Перезагрузите сервер.
Другой вариант решения этой проблемы (если хостер не соглашается на увеличение таймаута) — сделать равным таймаут сервера и таймаут «1С-Битрикс: Управление сайтом» (страница Магазин > Настройки магазина > Интеграция с 1С, поле Интервал одного шага в секундах). В этом случае пошаговое выполнение будет идти синхронно.
Если указанные меры не помогли или указанные параметры невозможно изменить, то, в крайнем случае, можно сделать следующее:
Наконец, можно уменьшить объем выгрузки товаров за 1 раз. Настройте фильтр по номенклатуре на стороне «1С»:
- Запустите мастер настройки обмена данными (Сервисы > Обмен данными с WEB-сайтом > Настроить обмен данными с WEB-сайтом)
- На первом шаге мастера выберите Изменить существующую настройку обмена данными и нажмите кнопку Далее.
- Выберите настройку для редактирования и дважды кликните по ней.
- В закладке Выгрузка товаров (Или Обмен заказами, в зависимости от ситуации) измените значения фильтра.
- Сохраните изменения и повторите синхронизацию.
Ошибки при работе с файлами данных
Ошибки при работе с файлами вызваны в основном неправильной настройкой прав доступа к файлам. Типовые сообщения при этом выглядят следующим образом: «Ошибка открытия файла» и «Ошибка записи файла». Способы решения проблемы, естественно, — настройка прав доступа на уровне операционной системы.
Обратим внимание на фразу «на уровне операционной системы». Права на уровне «1С-Битрикс: Управление сайтом», как правило, выставлены всегда правильно. Тем не менее, проверить права на осуществление импорта/экспорта не помешает. Делается это на странице Магазин > Настройки магазина > Интеграция с 1С.
Наиболее вероятные причины:
- У пользователя, от которого ведется обмен данными, нет прав на запись в папку /upload .
- Файл создается с правами, которые не позволяют чтение файла.
- Файл также может быть передан на сервер в zip-архиве, но по определённым причинам не удалось распаковать архив, например, некорректно работает функция zip_open на сервере.
Решения данных проблем довольно просты и понятны из самих проблем и решаются обращением к хостеру, который установит нужные права.
Выставление корректных прав на создаваемые файлы в рамках «1С-Битрикс: Управление сайтом» производится следующим образом:
- Откройте для редактирования файл dbconn.php из папки /bitrix/ php_interface.
- В строке define(«BX_FILE_PERMISSIONS», 0644); установите значения, которые порекомендовал хостер вместо 0644 выставленных по умолчанию.
Точно также нужно проверить выставить права на создаваемые папки. Только это делается уже в строке define(«BX_DIR_PERMISSIONS», 0755);.
Вот так выглядит проверка наличия расширения ZIP в настройках PHP:
- Откройте в браузере страницу http://<ваш_сайт>//bitrix/admin/phpinfo.php. (Либо выполните команду if (exist_function (“zip_open”)) echo “OK”;). В браузере отобразится таблица:
Таблица свойств PHP - В области ZIP посмотрите настройки. Для строки ZIP должно стоять «enabled».
Заметим, что ошибки при работе с файлами данных могут возникать и из-за того, что на компьютере, где установлена учетная система от 1С, имеется файрволл или антивирус, препятствующий корректной передаче файла или блокирующий отправку файла на сервер.
Проблемы авторизации
1С не может пройти процедуру аутентификации на сайт и в этой связи выдается ошибка. Вызвано это, как правило, неверной настройкой «1С-Битрикс: Управление сайтом».
«1С» может получать некорректный ответ при попытке авторизации на сайте. Это может быть ошибкой разработчика вашего сайта. Дело в том, что при авторизации первой строчкой ответа «1С» ждет «success». Но в ходе создания сайта разработчики могли в процессе разработки случайно оставить вывод в файлах тестовые строки.
Например, в файле /bitrix/php_interface/init.php или /bitrix/php_interface/dbconn.php и др.
Таким образом, 1С может получить ответ не «success», а «testsuccess» хотя данный авторизации отправлены корректные.
Другая типичная ошибка состоит в правах доступа на импорт каталога. Авторизация может не производиться, если пользователь, проводящий импорт, не обладает достаточным уровнем прав. Проверить это можно на странице Магазин > Настройки магазина > Интеграция с 1С.
Перейдите на указанную страницу и произведите следующие действия:
- В поле Разрешить загрузку группам пользователей посмотрите, каким пользователям разрешен импорт/экспорт данных.
- В зависимости от вашей конкретной ситуации или измените права доступа на импорт для нужных групп или включите нужного пользователя в группу, которой разрешен импорт из «1С».
Но в авторизации могут возникать и особые ошибки. Например, при работе PHP в режиме CGI. Это характерно для сайтов, размещенных на Windows-серверах. Можно это проверить с помощью файла test.php, как мы это делали при проверке свойств ZIP. В свойства сервера Apache в строке Server API в таком случае стоит CGI. Можно попытаться обойти эту проблему, а если не получится, то целесообразно обратиться в техподдержку хостинга.
Для «обхода» проблемы необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite. Выполните следующие действия:
- В корне сайта в файл .htaccess добавьте строки:
RewriteEngine on
RewriteRule .* — [E=REMOTE_USER:%{HTTP:Authorization},L] - Закоментируйте следующие строки в файле .htaccess папки bitrix/admin/, которые отключают mod_rewrite:
#
# RewriteEngine Off
#
- В файл dbconn.php папки bitrix/php_interface/ добавьте строки:
$remote_user = $_SERVER[«REMOTE_USER»]
? $_SERVER[«REMOTE_USER»] : $_SERVER[«REDIRECT_REMOTE_USER»];
$strTmp = base64_decode(substr($remote_user,6));
if ($strTmp)
list($_SERVER[‘PHP_AUTH_USER’], $_SERVER[‘PHP_AUTH_PW’]) = explode(‘:’, $strTmp);
Ошибки MySQL
Ошибки базы данных могут иметь много причин, равно как и решений. Самые очевидные из них сводятся к следующим:
- Выводится сообщение: Lost connection to MySQL server during query. Ошибка, скорее всего здесь в таймауте.
Возможное решение проблемы: $DB->Query(«SET wait_timeout=28800»);
Если это не помогает, то необходимо обратиться к службе поддержки хостинговой компании для увеличения таймаута.
- Конфликт кодировок. Например, выводится сообщение:
[Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE) for operation ‘=’]
Причиной является то, что таблицы базы данных в одной кодировке, а сам база в другой. В данном случае база в latin1 и новые таблицы создаются в latin1. При выгрузке из «1С» создается временная таблица b_xml_tree в «некорректной» кодировке latin1.
Решение простое и понятное: смена кодировки базы на корректную. Для решения этой проблемы нужно обратиться к хостеру.
Логические ошибки
Логические ошибки происходят, если пользователем неверно понимается процесс обмена данными и, соответственно, им неверно выполняются какие-то действия.
Наиболее частая ошибка при выгрузке каталога товаров появляется вместе сообщением: «Изменения товаров не зарегистрированы. Выгрузка товаров не произведена». Как правило, в этом случае неверно настроен фильтр товаров. Нужно проверить эти настройки. Как правило, там выбраны параметры, которые не позволяют правильно отфильтровать параметры для выгрузки.
Но, бывают ситуации, когда такое сообщение – нормальная ситуация. Это происходит в случае, если в настройках Режима обмена данными с WEB-сайтом установлено: Выгружать только измененные объекты с момента последнего обмена.
Другая ошибка при выгрузке каталога товаров — сообщение: «Не удалось найти вид номенклатуры». Эта ошибка возникает, если в «1С» нет видов «Услуга» и «Товар». Эти типы критичны для процесса обмена данными с сайтом. Решение проблемы – создать в «1С» указанные виды номенклатуры.
Если в процессе обмена возникает ошибка: «Поле объекта не обнаружено», то это означает, что не установлены соответствия для полей заказа в «1С-Битрикс: Управление сайтом». Проверьте настройки, заданные в закладке Экспорт в «1С:Предприятие» страницы Настройки > Настройки продукта > Настройки модулей > Интернет-магазин. Поля «Полное Название» и «Название» критичны для 1С., то есть без задачи соответствия этих полей экспорт выполняться не будет. Обратите внимание, что настройка соответствий производится отдельно для разных типов плательщиков.
Резюме
Экспорт/импорт товаров и заказов в связке «1С-Битрикс: Управление сайтом» и «1С:Предприятие» позволяет решить проблемы синхронизации данных на сайте и в системе учета. Как и в работе любой другой сложной системы, в этой «связке» могут возникать проблемы и неточности. Однако все они решаемы. Купить Битрикс можно у партнеров 1Софт.
Роберт Басыров
Все права защищены. По вопросам использования статьи обращайтесь к администраторам сайта
Нельзя просто взять и интегрировать сайт с 1С. (с) Народное творчество.
Цель написания поста – изложить всю информацию по теме человеческим языком.
Интеграция сайта на 1С-Битрикс: Управление сайтом и 1С — неисчерпаемый источник вопросов и проблем. На сайте идей для Битрикс в соответствующем разделе 16 страниц, на форуме про это больше 23 000 сообщений. В форме обращения в техподдержку Битрикса есть даже отдельный тип заявки «Обмен с 1С».
Считается, что интеграция 1С и сайта на Битриксе должна работать из коробки. Самые простые функции действительно можно запустить за час-два. А вот на доработку обмена можно потратить и 10, и 100 часов.
Доработка обмена сайта и 1С — это уже магия уровня «эксперт», пугает даже бородатого опытного разработчика. В этой статье мы поговорим о том, как происходит обмен данными между этими двумя монстрами и как можно расширять возможности этого обмена. Статья содержит множество технических деталей обмена и будет полезна в основном программистам, которые хотят разобраться в предмете.
В данной статье будет рассмотрена общая теория обмена между двумя IT-системами и два стандартных обмена между 1С и сайтом на 1С-Битрикс: обмен товарами и обмен справочниками.
Таблица свойств PHP
Заметим, что ошибки при работе с файлами данных могут возникать и из-за того, что на компьютере, где установлена учетная система от 1С, имеется файрволл или антивирус, препятствующий корректной передаче файла или блокирующий отправку файла на сервер.
Проблемы авторизации
1С не может пройти процедуру аутентификации на сайт и в этой связи выдается ошибка. Вызвано это, как правило, неверной настройкой «1С-Битрикс: Управление сайтом».
«1С» может получать некорректный ответ при попытке авторизации на сайте. Это может быть ошибкой разработчика вашего сайта. Дело в том, что при авторизации первой строчкой ответа «1С» ждет «success». Но в ходе создания сайта разработчики могли в процессе разработки случайно оставить вывод в файлах тестовые строки.
Например, в файле /bitrix/php_interface/init.php или /bitrix/php_interface/dbconn.php и др.
Таким образом, 1С может получить ответ не «success», а «testsuccess» хотя данный авторизации отправлены корректные.
Другая типичная ошибка состоит в правах доступа на импорт каталога. Авторизация может не производиться, если пользователь, проводящий импорт, не обладает достаточным уровнем прав. Проверить это можно на странице Магазин > Настройки магазина > Интеграция с 1С.
Перейдите на указанную страницу и произведите следующие действия:
- В поле Разрешить загрузку группам пользователей посмотрите, каким пользователям разрешен импорт/экспорт данных.
- В зависимости от вашей конкретной ситуации или измените права доступа на импорт для нужных групп или включите нужного пользователя в группу, которой разрешен импорт из «1С».
Но в авторизации могут возникать и особые ошибки. Например, при работе PHP в режиме CGI. Это характерно для сайтов, размещенных на Windows-серверах. Можно это проверить с помощью файла test.php, как мы это делали при проверке свойств ZIP. В свойства сервера Apache в строке Server API в таком случае стоит CGI. Можно попытаться обойти эту проблему, а если не получится, то целесообразно обратиться в техподдержку хостинга.
Для «обхода» проблемы необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite. Выполните следующие действия:
- В корне сайта в файл .htaccess добавьте строки:
RewriteEngine on
RewriteRule .* — [E=REMOTE_USER:%{HTTP:Authorization},L] - Закоментируйте следующие строки в файле .htaccess папки bitrix/admin/, которые отключают mod_rewrite:
#
# RewriteEngine Off
#
- В файл dbconn.php папки bitrix/php_interface/ добавьте строки:
$remote_user = $_SERVER[«REMOTE_USER»]
? $_SERVER[«REMOTE_USER»] : $_SERVER[«REDIRECT_REMOTE_USER»];
$strTmp = base64_decode(substr($remote_user,6));
if ($strTmp)
list($_SERVER[‘PHP_AUTH_USER’], $_SERVER[‘PHP_AUTH_PW’]) = explode(‘:’, $strTmp);
Ошибки MySQL
Ошибки базы данных могут иметь много причин, равно как и решений. Самые очевидные из них сводятся к следующим:
- Выводится сообщение: Lost connection to MySQL server during query. Ошибка, скорее всего здесь в таймауте.
Возможное решение проблемы: $DB->Query(«SET wait_timeout=28800»);
Если это не помогает, то необходимо обратиться к службе поддержки хостинговой компании для увеличения таймаута.
- Конфликт кодировок. Например, выводится сообщение:
[Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE) for operation ‘=’]
Причиной является то, что таблицы базы данных в одной кодировке, а сам база в другой. В данном случае база в latin1 и новые таблицы создаются в latin1. При выгрузке из «1С» создается временная таблица b_xml_tree в «некорректной» кодировке latin1.
Решение простое и понятное: смена кодировки базы на корректную. Для решения этой проблемы нужно обратиться к хостеру.
Логические ошибки
Логические ошибки происходят, если пользователем неверно понимается процесс обмена данными и, соответственно, им неверно выполняются какие-то действия.
Наиболее частая ошибка при выгрузке каталога товаров появляется вместе сообщением: «Изменения товаров не зарегистрированы. Выгрузка товаров не произведена». Как правило, в этом случае неверно настроен фильтр товаров. Нужно проверить эти настройки. Как правило, там выбраны параметры, которые не позволяют правильно отфильтровать параметры для выгрузки.
Но, бывают ситуации, когда такое сообщение – нормальная ситуация. Это происходит в случае, если в настройках Режима обмена данными с WEB-сайтом установлено: Выгружать только измененные объекты с момента последнего обмена.
Другая ошибка при выгрузке каталога товаров — сообщение: «Не удалось найти вид номенклатуры». Эта ошибка возникает, если в «1С» нет видов «Услуга» и «Товар». Эти типы критичны для процесса обмена данными с сайтом. Решение проблемы – создать в «1С» указанные виды номенклатуры.
Если в процессе обмена возникает ошибка: «Поле объекта не обнаружено», то это означает, что не установлены соответствия для полей заказа в «1С-Битрикс: Управление сайтом». Проверьте настройки, заданные в закладке Экспорт в «1С:Предприятие» страницы Настройки > Настройки продукта > Настройки модулей > Интернет-магазин. Поля «Полное Название» и «Название» критичны для 1С., то есть без задачи соответствия этих полей экспорт выполняться не будет. Обратите внимание, что настройка соответствий производится отдельно для разных типов плательщиков.
Резюме
Экспорт/импорт товаров и заказов в связке «1С-Битрикс: Управление сайтом» и «1С:Предприятие» позволяет решить проблемы синхронизации данных на сайте и в системе учета. Как и в работе любой другой сложной системы, в этой «связке» могут возникать проблемы и неточности. Однако все они решаемы. Купить Битрикс можно у партнеров 1Софт.
Роберт Басыров
Все права защищены. По вопросам использования статьи обращайтесь к администраторам сайта
Нельзя просто взять и интегрировать сайт с 1С. (с) Народное творчество.
Цель написания поста – изложить всю информацию по теме человеческим языком.
Интеграция сайта на 1С-Битрикс: Управление сайтом и 1С — неисчерпаемый источник вопросов и проблем. На сайте идей для Битрикс в соответствующем разделе 16 страниц, на форуме про это больше 23 000 сообщений. В форме обращения в техподдержку Битрикса есть даже отдельный тип заявки «Обмен с 1С».
Считается, что интеграция 1С и сайта на Битриксе должна работать из коробки. Самые простые функции действительно можно запустить за час-два. А вот на доработку обмена можно потратить и 10, и 100 часов.
Доработка обмена сайта и 1С — это уже магия уровня «эксперт», пугает даже бородатого опытного разработчика. В этой статье мы поговорим о том, как происходит обмен данными между этими двумя монстрами и как можно расширять возможности этого обмена. Статья содержит множество технических деталей обмена и будет полезна в основном программистам, которые хотят разобраться в предмете.
В данной статье будет рассмотрена общая теория обмена между двумя IT-системами и два стандартных обмена между 1С и сайтом на 1С-Битрикс: обмен товарами и обмен справочниками.
Немного теории
Интеграция — обмен информацией между двумя IT-системами. Иногда называют просто обмен. Определяется форматом данных, протоколом (стандартом) передачи данных, алгоритмом работы
Формат = как выглядят данные (например, XML, YML, JSON, CSV).
Протокол = как данные оказываются в другом месте (например, HTTP, SIP, SMTP, FTP).
Алгоритм = что при этом происходит. Представляется блок-схемой или диаграммой UML Activity.
Примеры интеграций:
-
обмен товарами между самописной учетной системой и сайтом (протокол FTP, формат CSV);
-
парсинг курсов валюты с сайта ЦБ РФ (протокол HTTP, формат XML);
-
интеграция сайта с Яндекс.Маркет (протокол HTTP, формат YML).
Процедуру обмена можно разделить на 3 части:
-
Экспорт данных из системы А в требуемый формат
-
Передача данных
-
Импорт данных требуемого формата в систему Б.
Часто весь обмен называют «импорт» («загрузка») и «экспорт» («выгрузка»). Это не ошибка, по такой формулировкой говорящий показывает, точка зрения какой системы ему ближе. То, что для 1С экспорт товаров, для Битрикса импорт. В дальнейшем тексте статьи мы не будем использовать эти понятия, чтобы не порождать двусмысленности.
И еще одно важное уточнение. «1С» — в зависимости от контекста, это может быть компания-легенда «ООО 1С», их разработка «1С:Предприятие» или конкретная конфигурация (например, «1С: Управление торговлей» или «1С:ERP Управление предприятием») с установленным модулем обмена с сайтом . В мире веб-разработки имеется в виду как раз последнее определение. В статье будет действовать аналогичное соглашение. Так же и с сайтом на платформе 1С-Битрикс: Управление сайтом — обычно это просто «Битрикс».
Резюме
Интеграция — обмен данными между двумя системами.
Формат — как выглядят данные.
Протокол — как передаются данные.
1С — софт.
Битрикс — сайт.
Краткость — сестра.
Стандартные возможности обмена 1С и Битрикса
«Из коробки» (без доработок программиста) работают 4 типа обмена:
-
товары из 1С на сайт (тип «catalog»);
-
справочники из 1С на сайт (тип «reference»);
-
пользователей/контрагентов из 1С на сайт (тип «sale»);
-
заказы (тип «sale»):
-
из 1С на сайт;
-
из сайта в 1С.
-
Протокол
Все взаимодействия между 1С и Битриксом проводятся по HTTP, синхронно. Т.о. 1С подобна браузеру, она «открывает» специальную страницу, отправляет данные (методами POST и GET) и получает текстовый ответ. Есть даже способ имитировать выгрузку из 1С браузером (и мы часто используем этот трюк во время разработки и отладки). Подробнее про отладку мы рассказали в предыдущей статье «Типовые ошибки интеграции между 1С и 1С-Битрикс».
В терминах сетевых взаимодействий 1С — клиент, а сайт — сервер. Обращения всегда инициируются на стороне 1С. В 1С есть настройки адреса сайта, сайт про 1С не знает ничего.
Протокол синхронный. 1С отправляет следующий запрос на сайт только после получения ответа на предыдущий (или получения ошибки таймаута).
Формат
Данные передаются в двух форматах.
Первый формат — текстовый для ответов сайта на запросы из 1С. Сайт выводит в первой строке ответа «success», если завершил некую процедуру, «progress», если продолжает ее выполнять и «error» или «failure», если была ошибка. В последующих строках могут быть дополнительные данные (зависит от каждого конкретного запроса).
Второй формат — CommerceML 2 . Основан на XML, в этом формате передаются товары, предложения, цены, склады, заказы и контрагенты (пользователи+платежные профили).
Алгоритм
Подготовка к обмену
Выше мы уже сказали, что протокол обмена — синхронный HTTP. Все перечисленные типы обмена подразумевают выполнение нескольких запросов (шагов обмена) друг за другом. Первые два шага одинаковы для любого типа обмена, различия начинаются дальше
Авторизация
Запрос |
|
GET-параметры: |
type=<тип обмена> |
mode=checkauth |
|
Basic access логин: |
Логин сайта из настроек 1С |
Basic access пароль: |
Пароль сайта из настроек 1С |
Ответ |
|
Если успех: |
success <имя Cookie авторизации> <значение Cookie авторизации> sessid=<ID сессии> <параметр1>=<значение1> <параметр2>=<значение2> … |
Если ошибка: |
failure <текст ошибки> |
Любой обмен начинается с авторизации 1С на сайте методом Basic access. В случае успеха сайт выводит «success», имя и значение Cookie (которую будет проверять во всех последующих запросах), id сессии и прочие параметры (зависят от type — типа обмена).
Возможные ошибки
Текст ошибки |
Что делать |
Ошибка авторизации. Неверное имя пользователя или пароль. |
Проверить логин и пароль в Битрикс |
У Вас нет прав для импорта каталога. Проверьте настройки компонента импорта. |
Проверить права пользователя в Битрикс |
Ошибка проверки источника запроса. Обновите модуль обмена или отключите проверку в настройках компонента |
Обновить модуль обмена в 1С или выполнить php-код на сайте: COption::SetOptionString(«catalog», «DEFAULT_SKIP_SOURCE_CHECK», «Y»); COption::SetOptionString(«sale», «secure_1c_exchange», «N»); |
Модуль Информационных блоков не установлен. |
Проверить модуль iblock в Битрикс. Должен быть скачан и установлен |
Включена смена идентификатора сессий. В файле подключения компонента обмена, до подключения пролога определите константу BX_SESSION_ID_CHANGE: define(‘BX_SESSION_ID_CHANGE’, false); |
Выполнить предложенное действие |
Время на сервере базы данных отличается от времени на веб-сервере больше, чем на 10 минут. Вероятно неправильно настроены временные зоны. Выполните настройку и повторите обмен. |
Проверить настройку часовых поясов на веб-сервере и на сервере БД |
Запрос настроек сайта
Запрос |
|
GET-параметры: |
type=<тип обмена> |
mode=init |
|
sessid=<ID сессии> |
|
Cookie: |
<имя Cookie авторизации>=<значение Cookie авторизации> |
Ответ |
|
Если успех: |
zip=<yes|no> file_limit=<число> |
На этом шаге 1С узнает важные для обмена настройки сайта. Управление этими параметрами на сайте происходит на странице «Интеграция с 1С» в панели управления сайтом.
Параметр |
Назначение |
Возможные значения |
zip |
Сайт умеет распаковывать zip-архивы. Если yes — 1С будет загружать файлы обмена в архивах, что сильно экономит время и трафик. |
yes no |
file_limit |
Максимально допустимый размер файла в байтах для передачи за один HTTP-запрос. Если системе 1С понадобится передать файл большего размера, они будут разбиты на несколько частей. |
целое число >= 0 |
Получив эти параметры, 1С начинает формирование данных для передачи на сайт. Если «zip=yes», то все файлы будут переданы как zip-архив. Иначе каждый выгружается по отдельности. Желательно включать всегда.
Возможные ошибки
Текст ошибки |
Что делать |
Ошибка инициализации временного каталога |
При создании каталога для хранения файлов выгрузки произошла ошибка. Проверить права и путь для хранения файлов или закончилось место на диске. По умолчанию сайт складывает файлы в папку /upload/1c_catalog/. |
Обмен товарами (1С -> Битрикс)
Данный тип обмена (type=catalog) используется для создания и обновления на сайте следующих сущностей:
-
инфоблок товаров;
-
UF-поля разделов в этом инфоблоке;
-
свойства элементов в этом инфоблоке;
-
инфоблок SKU;
-
типы цен;
-
склады;
-
разделы в инфоблоке товаров;
-
элементы в инфоблоке товаров (товары);
-
цены товаров;
-
наличие товаров по складам.
При обмене товарами 1С формирует XML-файлы, передает их на сайт и контролирует их обработку сайтом. 1С может передать 4 вида файлов:
В файлах с префиксом import_ — разделы каталога, товары, свойства товаров.
В файлах с префиксом offers_ — SKU.
В файлах с префиксом prices_ — цены товаров и предложений.
В файлах с префиксом rests_ — остатки товаров и предложений по складам.
На шаге авторизации в случае успеха сервер вернет дополнительный параметр timestamp (текущее время). 1С сохранит timestamp и передаст на сайт на последнем шаге обмена товарами.
Шаг 1. Передача файла (повторяющийся)
Запрос |
|
GET-параметры: |
type=catalog |
mode=file |
|
sessid=<ID сессии> |
|
filename=<имя файла> |
|
POST: |
Содержимое файла в виде строки |
Cookie: |
<имя Cookie>=<значение Cookie> |
Ответ |
|
Если успех: |
success |
Если ошибка: |
failure <текст ошибки> |
Шаг может выполняется несколько раз. Каждый файл выгружается частями не более file_limit байт (см. предыдущий шаг) в бинарном виде через сырой POST-запрос. Сайт создает файл, если его нет. Имя файла берет из GET-параметра filename и дописывает в него переданный контент. Так продолжается до тех пор, пока 1С не передаст все части этого файла.
Возможные ошибки
Текст ошибки |
Что делать |
Ошибка чтения HTTP данных |
Проверить сетевое соединение между сайтом и 1С. |
Ошибка открытия файла <имя файла> для записи |
Проверить права на файл и папку файла у пользователя apache, под которым работает Битрикс. |
Ошибка записи в файл <имя файла> |
Проверить права на файл и папку файла у пользователя apache, под которым работает Битрикс. |
Шаг 2. Основной
Запрос |
|
GET-параметры: |
type=<тип обмена> |
mode=import |
|
sessid=<ID сессии> |
|
filename=<имя файла> |
|
Cookie: |
<имя Cookie>=<значение Cookie> |
Ответ |
|
Если импорт завершен: |
success |
Если импорт продолжается: |
progress <текущий статус> |
Если ошибка: |
failure <текст ошибки> |
Этот шаг — особенный. Файл уже целиком загружен на сайт и Битрикс готов его обработать. Его обработка может состоять из 11 более мелких операций, о которых 1С ничего не знает. Поэтому в параметре GET приходит mode=import (один и тот же запрос!), но сайт выполняет совершенно разные операции. Текущий прогресс Битрикс сохраняет в сессии в переменной $_SESSION[BX_CML2_IMPORT][NS]. Например, узел STEP в этом массиве отвечает как раз за номер внутренней операции импорта.
Шаг 2.1 Распаковка архива (повторяющийся, необязательный)
Ответ |
|
Если файл распакован: |
progress Идет распаковка архива |
Если файл распаковывается: |
progress Распаковка архива завершена |
Если ошибка: |
failure <текст ошибки> |
Шаг исполняется, только если 1С передала файл в формате ZIP. Распаковка происходит в той же директории, где лежат все файлы обмена товарами (по умолчанию — /upload/1c_catalog/). Эта операция не нумеруется внутри Битрикса (значение STEP в сессии не изменяется).
Возможные ошибки
Текст ошибки |
Что делать |
Ошибка распаковки архива |
Проверьте работоспособность функции PHP zip_open и расширение Zip . Если все корректно — скачайте архив с сайта и проверьте его корректность вручную. |
Шаг 2.2 Удаление временных таблиц
Ответ |
|
Если успех: |
progress Временные таблицы удалены |
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
STEP |
0 |
Работать напрямую с файлом XML (тем более, если он большой) неудобно и неэффективно. Поэтому все данные прочитываются во временную таблицу b_xml_tree. На этом подготовительном шаге таблица b_xml_tree, если она существует, удаляется.
Шаг 2.3 Создание временных таблиц
Ответ |
|
Если успех: |
progress Временные таблицы созданы |
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
STEP |
1 |
Таблица b_xml_tree создается. Если объявлена PHP константа BX_XML_CREATE_INDEXES_IMMEDIATELY, таблица сразу же индексируется. В конце этого шага Битрикс испускает событие OnBeforeCatalogImport1C .
Возможные ошибки
Текст ошибки |
Что делать |
Ошибка создания временных таблиц |
Проверить права и подключение СУБД. |
Шаг 2.4 Загрузка файла во временную таблицу (повторяющийся)
Ответ |
|
Если файл читается: |
progress Обработано <число>% файла |
Если файл прочитан: |
progress Файл импорта прочитан |
Если ошибка: |
failure <текст ошибки> |
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
STEP |
2 |
Битрикс шаг за шагом начинает читать переданный из 1С файл, добавляя записи в таблицу b_xml_tree. Чтобы избежать проблем с временем исполнения, процесс происходит пошагово. Управление продолжительностью шага происходит на странице «Интеграция с 1С» в панели управления сайтом.
Возможные ошибки
Текст ошибки |
Что делать |
Ошибка открытия файла импорта |
Проверить доступ к файлу |
Шаг 2.5 Индексация временных таблиц
Ответ |
|
Если успех: |
progress Временные таблицы проиндексированы |
Если ошибка: |
failure <текст ошибки> |
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
STEP |
3 |
Для повышения скорости работы импорта таблица b_xml_tree индексируется после прочтения файла.
Возможные ошибки
Текст ошибки |
Что делать |
Ошибка создания индекса для временных таблиц |
Возможная причина: проблемы с СУБД, правами в ней или подключением. |
Шаг 2.6 Импорт метаданных
Ответ |
|
Если успех: |
progress Метаданные импортированы успешно |
Если ошибка: |
failure Ошибка импорта метаданных <текст ошибки> |
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
STEP |
4 |
На этом шаге создаются или обновляются следующие данные:
-
Инфоблоки товаров и SKU
-
Служебные свойства каталога (с префиксом CML2_: CML2_BAR_CODE, CML2_ARTICLE, CML2_ATTRIBUTES…)
-
Торговый каталог
-
Свойства инфоблоков
-
UF-поля разделов инфоблоков
-
Типы цен
-
Склады
-
Единицы измерения
Важно: никакие сущности при импорте метаданных не удаляются. Случайно выгруженный из 1С склад или тип цены остается на сайте, пока администратор не удалит его вручную.
Возможные ошибки
Текст ошибки |
Что делать |
Отсутствует модуль «Торговый каталог». Импорт торговых предложений и цен невозможен |
Пояснения не требуются |
Ошибка создания типа информационных блоков |
После этого сообщения следует текст ошибки API, который пояснит причину ошибки. |
Ошибка добавления новой единицы измерения (код единицы: <код>) |
Текст ошибки Битрикс не выведет, необходимо разобрать XML файл самостоятельно и найти причину ошибки. |
Количество импортированных складов превышает разрешенное для данной редакции |
Пояснения не требуются |
Ошибка импорта пользовательского свойства (xml_id: <код>) |
Проверить параметры пользовательского свойства |
Название справочника должно начинаться с буквы и состоять только из латинских букв и цифр. |
Пояснения не требуются |
В выгрузке настроены цены с одинаковым названием. Продолжение обмена невозможно. |
Пояснения не требуются |
В редакции Малый Бизнес нет возможности иметь более одного типа цены. Настройте выгрузку из 1С или перейдите на другую редакцию БУС. |
Пояснения не требуются |
Шаг 2.7 Импорт разделов каталога
Ответ |
|
Если успех: |
progress Группы импортированы |
Если ошибка: |
failure Ошибка импорта метаданных <текст ошибки> |
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
STEP |
5 |
На этом шаге в инфоблоке создаются и обновляются все разделы каталога, которые были в XML файле. Сопоставление разделов из XML-файла и в БД происходит по XML_ID.
Если на сайте нет раздела с XML_ID из файла, он создается. Если есть, то выполняется сравнение полей из XML файла с аналогичными полями в БД. Если изменения нет, то Битрикс только обновляет поле TIMESTAMP_X и пропускает раздел. Если изменения есть — происходит полноценное обновление. Это происходит независимо от настроек сайта.
Для экономии ресурсов сервера добавление разделов происходит без пересчета дерева (речь о полях LEFT_MARGIN и RIGHT_MARGIN).
Возможные ошибки
Так как импорт разделов не пошаговый, при обмене большом дереве разделов на сайте может возникать ошибка превышения времени исполнения. Решения три.
-
Увеличить время исполнения на странице «Интеграция с 1С» и в настройках сервера (nginx).
-
Доработать 1С, чтобы ошибки на этом этапе игнорировались пока не будет получен ответ «progress».
-
Повторить всю выгрузку несколько раз.
Объясним, как поможет повтор шага или всей выгрузки. Допустим, в XML-файле и на сайте 20001 раздел. Пусть за один проход Битрикс успевает импортировать только 10000 разделов.
№ Обмена/шага |
Пропущено т.к. нет изменений |
Обработано |
Ответ |
1 |
0 |
10000 |
Ошибка сервера |
2 |
10000 |
10000 |
Ошибка сервера |
3 |
20000 |
1 |
progress Группы импортированы |
Битрикс каждый раз обрабатывает столько разделов, сколько успевает. При повторении выгрузки первые 10000 разделов он пропустит (обновит только TIMESTAMP_X) и обновит еще 10000 разделов, пока не наступил тайм-аут. И только на 3-ей выгрузке из 1С шаг будет завершен корректно.
Шаг 2.8 Пересчет дерева разделов
Ответ |
|
Если успех: |
progress Деактивация/удаление групп завершено |
Если ошибка: |
failure Ошибка импорта метаданных <текст ошибки> |
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
STEP |
6 |
На этом шаге Битрикс выполняет две задачи:
-
Удаление/деактивация разделов (в старых версиях модуля обмена в 1С)
-
Перестройка дерева разделов
В старых версиях 1С отличить полную выгрузку от частичной просто: при частичной в узле «Классификатор» был атрибут СодержитТолькоИзменения=»true», при полной его не было.
В 2019 году 1С всегда выгружает этот атрибут. Если этого атрибута нет, Битрикс мог (и до сих пор может, просто этот код не используется) удалить, деактивировать старые разделы (или пропустить их). На выбор влиял параметр на странице «Интеграция с 1С». Сейчас эта настройка уже ни на что не влияет и ни деактивации, ни удаления не происходит.
Также на этом шаге пересчитываются служебные поля LEFT_MARGIN и RIGHT_MARGIN всех разделов.
Шаг 2.9 Импорт товаров (повторяющийся)
Ответ |
|
Если идет процесс импорта: |
progress Обработано <число> из <число> элементов |
Если импорт завершен: |
progress Загрузка элементов завершена |
Если ошибка: |
failure <текст ошибки> |
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
STEP |
7 |
DONE |
Ассоциативный массив, счетчик обработанных товаров и всех товаров в файле |
На этом шаге в инфоблоке создаются и обновляются все товары, которые были в XML файле. Сопоставление товаров в файле товарам на сайте происходит по полю XML_ID.
Если на сайте нет товара с XML_ID из файла, он создается. Если есть, то выполняется сравнение полей из XML файла с аналогичными полями в БД.
Если изменения нет, и задан параметр «Использовать контрольные суммы элементов для оптимизации обновления каталога», Битрикс только обновляет поле TIMESTAMP_X и пропускает товар. Иначе происходит полноценное обновление.
При импорте товара заполняется поле TMP_ID. Значение для этого поля хранится в узле <НомерВерсии>. Если узла нет — Битрикс вычисляет контрольную сумму от всей информации о товаре из XML файла.
Возможные ошибки
Текст ошибки |
Что делать |
Временная таблица не существует |
Ошибка возникает если с сайтом работает несколько 1С или одна 1С присылает несколько запросов одновременно. В одном потоке выполняется шаг 4.9, а другой запустил шаг 4.2. |
Шаг 2.10 Деактивация/удаление товаров (повторяющийся)
Ответ |
|
Если идет обработка: |
progress Обработано <число> из <число> элементов |
Если обработка завершена: |
progress Деактивация/Удаление элементов завершены |
Если ошибка: |
failure <текст ошибки> |
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
STEP |
8 |
DONE |
Ассоциативный массив, счетчик обработанных товаров и всех товаров в файле |
На этом шаге раньше (как и на шаге 2.8 Пересчет дерева разделов ) Битрикс проводил чистку товаров. Чистка товаров происходила только если в узле “Классификатор” XML файла не было пометки СодержитТолькоИзменения=»true» (старый формат выгрузки). Есть аналогичная настройка для выбора, что делать с товарами.
В 2019 году на этом шаге ничего не происходит.
Шаг 2.11 Завершение импорта
Ответ |
|
Если успех: |
success Импорт успешно завершен |
Если ошибка: |
failure <текст ошибки> |
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
STEP |
9 |
Служебный шаг. Обработки данных нет, только испускается событие OnSuccessCatalogImport1C .
Шаг 3. Деактивация старых данных
Запрос |
|
GET-параметры: |
type=<тип обмена> |
mode=deactivate |
|
sessid=<ID сессии> |
|
timestamp=<время на сервере> |
|
Cookie: |
<имя Cookie>=<значение Cookie> |
Ответ |
|
Если успех: |
success Деактивация элементов завершена |
Если ошибка: |
failure Ошибка деактивации элементов |
На этом шаге в 2019 году Битрикс деактивирует все товары и разделы каталога, не затронутые в текущей сессии. Для этого время последнего изменения сравнивается с timestamp, который передает 1С — время начала текущей сессии, полученное на шаге авторизации.
Напомним, что эти настройки в панели управления сайта сейчас ни на что не влияют (всегда происходит деактивация):
Этот шаг будет выполнен, только если современная 1С делает полную выгрузку. Для выгрузки изменений и в старых версиях 1С этого шага нет.
Шаг 4. Завершение импорта
Запрос |
|
GET-параметры: |
type=<тип обмена> |
mode=complete |
|
sessid=<ID сессии> |
|
Cookie: |
<имя Cookie>=<значение Cookie> |
Ответ |
|
Если успех: |
success Завершение процедуры импорта |
Если ошибка: |
failure <текст ошибки> |
Служебный шаг. Обработки данных нет, только испускается недокументированное событие модуля catalog OnCompleteCatalogImport1C. Аргументы обработчика аналогичны обработчикам события OnSuccessCatalogImport1C , возвращаемого значения нет.
Обмен справочниками (1С -> Битрикс)
Данный тип обмена (type=reference) используется для создания и обновления на сайте HL-блоков. Этот тип намного короче чем обмен товарами и повторяет многие из его шагов.
Часто обмен справочниками — простой и быстрый способ расширить стандартные функции обмена.
Шаг 1. Передача файла (повторяющийся)
см. аналогичный шаг обмена товарами , (отличается только mode, в данном типе обмена mode=reference).
Шаг 2. Основной
Запрос |
|
GET-параметры: |
type=reference |
mode=import |
|
sessid=<ID сессии> |
|
Cookie: |
<имя Cookie>=<значение Cookie> |
Шаг 2.1 Распаковка архива (повторяющийся, необязательный)
см. аналогичный шаг обмена товарами .
Шаг 2.2 Подготовка справочника
Ответ |
|
Если успех: |
progress Найден или создан справочник. Код справочника: <ID> |
Если ошибка: |
failure <текст ошибки> |
На этом шаге Битрикс создает HL-блок (если не существует) и все UF-поля. В начале шага испускается событие модуля catalog OnBeforeCatalogImportHL. Событие недокументированное, в обработчики передаются массив параметров компонента и путь к XML-файлу. Обработчик может вызвать ошибку и вернуть произвольное сообщение.
Важно знать следующие особенности импорта справочников:
-
1С не может удалить справочник или поле, только создать;
-
1С может создать только поля следующих типов: Строка, Булево, Дата, Число;
-
все поля, создаваемые 1С будут одиночными, необязательными, скрытыми в фильтре, показанными и редактируемыми в таблице;
-
Битрикс автоматически создает поля: UF_NAME, UF_XML_ID, UF_VERSION, UF_DESCRIPTION.
Возможные ошибки
Текст ошибки |
Что делать |
Ошибка при создании поля в справочнике <Текст ошибки> |
Изучить текст и исправить в 1С или на сайте |
Ошибка при создании справочника <Текст ошибки> |
Изучить текст и исправить в 1С или на сайте |
Ошибка разбора XML. Код ошибки: <Код ошибки> |
Расшифровать код и исправить в 1С или на сайте |
Расшифровка кодов ошибок.
Код |
Объяснение |
10 |
Неизвестная ошибка парсинга XML файла |
20 |
Невалидный XML файл |
110 |
В XML файле отсутствует или пустой узел <Ид> справочника |
120 |
В XML файле отсутствует или пустой узел <Наименование> справочника |
210 |
Во время импорта UF-полей не был найден higloadblock |
220 |
В XML файле отсутствует или пустой узел <Ид> в <Реквизит> |
230 |
В XML файле отсутствует или пустой узел <Наименование> в <Реквизит> |
240 |
Неизвестный <ТипЗначений> в узле <Реквизит> (допустимы только: Строка, Булево, Дата, Число) |
250 |
Неизвестная ошибка при создании UF-поля highload блока |
310 |
Во время элементов справочника не был найден higloadblock |
320 |
В XML файле отсутствует или пустой узел <Ид> в <ЭлементСправочника> |
330 |
В XML файле отсутствует или пустой узел <ЗначениеРеквизита> в <ЗначенияРеквизитов> в <ЭлементСправочника> |
Шаг 2.3 Импорт элементов (повторяющийся)
Ответ |
|
Если импорт завершен: |
success Импорт успешно завершен |
Если импорт в процессе: |
progress Импортировано элементов: <число> |
Если ошибка: |
failure <текст ошибки> |
На этом шаге Битрикс импортирует все элементы HL-блока.
Если выгрузка была полной, Битрикс удаляет все элементы HL-блока, у которых значение поля UF_VERSION не начинается с <ID текущей сессии> + «#»
В конце шага Битрикс испускает событие модуля catalog OnSuccessCatalogImportHL. Аргументы — массив параметров компонента и путь к файлу.
Возможные ошибки
Аналогичны ошибкам на предыдущем шаге.
Формат файлов
Формат файла обмена товарами
Формат файла обмена предложениями
Формат файла обмена ценами товаров и предложений
Формат файла обмена остатками товаров и предложений
Формат файла обмена справочниками
Поясним некоторые места этого XML.
-
Узел <Ид>
-
Значение становится названием сущности (после транслитерации).
-
С префиксом «b_» становится названием таблицы (после транслитерации).
-
-
Узел <Наименование> Не используется. Вообще. Но если узла не будет в файле, Битрикс выдаст ошибку (sic!)
-
Каждый <Реквизит> описывается тремя узлами:
-
<Ид>
-
Значение становится XML ID поля
-
С префиксом «UF_» становится кодом поля
-
-
<Наименование>
-
Значение становится названием UF-поля.
-
-
<ТипЗначений>
-
4 допустимых значения: Строка, Булево, Дата, Число
-
-
-
Каждый <ЭлементСправочника> описывается полями:
-
<Ид>
-
Становится значением поля UF_XML_ID
-
-
<НомерВерсии>
-
C префиксом <ID текущей сессии> + «#» становится значением поля UF_VERSION
-
-
<ЗначенияРеквизитов>
-
Реквизит Код
-
Становится значением поля UF_NAME
-
-
Реквизит Наименование
-
Становится значением поля UF_DESCRIPTION
-
-
Реквизит ПометкаУдаления
-
Не используется
-
-
Прочие реквизиты
-
Поля типа «Дата» представлены в формате YYYY-MM-DD HH:MI:SS.
-
Поля типа «Булево» представлены строками true или false (или пустой строкой).
-
-
Как дорабатывать обмен?
Все запросы (при стандартном обмене) 1С присылает на служебную страницу /bitrix/admin/1c_exchange.php. Но если заглянуть в файл, выяснится что вся логика скрыта в недрах модуля «Торговый каталог» в файле /bitrix/modules/sale/admin/1c_exchange.php. Эти страницу нельзя изменять, но можно скопировать (обычно мы копируем в /bitrix/admin/1c_exchange_custom.php) и изменить адрес в 1С.
На этой странице, в зависимости от переданных GET-параметров (совсем как комплексные компоненты в режиме не-ЧПУ) подключаются разные простые компоненты. Компоненты без шаблонов.
Значительная часть логики вынесена из этих компонентов в классы. Связь видов обмена, GET-параметров, компонентов и основных классов приведена ниже в таблице.
Тип данных |
GET[type] |
Компонент |
Класс с логикой |
Путь к классу |
Заказы, контрагенты |
sale |
bitrix:sale.export.1c |
CSaleOrderLoader |
/bitrix/modules/sale/general/order_loader.php |
Товары, предложения, склады, цены, наличие |
catalog |
bitrix:catalog.import.1c |
CIBlockCMLImport |
/bitrix/modules/iblock/classes/general/cml2.php |
Справочники |
reference |
bitrix:catalog.import.hl |
CBitrixCatalogImportHl |
В папке с компонентом |
Существует 3 принципиально разных способа доработать обмен с 1С:
-
Не трогать стандартный обмен, использовать обработчики событий.
-
Кастомизировать файлы обмена на стороне сайта и доработать по требованиям
-
Выгружать нужные данные как справочники и обрабатывать самостоятельно.
Первый способ нужен для самых простых случаев, ничего серьезного сделать так не получится.
Второй способ реализуется так:
-
Создать собственную страницу обмена. Обычно это /bitrix/admin/1c_exchange_custom.php.
-
На эту страницу перенести код из /bitrix/modules/sale/admin/1c_exchange.php.
-
Кастомизировать нужный компонент обмена и заменить вызов системного компонента на вызов собственного (например, bitrix:catalog.import.1c на intervolga:catalog.import.1c) на новой странице обмена.
-
Может понадобиться изменение логики класса. Используйте наследование (например, класс IntervolgaCustomExchangeCml может быть наследником CIBlockCMLImport и переопределять метод ImportElements).
После правок на сайте нужно изменить параметр «Адрес сайта и путь до скрипта обмена» в 1С. Имя пользователя и пароль одинаковые как для стандартного обмена, так и для доработанного.
Третий способ(через справочники) подходит, если у нужной сущности 1С совсем нет аналога на сайте или по каким-то причинам стандартный импорт совсем не годится. У модуля highloadblock есть все необходимые события (создание, редактирование, удаление) и для ненагруженных проектов это достаточно неплохое решение.
С помощью выгрузки справочников решаются такие задачи, как создание пользователей на сайте через 1С, выгрузка персональных цен и скидок, бонусов и информации для личного кабинета партнеров.
Отладка обмена — отдельный больной вопрос. Обычно решается логированием всех происходящих в недрах Битрикса процессов. В ИНТЕРВОЛГЕ разработали свою систему логирования обмена, которая представляет весь процесс в виде диаграммы Гантта. На ней сразу видно, если идут одновременно 2 обмена или 1С не дожидается ответа и начинает слать новые запросы.
Заключение
Часто самой сложной задачей в процессе разработки является именно интеграция с 1С. Отчетливое понимание происходящих в Битриксе процессов необходимо для серьезных проектов.
Автор статьи: Анатолий Ерофеев.
Нужно проверить, чтобы у файлов был тот же владелец, что и пользователь Apache. Кроме того, выставить необходимые права на папки и файлы.chown bitrix:bitrix file.php
Для массовой смены владельца можно использовать:find . -type f -exec chown bitrix:bitrix {} ;
Вот универсальное решение:
cd /home/bitrix/www
find . -type d -exec chmod 775 {} ;
find . -type f -exec chmod 664 {} ;
find . -type d -exec chown bitrix:bitrix {} ;
find . -type f -exec chown bitrix:bitrix {} ;
/home/bitrix/www — директория где лежит сайт
bitrix:bitrix — пользователь и группа под кем запущен демон httpd
Пользователя и группу можно подсмотреть в phpinfo.
- Ошибки на стороне веб-сервера
- Ошибки при работе с файлами данных
- Проблемы авторизации
- Ошибки 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). |
|
Получен пустой ответ сервера. | |
Ошибка нехватки памяти, например выводится сообщение: Fatal error : Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401…). | Проверить настройку memory_limit в php.ini. Должно быть указано не менее 512Mb, увеличить значение и перезагрузить сервер. Или не изменяя настройки сервера сделать равным таймаут сервера и таймаут «1С-Битрикс: Управление сайтом» (страница Магазин > Настройки магазина > Интеграция с 1С, поле Интервал одного шага в секундах). Если проблема с нехваткой памяти, данное решение не подойдёт. |
- Подобная ошибка может маскировать либо некорректную настройку объема одной порции загружаемых данных (10К товаров за раз, например), либо логическую ошибку в программном коде (например, пересчет каких-нибудь значений в товарах по событию изменения).
Способы решения:
- уменьшать объем передаваемых за раз данных (проверить на 1 товаре, но лучше выставлять значение поочередно, 1, 100, 1000, 10000 и смотреть, какое значение оптимально для ваших настроек);
- временно закомментировать обработчики событий в файле /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 обмена.
Пользователь 92039 Посетитель Сообщений: 54 |
Здравствуйте. Мне достался готовый сайт. Версия — «1С-Битрикс: Управление сайтом 11.5.1» |
Пользователь 88565 Посетитель Сообщений: 118 |
|
Пользователь 92039 Посетитель Сообщений: 54 |
#3 0 10.04.2013 12:52:17
У меня в «Структуре сайта» в «Контенте» нет пункта «Управление». Наверное, документация для более поздней версии системы. |
||
Пользователь 95726 Эксперт Сообщений: 742 |
#4 0 10.04.2013 13:10:37
Так и редактируй по FTP. Сдался тебе этот редактор.
М.б. если включаемую область редактируешь например. |
||||
Пользователь 92039 Посетитель Сообщений: 54 |
#5 0 10.04.2013 13:15:50
Это не для меня всё делается, а для сеошника, который привык работать с редактором. Так что надо разобраться. |
||||
Пользователь 95726 Эксперт Сообщений: 742 |
Ну если из админки, то нет. А если непосредственно со страницы, то да. |
Пользователь 92039 Посетитель Сообщений: 54 |
Я редактирую из админки. |
Пользователь 173519 Эксперт Сообщений: 493 |
На хостинге clodo имею аналогичную ошибку, создал включаемую область на сайте по фтп, в структуре сайта показывает полный доступ на права системы, но при редактировании пишет «Ошибка при создании файла». Пришлось создавать файл через админку, тогда все работает. Разработка интернет магазина под ключ на 1С-Битрикс www.electroid.org, интеграция битрикс и 1С. |
Пользователь 37620 Эксперт Сообщений: 2549 для СПАСИБО на форуме есть КНОПКА! |
#9 1 25.09.2013 17:26:52
такое бывает, если у вас веб сервер и фтп под разными юзерами работают. Сайт Startup’а — адаптивная Bootstrap вёрстка, композит, микроразметка. бесплатно |
||
Пользователь 266000 Заглянувший Сообщений: 14 |
#10 0 19.07.2020 20:41:11 Здравствуйте! |
Пользователь 1497169 Заглянувший Сообщений: 1 |
#11 0 24.08.2022 13:02:24 Добрый день. Столкнулись с аналогичной проблемой. |
Пользователь 1947629 Эксперт Сообщений: 864 |
#12 0 24.08.2022 16:01:59 место кончилось? |
Данная проблема в Битриксе может появляться при отсутствии нужных прав на каталоги и файлы. В моём случае проблема возникла при многосайтовости, до этого всё было в порядке, но спустя какое-то время после длительной работы, появилось ограничение. За время поиска решения этой задачи, я нашел несколько решений и думаю, что один из вариантов Вам поможет справиться с данной проблемой.
Первое что необходимо сделать — это проверить права на файлы и папки в нужном каталоге. Права на папку должны быть 755, на файлы 664. Ни в коем случае не выставляйте права 777 на папки или файлы, даже на время.
В моём случае этот метод не сработал, я стал копать дальше. Нашел такой совет. в файле /bitrix/php_interface/dbconn.php установить такие константы.
define( "BX_FILE_PERMISSIONS", 0660 );
define( "BX_DIR_PERMISSIONS", 0775 );
@umask( ~BX_DIR_PERMISSIONS );
@ini_set( "memory_limit", "512M" );
Но этого не потребовалось, т.к. эти значения уже были заданы и по идее всё должно было работать. На одном из форумов посоветовали изменить права доступа и владельца к нужной категории через консоль. Но я посчитал, что если всё до этого работало, то не нужно так далеко залазить, проблема явно была в не в этом, для Вас приведу код в котором можно изменить права доступа к каталогам и файлам через консоль. Говорят может помочь.
find . -type d -exec chmod 775 { } ;
find . -type f -exec chmod 664 { } ;
В моём случае решение оказалось куда проще. Все сайты лежали в корневой директории, один из них являлся общим ядром. Но по какой-то причине прекратился общий доступ к «главному сайту» и всё что нужно было сделать — это открыть доступ.
Поскольку сайты на учётных записях закрыты процессы, запущенные на одном сайте, не имеют прав для обращения к каталогам, выходящим за пределы этого сайта. Для доступа из окружения веб-сервера потребуется открыть общий доступ к каталогу. Мой проект находится на beget и эта операция делается очень просто через файловый менеджер.
- Зайдите в нужную директорию
- В верхней части экрана нажмите на кнопку “Инструменты” -> “Настроить общий доступ к текущей директории”:
- Установите переключатели “Чтение и запись” и “Включая вложенные папки”, нажмите кнопку “Открыть доступ”:
Если представленные варианты не принесли желаемого результата, то пишите в комментарии, будет время, что-нибудь придумаем.
- Ошибки на стороне веб-сервера
- Ошибки при работе с файлами данных
- Проблемы авторизации
- Ошибки 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). |
|
Получен пустой ответ сервера. | |
Ошибка нехватки памяти, например выводится сообщение: Fatal error : Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401…). | Проверить настройку memory_limit в php.ini. Должно быть указано не менее 512Mb, увеличить значение и перезагрузить сервер. Или не изменяя настройки сервера сделать равным таймаут сервера и таймаут «1С-Битрикс: Управление сайтом» (страница Магазин > Настройки магазина > Интеграция с 1С, поле Интервал одного шага в секундах). Если проблема с нехваткой памяти, данное решение не подойдёт. |
- Подобная ошибка может маскировать либо некорректную настройку объема одной порции загружаемых данных (10К товаров за раз, например), либо логическую ошибку в программном коде (например, пересчет каких-нибудь значений в товарах по событию изменения).
Способы решения:
- уменьшать объем передаваемых за раз данных (проверить на 1 товаре, но лучше выставлять значение поочередно, 1, 100, 1000, 10000 и смотреть, какое значение оптимально для ваших настроек);
- временно закомментировать обработчики событий в файле /bitrix/php_interface/init.php, может быть они мешают обмену.
Ошибки при работе с файлами данных
Данные ошибки возникают при неверной настройке прав доступа к файлу. Отображение ошибок звучит следующим образом: «Ошибка открытия файла» и «Ошибка записи файла». Возможные причины и их решение:
Название ошибки | Как исправить | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Закончилось место на диске. |
Удалить старые бэкапы или увеличить тариф на хостинге. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
По ftp файлы загружаются, а через веб-интерфейс административного раздела сайта нет. |
Обратиться в техническую поддержку хостинг-провайдера. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Не работает или некорректно работает сжатие данных при обмене. |
Для начала можно попробовать выключить сжатие в настройках модуля обмена. Также можно проверить работу функции zip_open на сервере Откройте в браузере страницу http://<ваш_сайт>//bitrix/admin/phpinfo.php (Либо выполните команду if (exist_function (“zip_open”)){ echo “OK”; } В браузере отобразится таблица:
Данная проблема в Битриксе может появляться при отсутствии нужных прав на каталоги и файлы. В моём случае проблема возникла при многосайтовости, до этого всё было в порядке, но спустя какое-то время после длительной работы, появилось ограничение. За время поиска решения этой задачи, я нашел несколько решений и думаю, что один из вариантов Вам поможет справиться с данной проблемой. Первое что необходимо сделать — это проверить права на файлы и папки в нужном каталоге. Права на папку должны быть 755, на файлы 664. Ни в коем случае не выставляйте права 777 на папки или файлы, даже на время. В моём случае этот метод не сработал, я стал копать дальше. Нашел такой совет. в файле /bitrix/php_interface/dbconn.php установить такие константы.
Но этого не потребовалось, т.к. эти значения уже были заданы и по идее всё должно было работать. На одном из форумов посоветовали изменить права доступа и владельца к нужной категории через консоль. Но я посчитал, что если всё до этого работало, то не нужно так далеко залазить, проблема явно была в не в этом, для Вас приведу код в котором можно изменить права доступа к каталогам и файлам через консоль. Говорят может помочь.
В моём случае решение оказалось куда проще. Все сайты лежали в корневой директории, один из них являлся общим ядром. Но по какой-то причине прекратился общий доступ к «главному сайту» и всё что нужно было сделать — это открыть доступ. Поскольку сайты на учётных записях закрыты процессы, запущенные на одном сайте, не имеют прав для обращения к каталогам, выходящим за пределы этого сайта. Для доступа из окружения веб-сервера потребуется открыть общий доступ к каталогу. Мой проект находится на beget и эта операция делается очень просто через файловый менеджер.
Если представленные варианты не принесли желаемого результата, то пишите в комментарии, будет время, что-нибудь придумаем.
Настроить обмен между «1С» и «1С-Битрикс» интернет-магазина или сайта – не проблема. Эта функция присутствует «из коробки» начиная с ранних версий продуктов «1С:Предприятие», редакция Управление торговлей и «1С-Битрикс: Управление сайтом» в редакциях Малый бизнес и Бизнес. Даже с учётом имеющейся документации по продукту, у многих разработчиков сайтов возникают сложности в корректной настройке обмена данными между этими системами. Рассмотрим самые частые проблемы, которые возникают у тех кто пытался. Мы выделили несколько групп ошибок:
Далее мы детально рассмотрим сами ошибки и способы их исправления. Ошибки на стороне веб-сервераК этой группе относятся ошибки, возникающие в подсистемах веб-сервера, отвечающих за выполнение PHP-кода. Обычно это: Nginx, Apache и сам интерпретатор языка PHP. Возможны 2 варианта:
Способы решения:
Ошибки при работе с файлами данныхДанные ошибки возникают при неверной настройке прав доступа к файлу. Отображение ошибок звучит следующим образом: «Ошибка открытия файла» и «Ошибка записи файла». Возможные причины и их решение:
Проблемы авторизацииСамая распространённая проблема, если пользователь не указал данные или указал их неверно.
Ошибки MySQLОшибки возникают при соединении с базой данных MySQL, настроенной на сайте.
Логические ошибкиОшибки пользователей неверно понимающих процесс обмена данными и, соответственно, неверно выполняющих какие-то действия.
Диагностика отладкиМы применяем два инструмента отладки обмена между 1С и 1С-Битрикс. Отладка обмена на стороне 1С-БитриксПри настройке выгрузки необходимо проверить существование папки /upload/1c_catalog/. В эту папку будут загружаться файлы при обмене. При необходимости, можно удалять из папки файлы последнего обмена, т.к. по завершению обмена файлы последней операции будут храниться именно в этой папке. Выполнение этой задачи возможно сделать автоматически, например запустить «Режим отладки» процесса обмена на сайте. При включенном «режиме отладки» не будут удаляться старые файлы из этого каталога после успешного обмена. Включить «режим отладки» можно отредактировав файл dbconn.php. А именно, создать константу такого вида: define(«BX_CATALOG_IMPORT_1C_PRESERVE», true). На стороне 1С-Битрикс мы можем увидеть только конечные данные. Если данные приходят корректные, то они попадают в инфоблоки и это видно. Если данные приходят некорректные, то либо неверные данные были выгружены из 1С, либо выставлен неверный тип данных. Например вы пытаетесь передать многострочный список как строку. Модуль отладки обмена от ИНТЕРВОЛГИДля упрощения диагностики мы создали модуль отладки обмена. Он встраивается между 1С и 1С-Битрикс и пишет логи того, что происходит при обмене. По этим логам можно выяснить, где ошибка и исправить её. Отображение логов происходит в административной части сайта. Модуль отладки обмена от ИНТЕРВОЛГИ лучше логов со стороны 1С-Битрикс, потому что он:
ВыводыЕсли не разбираться в вопросе и попытаться исправить обмен, то можно сделать только хуже и придётся или переписывать код модуля или ставить модуль обмена заново. Наша компания обладает компетенциями в вопросе отладки обмена. Если у вас возникла подобная проблема, напишите, обсудим. Вам может быть интересно:
Это штатная функция, которая уже давно присутствует начиная с версии программных продуктов «1С:Предприятие 8.1», редакция Управление торговлей (версия 10.3.4) и «1С-Битрикс: Управление сайтом» версии 6.5, в редакциях Малый бизнес, Бизнес и Большой бизнес. Торговля в интернете не имеет никаких отличий от обычного ритейла в плане ведения бухгалтерской отчетности. В связи с этим возникает вопрос согласования продаж через интернет-магазин и проводки их по системе учета «1С». Для «1С-Битрикс: Управление сайтом» интеграция с «1С» – не проблема. Это штатная функция, которая уже давно присутствует начиная с версии продуктов «1С:Предприятие 8.1», редакция Управление торговлей (версия 10.3.4) и «1С-Битрикс: Управление сайтом» версии 6.5, в редакциях Малый бизнес, Бизнес и Большой бизнес. Несмотря на существующую документацию по продукту, у многих разработчиков сайтов возникают сложности с обменом данными в этих двух программах. Сложности интеграции бывают разные. Рассмотрим некоторые, самые типовые, которые возникают у многих пользователей. Типовые проблемы можно сгруппировать примерно таким образом:
Начнем по порядку. Ошибки на стороне сервера Ошибки на стороне сервера происходят в силу целого ряда причин, но общее у них то, что виноваты не столько настройки программ «1С-Битрикс: Управление сайтом» или «1С:Предприятие«, сколько настройки сервера или проблемы в линиях связи. В основном они «лечатся» соответствующей настройкой серверного оборудования и программного обеспечения. И только при невозможности этого – путем единовременного снижения объемов выгрузки. Для решения большинства этих проблем вам не избежать обращения к службе технической поддержки хостинговой компании, где размещен ваш сайт. Наиболее частые проявления этих ошибок:
Общие методы решения – это изменение настроек сервера. Во-первых, можно увеличить лимит времени и памяти в настройках PHP.
Во-вторых, часто помогает увеличение таймаута сервера. С этим лучше обратиться к хостеру, так как у вас, скорее всего, не будет на это прав доступа. Но если есть возможность сделать это самому, то нужно произвести следующую последовательность действий:
Другой вариант решения этой проблемы (если хостер не соглашается на увеличение таймаута) — сделать равным таймаут сервера и таймаут «1С-Битрикс: Управление сайтом» (страница Магазин > Настройки магазина > Интеграция с 1С, поле Интервал одного шага в секундах). В этом случае пошаговое выполнение будет идти синхронно. Если указанные меры не помогли или указанные параметры невозможно изменить, то, в крайнем случае, можно сделать следующее: Наконец, можно уменьшить объем выгрузки товаров за 1 раз. Настройте фильтр по номенклатуре на стороне «1С»:
Ошибки при работе с файлами данных Ошибки при работе с файлами вызваны в основном неправильной настройкой прав доступа к файлам. Типовые сообщения при этом выглядят следующим образом: «Ошибка открытия файла» и «Ошибка записи файла». Способы решения проблемы, естественно, — настройка прав доступа на уровне операционной системы. Обратим внимание на фразу «на уровне операционной системы». Права на уровне «1С-Битрикс: Управление сайтом», как правило, выставлены всегда правильно. Тем не менее, проверить права на осуществление импорта/экспорта не помешает. Делается это на странице Магазин > Настройки магазина > Интеграция с 1С. Наиболее вероятные причины:
Решения данных проблем довольно просты и понятны из самих проблем и решаются обращением к хостеру, который установит нужные права. Выставление корректных прав на создаваемые файлы в рамках «1С-Битрикс: Управление сайтом» производится следующим образом:
Точно также нужно проверить выставить права на создаваемые папки. Только это делается уже в строке define(«BX_DIR_PERMISSIONS», 0755);. Вот так выглядит проверка наличия расширения ZIP в настройках PHP:
Заметим, что ошибки при работе с файлами данных могут возникать и из-за того, что на компьютере, где установлена учетная система от 1С, имеется файрволл или антивирус, препятствующий корректной передаче файла или блокирующий отправку файла на сервер. Проблемы авторизации 1С не может пройти процедуру аутентификации на сайт и в этой связи выдается ошибка. Вызвано это, как правило, неверной настройкой «1С-Битрикс: Управление сайтом». «1С» может получать некорректный ответ при попытке авторизации на сайте. Это может быть ошибкой разработчика вашего сайта. Дело в том, что при авторизации первой строчкой ответа «1С» ждет «success». Но в ходе создания сайта разработчики могли в процессе разработки случайно оставить вывод в файлах тестовые строки. Например, в файле /bitrix/php_interface/init.php или /bitrix/php_interface/dbconn.php и др. Другая типичная ошибка состоит в правах доступа на импорт каталога. Авторизация может не производиться, если пользователь, проводящий импорт, не обладает достаточным уровнем прав. Проверить это можно на странице Магазин > Настройки магазина > Интеграция с 1С. Перейдите на указанную страницу и произведите следующие действия:
Но в авторизации могут возникать и особые ошибки. Например, при работе PHP в режиме CGI. Это характерно для сайтов, размещенных на Windows-серверах. Можно это проверить с помощью файла test.php, как мы это делали при проверке свойств ZIP. В свойства сервера Apache в строке Server API в таком случае стоит CGI. Можно попытаться обойти эту проблему, а если не получится, то целесообразно обратиться в техподдержку хостинга. Для «обхода» проблемы необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite. Выполните следующие действия:
Ошибки MySQL Ошибки базы данных могут иметь много причин, равно как и решений. Самые очевидные из них сводятся к следующим:
Возможное решение проблемы: $DB->Query(«SET wait_timeout=28800»); Если это не помогает, то необходимо обратиться к службе поддержки хостинговой компании для увеличения таймаута.
[Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE) for operation ‘=’] Причиной является то, что таблицы базы данных в одной кодировке, а сам база в другой. В данном случае база в latin1 и новые таблицы создаются в latin1. При выгрузке из «1С» создается временная таблица b_xml_tree в «некорректной» кодировке latin1. Решение простое и понятное: смена кодировки базы на корректную. Для решения этой проблемы нужно обратиться к хостеру. Логические ошибки Логические ошибки происходят, если пользователем неверно понимается процесс обмена данными и, соответственно, им неверно выполняются какие-то действия. Наиболее частая ошибка при выгрузке каталога товаров появляется вместе сообщением: «Изменения товаров не зарегистрированы. Выгрузка товаров не произведена». Как правило, в этом случае неверно настроен фильтр товаров. Нужно проверить эти настройки. Как правило, там выбраны параметры, которые не позволяют правильно отфильтровать параметры для выгрузки. Но, бывают ситуации, когда такое сообщение – нормальная ситуация. Это происходит в случае, если в настройках Режима обмена данными с WEB-сайтом установлено: Выгружать только измененные объекты с момента последнего обмена. Другая ошибка при выгрузке каталога товаров — сообщение: «Не удалось найти вид номенклатуры». Эта ошибка возникает, если в «1С» нет видов «Услуга» и «Товар». Эти типы критичны для процесса обмена данными с сайтом. Решение проблемы – создать в «1С» указанные виды номенклатуры. Если в процессе обмена возникает ошибка: «Поле объекта не обнаружено», то это означает, что не установлены соответствия для полей заказа в «1С-Битрикс: Управление сайтом». Проверьте настройки, заданные в закладке Экспорт в «1С:Предприятие» страницы Настройки > Настройки продукта > Настройки модулей > Интернет-магазин. Поля «Полное Название» и «Название» критичны для 1С., то есть без задачи соответствия этих полей экспорт выполняться не будет. Обратите внимание, что настройка соответствий производится отдельно для разных типов плательщиков. Резюме Экспорт/импорт товаров и заказов в связке «1С-Битрикс: Управление сайтом» и «1С:Предприятие» позволяет решить проблемы синхронизации данных на сайте и в системе учета. Как и в работе любой другой сложной системы, в этой «связке» могут возникать проблемы и неточности. Однако все они решаемы. Купить Битрикс можно у партнеров 1Софт. Роберт Басыров Все права защищены. По вопросам использования статьи обращайтесь к администраторам сайта Нет. Такие же не надо. там увидите у файлов кто владелец группа. Я так понимаю у части root:root, но у некоторых должно быть нечто другое. Например bitrix:bitrix, www-data:www-data или иное… Тут уже зависит от дистрибутива линукса развернутого на сервере, предыдущего админа и т.п. Вот вам нужно ходить через ftp именно под этим пользователем. (Да и по ssh под root лучше не ходить — обычно это запрещают, а при необходимости логинятся обычным, и уже в терминале меняют пользователя на root) Ну и необходимо будет поменять права к файлам. Для этого находясь в терминале в корне сайта под root. Выполните (в примере имя искомого пользователя bitrix и группа bitrix:
Но вообще с этим со всем надо аккуратно… Лучше пригласить специалиста. Наверняка на том же хостинге есть услуга помощи админа. Добавлено через 56 секунд Содержание
Настроить обмен между «1С» и «1С-Битрикс» – не проблема. Эта функция присутствует «из коробки» начиная с ранних версий продуктов «1С:Предприятие», редакция Управление торговлей и «1С-Битрикс: Управление сайтом» в редакциях Малый бизнес и Бизнес. Даже с учётом имеющейся документации по продукту, у многих разработчиков сайтов возникают сложности в корректной настройке обмена данными между этими системами. Рассмотрим самые частые проблемы, которые возникают у тех кто пытался. Мы выделили несколько групп ошибок:
Далее мы детально рассмотрим сами ошибки и способы их исправления. Ошибки на стороне веб-сервераК этой группе относятся ошибки, возникающие в подсистемах веб-сервера, отвечающих за выполнение PHP-кода. Обычно это: Nginx, Apache и сам интерпретатор языка PHP. Возможны 2 варианта: а) Ошибка действительно вызвана неоптимальными настройками Nginx/Apache/PHP. Если Вы чувствуете неуверенность в своем веб-сервере или совсем недавно на него переехали — привлеките администратора для проверки и изменения настроек.
б) Подобная ошибка может маскировать либо некорректную настройку объема одной порции загружаемых данных (10К товаров за раз, например), либо логическую ошибку в программном коде (например, пересчет каких-нибудь значений в товарах по событию изменения).
Ошибки при работе с файлами данныхДанные ошибки возникают при неверной настройке прав доступа к файлу. Отображение ошибок звучит следующим образом: «Ошибка открытия файла» и «Ошибка записи файла». Возможные причины и их решение: Закончилось место на диске. Удалить старые бэкапы или увеличить тариф на хостинге. По ftp файлы загружаются, а через веб-интерфейс административного раздела сайта нет. Обратиться в техническую поддержку хостинг-провайдера. Не работает или некорректно работает сжатие данных при обмене. Для начала можно попробовать выключить сжатие в настройках модуля обмена. Также можно проверить работу функции zip_open на сервере Откройте в браузере страницу http:// //bitrix/admin/phpinfo.php (Либо выполните команду if (exist_function (“zip_open”)) В браузере отобразится таблица:
Для строки 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. На стороне 1С-Битрикс мы можем увидеть только конечные данные. Если данные приходят корректные, то они попадают в инфоблоки и это видно. Если данные приходят некорректные, то либо неверные данные были выгружены из 1С, либо выставлен неверный тип данных. Например вы пытаетесь передать многострочный список как строку. Модуль отладки обмена от ИНТЕРВОЛГИДля упрощения диагностики мы создали модуль отладки обмена. Он встраивается между 1С и 1С-Битрикс и пишет логи того, что происходит при обмене. По этим логам можно выяснить, где ошибка и исправить её. Отображение логов происходит в административной части сайта. Модуль отладки обмена от ИНТЕРВОЛГИ лучше логов со стороны 1С-Битрикс, потому что он: следит за размером и в результате его работы не закончится место на сайте; логирует обмен справочников и заказов; логирует время обмена и время выполнения одного шага. ВыводыЕсли не разбираться в вопросе и попытаться исправить обмен, то можно сделать только хуже и придётся или переписывать код модуля или ставить модуль обмена заново. Наша компания обладает компетенциями в вопросе отладки обмена. Если у вас возникла подобная проблема, напишите, обсудим. Недавно была ошибка с .htaccess и на сайте висела ошибка 500 , потом кто-то исправил, но теперь в CMS’ке при создании папки или файла выскакивает ошибка — «Не удалось создать папку «Название»» Я заметил, что если создать папку в «/»(корень), — единственное место, где хоть что-то создается -, то в значении «Права на доступ сервера» написано 755 apache apache , а во всех других папках это значение другое — 755 vostorg vostorg ( vostorg — название сайта). Пожалуйста, помогите разобраться. Нужно проверить, чтобы у файлов был тот же владелец, что и пользователь Apache. Кроме того, выставить необходимые права на папки и файлы. Для массовой смены владельца можно использовать: Вот универсальное решение: /home/bitrix/www — директория где лежит сайт
Содержание
Ошибка при загрузке файла больше 4МбПри проверке системы выскакивает ошибка
У меня выделенный сервер, стоит Ubuntu Server 14 x64. В php.ini изменил параметры post_max_size и upload_max_filesize на 16 Мб. В В файле nginx.conf добавил client_max_body_size 100m ; . В файл fcgid.conf добавил FcgidMaxRequestLen (в байтах какое то число, которое обозначает 100Мб). Что ещё нужно сделать что бы сервер загружал более 4 Мб? Сегодня развернул на сервере другой сайт на 1С Битрикс, другая папка для файлов, другая БД, но тот же Apache, Ngnix, MySQL и на другом сайте этот тест проходит. На другом сайте можно загрузить файлы больше 4 Мб. Тогда как на основном сайте нельзя. Может надо что-то с правами для папок? Андрей Ившин, вызовите phpinfo и посмотрите, 1. где лежит php.ini который относится к вашему проекту. Бывает, что их несколько и вы меняете не тот п.с. а лучше поставьте CentOS + Битрикс ВО и там все будет работать из коробки Я ошибся, я перенёс сайт, но он собака переходит автоматом на старый сервер. Вот я и смотрел на старый сервер. Собственно проблема остаётся. А что касается CentOS, ммм. а что в ней лучше чем в Ubuntu? Что такого есть в CentOS чего нет в Ubuntu? А по поводу Битрикс ВО не подойдёт просто потому, что он настроен только на один сайт. В нём нет FTP сервера, нет трёх отдельных пользователей для FTP, да так, что бы каждый FTP пользователь видел только свою папку. Битрикс ВО нет три виртуальных домена, нет трёх разлиных баз данных ну и так далее. Для одного сайта, для одного пользователя Битрикс ВО подойдёт. А вот для троих сайтов к сожалению нет. Источник Ошибка при загрузке файла больше 4МбПри проверке системы выскакивает ошибка
У меня выделенный сервер, стоит Ubuntu Server 14 x64. В php.ini изменил параметры post_max_size и upload_max_filesize на 16 Мб. В В файле nginx.conf добавил client_max_body_size 100m ; . В файл fcgid.conf добавил FcgidMaxRequestLen (в байтах какое то число, которое обозначает 100Мб). Что ещё нужно сделать что бы сервер загружал более 4 Мб? Сегодня развернул на сервере другой сайт на 1С Битрикс, другая папка для файлов, другая БД, но тот же Apache, Ngnix, MySQL и на другом сайте этот тест проходит. На другом сайте можно загрузить файлы больше 4 Мб. Тогда как на основном сайте нельзя. Может надо что-то с правами для папок? Андрей Ившин, вызовите phpinfo и посмотрите, 1. где лежит php.ini который относится к вашему проекту. Бывает, что их несколько и вы меняете не тот п.с. а лучше поставьте CentOS + Битрикс ВО и там все будет работать из коробки Я ошибся, я перенёс сайт, но он собака переходит автоматом на старый сервер. Вот я и смотрел на старый сервер. Собственно проблема остаётся. А что касается CentOS, ммм. а что в ней лучше чем в Ubuntu? Что такого есть в CentOS чего нет в Ubuntu? А по поводу Битрикс ВО не подойдёт просто потому, что он настроен только на один сайт. В нём нет FTP сервера, нет трёх отдельных пользователей для FTP, да так, что бы каждый FTP пользователь видел только свою папку. Битрикс ВО нет три виртуальных домена, нет трёх разлиных баз данных ну и так далее. Для одного сайта, для одного пользователя Битрикс ВО подойдёт. А вот для троих сайтов к сожалению нет. Источник Ошибки при мультизагрузке фотографийУ меня локально работает, на win7. А удаленно та же херня. Глобальней некуда. Обновился и перестала работать))) причём по разному — иногда после загрузки фоток (визуально в загрузчике загружаются все), выкидывает в «доступ запрещён» — теряется авторизация, а бывает просто это сообщение выкидывается без потери сессии 2я попытка — «доступ запрещён» а с 3его раза нормально загрузилось И всё же в чём может быть причина данной ошибки? В php.ini и suhosin.ini увеличил все параметры, отвечающие за загрузку файлов — отчасти помогло увеличение max_file_uploads с 20 до 250 — стало больше загружаться через упрощённую форму (раньше загружалось не больше 20). Подскажите, что делать? В апреле всё прекрасно работало. Источник Битрикс ошибка при загрузке файлаСовременные сайты наполняются содержанием с помощью специального программного обеспечения: CMS. Соответственно, контент-менеджер (или редактор сайта) — это специалист, работающий с CMS.
Для кого этот курс?Примерное время изучения курса — 23 часа 33 минуты, без выполнения Практических заданий и сдачи тестов Курс Контент-менеджер адресован тем, кто работает с содержанием сайта: наполнение, изменение текста, загрузка и размещение картинок и так далее.
У нас часто спрашивают, сколько нужно заплатитьКурс полностью бесплатен. Изучение курса, прохождение итоговых тестов и получение сертификатов — ничего из этого оплачивать не нужно. Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров. Баллы опытаВ конце каждого урока есть кнопка Прочитано! . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится уроке. Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат — это если общее число набранных Вами баллов отличается от максимального на 1-2%. Практика и тестыПри изучении курса рекомендуется повторять описываемые действия на демонстрационной версии сайта, установленной локально или в Виртуальной лаборатории. После изучения курса пройдите тесты на сертификацию. При успешной сдаче линейки тестов со страницы Моё обучение скачайте сертификат об успешном прохождении курса в формате PDF. Также Вы можете поделиться ссылкой на страницу со своими сертификатами. Для этого на странице Моё обучение отметьте опцию Разрешить публичный доступ к резюме студента и скопируйте ссылку на страницу резюме . Страница с Вашим резюме будет доступна всем, кому Вы отправите ссылку на неё. Комментарии к урокам
Для преподавания офлайнЕсли данный курс берётся в качестве основы для офлайнового преподавания, то рекомендуемая продолжительность: 2 дня (16 академических часов). Если нет интернетаСкачать материалы курса в формате EPUB. Файлы формата EPUB Чем открыть файл на iPhone: Windows: iOS Linux: Как проходить учебный курс?Источник Ошибки загрузки файловЕсли у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно, Выгрузка на сайт завершилась с ошибками. import.xml: Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.Увидели такую ошибку и думаете «в коде кто-то накосячил»? А вот совсем не факт. А началось все довольно безобидно. Позвонил старый клиент у которого уже года 2-3 работает магазин в связке с 1С и пожаловался что обмен перестал работать. Полез я к нему в 1С и вижу, что обмен действительно падает причем с разными ошибками и на разных файлах. Первое что сделали — перешли на более мощный тариф хостинга. Половина зоопарка ошибок исчезла. Однако ошибка Выгрузка на сайт завершилась с ошибками. осталась и уходить не собиралась. Пробовали выгружать и на тиражный магазин и на VDS на который другая 1С прекрасно все грузит — везде одна и та же ошибка. В итоге обратились в поддержку Битрикса. Судя по оперативности и точности ответов поддержка знает о проблеме. А суть ответов была в следующем: поддержка вставила отладочную печать и попросила сделать выгрузку. Отсюда можно видеть, что одна из картинок имеет mimetype: application/octet-stream. Кому интересно — вся отладка заключается в изменении файла /bitrix/modules/main/classes/general/file.php: Попросил поддержку исправить этот баг в импорте, но мы то с вами знаем сколько такие неважные исправления могут делаться. Поэтому я просто оставлю это сообщение здесь. Возможно кому-то поможет сэкономить время. Источник Нельзя просто взять и интегрировать сайт с 1С. (с) Народное творчество. Цель написания поста – изложить всю информацию по теме человеческим языком. Интеграция сайта на 1С-Битрикс: Управление сайтом и 1С — неисчерпаемый источник вопросов и проблем. На сайте идей для Битрикс в соответствующем разделе 16 страниц, на форуме про это больше 23 000 сообщений. В форме обращения в техподдержку Битрикса есть даже отдельный тип заявки «Обмен с 1С». Считается, что интеграция 1С и сайта на Битриксе должна работать из коробки. Самые простые функции действительно можно запустить за час-два. А вот на доработку обмена можно потратить и 10, и 100 часов. Доработка обмена сайта и 1С — это уже магия уровня «эксперт», пугает даже бородатого опытного разработчика. В этой статье мы поговорим о том, как происходит обмен данными между этими двумя монстрами и как можно расширять возможности этого обмена. Статья содержит множество технических деталей обмена и будет полезна в основном программистам, которые хотят разобраться в предмете. В данной статье будет рассмотрена общая теория обмена между двумя IT-системами и два стандартных обмена между 1С и сайтом на 1С-Битрикс: обмен товарами и обмен справочниками. Заметим, что ошибки при работе с файлами данных могут возникать и из-за того, что на компьютере, где установлена учетная система от 1С, имеется файрволл или антивирус, препятствующий корректной передаче файла или блокирующий отправку файла на сервер. Проблемы авторизации 1С не может пройти процедуру аутентификации на сайт и в этой связи выдается ошибка. Вызвано это, как правило, неверной настройкой «1С-Битрикс: Управление сайтом». «1С» может получать некорректный ответ при попытке авторизации на сайте. Это может быть ошибкой разработчика вашего сайта. Дело в том, что при авторизации первой строчкой ответа «1С» ждет «success». Но в ходе создания сайта разработчики могли в процессе разработки случайно оставить вывод в файлах тестовые строки. Например, в файле /bitrix/php_interface/init.php или /bitrix/php_interface/dbconn.php и др. Другая типичная ошибка состоит в правах доступа на импорт каталога. Авторизация может не производиться, если пользователь, проводящий импорт, не обладает достаточным уровнем прав. Проверить это можно на странице Магазин > Настройки магазина > Интеграция с 1С. Перейдите на указанную страницу и произведите следующие действия:
Но в авторизации могут возникать и особые ошибки. Например, при работе PHP в режиме CGI. Это характерно для сайтов, размещенных на Windows-серверах. Можно это проверить с помощью файла test.php, как мы это делали при проверке свойств ZIP. В свойства сервера Apache в строке Server API в таком случае стоит CGI. Можно попытаться обойти эту проблему, а если не получится, то целесообразно обратиться в техподдержку хостинга. Для «обхода» проблемы необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite. Выполните следующие действия:
Ошибки MySQL Ошибки базы данных могут иметь много причин, равно как и решений. Самые очевидные из них сводятся к следующим:
Возможное решение проблемы: $DB->Query(«SET wait_timeout=28800»); Если это не помогает, то необходимо обратиться к службе поддержки хостинговой компании для увеличения таймаута.
[Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE) for operation ‘=’] Причиной является то, что таблицы базы данных в одной кодировке, а сам база в другой. В данном случае база в latin1 и новые таблицы создаются в latin1. При выгрузке из «1С» создается временная таблица b_xml_tree в «некорректной» кодировке latin1. Решение простое и понятное: смена кодировки базы на корректную. Для решения этой проблемы нужно обратиться к хостеру. Логические ошибки Логические ошибки происходят, если пользователем неверно понимается процесс обмена данными и, соответственно, им неверно выполняются какие-то действия. Наиболее частая ошибка при выгрузке каталога товаров появляется вместе сообщением: «Изменения товаров не зарегистрированы. Выгрузка товаров не произведена». Как правило, в этом случае неверно настроен фильтр товаров. Нужно проверить эти настройки. Как правило, там выбраны параметры, которые не позволяют правильно отфильтровать параметры для выгрузки. Но, бывают ситуации, когда такое сообщение – нормальная ситуация. Это происходит в случае, если в настройках Режима обмена данными с WEB-сайтом установлено: Выгружать только измененные объекты с момента последнего обмена. Другая ошибка при выгрузке каталога товаров — сообщение: «Не удалось найти вид номенклатуры». Эта ошибка возникает, если в «1С» нет видов «Услуга» и «Товар». Эти типы критичны для процесса обмена данными с сайтом. Решение проблемы – создать в «1С» указанные виды номенклатуры. Если в процессе обмена возникает ошибка: «Поле объекта не обнаружено», то это означает, что не установлены соответствия для полей заказа в «1С-Битрикс: Управление сайтом». Проверьте настройки, заданные в закладке Экспорт в «1С:Предприятие» страницы Настройки > Настройки продукта > Настройки модулей > Интернет-магазин. Поля «Полное Название» и «Название» критичны для 1С., то есть без задачи соответствия этих полей экспорт выполняться не будет. Обратите внимание, что настройка соответствий производится отдельно для разных типов плательщиков. Резюме Экспорт/импорт товаров и заказов в связке «1С-Битрикс: Управление сайтом» и «1С:Предприятие» позволяет решить проблемы синхронизации данных на сайте и в системе учета. Как и в работе любой другой сложной системы, в этой «связке» могут возникать проблемы и неточности. Однако все они решаемы. Купить Битрикс можно у партнеров 1Софт. Роберт Басыров Все права защищены. По вопросам использования статьи обращайтесь к администраторам сайта Нет. Такие же не надо. там увидите у файлов кто владелец группа. Я так понимаю у части root:root, но у некоторых должно быть нечто другое. Например bitrix:bitrix, www-data:www-data или иное… Тут уже зависит от дистрибутива линукса развернутого на сервере, предыдущего админа и т.п. Вот вам нужно ходить через ftp именно под этим пользователем. (Да и по ssh под root лучше не ходить — обычно это запрещают, а при необходимости логинятся обычным, и уже в терминале меняют пользователя на root) Ну и необходимо будет поменять права к файлам. Для этого находясь в терминале в корне сайта под root. Выполните (в примере имя искомого пользователя bitrix и группа bitrix:
Но вообще с этим со всем надо аккуратно… Лучше пригласить специалиста. Наверняка на том же хостинге есть услуга помощи админа. Добавлено через 56 секунд Содержание
Настроить обмен между «1С» и «1С-Битрикс» – не проблема. Эта функция присутствует «из коробки» начиная с ранних версий продуктов «1С:Предприятие», редакция Управление торговлей и «1С-Битрикс: Управление сайтом» в редакциях Малый бизнес и Бизнес. Даже с учётом имеющейся документации по продукту, у многих разработчиков сайтов возникают сложности в корректной настройке обмена данными между этими системами. Рассмотрим самые частые проблемы, которые возникают у тех кто пытался. Мы выделили несколько групп ошибок:
Далее мы детально рассмотрим сами ошибки и способы их исправления. Ошибки на стороне веб-сервераК этой группе относятся ошибки, возникающие в подсистемах веб-сервера, отвечающих за выполнение PHP-кода. Обычно это: Nginx, Apache и сам интерпретатор языка PHP. Возможны 2 варианта: а) Ошибка действительно вызвана неоптимальными настройками Nginx/Apache/PHP. Если Вы чувствуете неуверенность в своем веб-сервере или совсем недавно на него переехали — привлеките администратора для проверки и изменения настроек.
б) Подобная ошибка может маскировать либо некорректную настройку объема одной порции загружаемых данных (10К товаров за раз, например), либо логическую ошибку в программном коде (например, пересчет каких-нибудь значений в товарах по событию изменения).
Ошибки при работе с файлами данныхДанные ошибки возникают при неверной настройке прав доступа к файлу. Отображение ошибок звучит следующим образом: «Ошибка открытия файла» и «Ошибка записи файла». Возможные причины и их решение: Закончилось место на диске. Удалить старые бэкапы или увеличить тариф на хостинге. По ftp файлы загружаются, а через веб-интерфейс административного раздела сайта нет. Обратиться в техническую поддержку хостинг-провайдера. Не работает или некорректно работает сжатие данных при обмене. Для начала можно попробовать выключить сжатие в настройках модуля обмена. Также можно проверить работу функции zip_open на сервере Откройте в браузере страницу http:// //bitrix/admin/phpinfo.php (Либо выполните команду if (exist_function (“zip_open”)) В браузере отобразится таблица:
Для строки 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. На стороне 1С-Битрикс мы можем увидеть только конечные данные. Если данные приходят корректные, то они попадают в инфоблоки и это видно. Если данные приходят некорректные, то либо неверные данные были выгружены из 1С, либо выставлен неверный тип данных. Например вы пытаетесь передать многострочный список как строку. Модуль отладки обмена от ИНТЕРВОЛГИДля упрощения диагностики мы создали модуль отладки обмена. Он встраивается между 1С и 1С-Битрикс и пишет логи того, что происходит при обмене. По этим логам можно выяснить, где ошибка и исправить её. Отображение логов происходит в административной части сайта. Модуль отладки обмена от ИНТЕРВОЛГИ лучше логов со стороны 1С-Битрикс, потому что он: следит за размером и в результате его работы не закончится место на сайте; логирует обмен справочников и заказов; логирует время обмена и время выполнения одного шага. ВыводыЕсли не разбираться в вопросе и попытаться исправить обмен, то можно сделать только хуже и придётся или переписывать код модуля или ставить модуль обмена заново. Наша компания обладает компетенциями в вопросе отладки обмена. Если у вас возникла подобная проблема, напишите, обсудим. Недавно была ошибка с .htaccess и на сайте висела ошибка 500 , потом кто-то исправил, но теперь в CMS’ке при создании папки или файла выскакивает ошибка — «Не удалось создать папку «Название»» Я заметил, что если создать папку в «/»(корень), — единственное место, где хоть что-то создается -, то в значении «Права на доступ сервера» написано 755 apache apache , а во всех других папках это значение другое — 755 vostorg vostorg ( vostorg — название сайта). Пожалуйста, помогите разобраться. Нужно проверить, чтобы у файлов был тот же владелец, что и пользователь Apache. Кроме того, выставить необходимые права на папки и файлы. Для массовой смены владельца можно использовать: Вот универсальное решение: /home/bitrix/www — директория где лежит сайт
Содержание
Ошибка при загрузке файла больше 4МбПри проверке системы выскакивает ошибка
У меня выделенный сервер, стоит Ubuntu Server 14 x64. В php.ini изменил параметры post_max_size и upload_max_filesize на 16 Мб. В В файле nginx.conf добавил client_max_body_size 100m ; . В файл fcgid.conf добавил FcgidMaxRequestLen (в байтах какое то число, которое обозначает 100Мб). Что ещё нужно сделать что бы сервер загружал более 4 Мб? Сегодня развернул на сервере другой сайт на 1С Битрикс, другая папка для файлов, другая БД, но тот же Apache, Ngnix, MySQL и на другом сайте этот тест проходит. На другом сайте можно загрузить файлы больше 4 Мб. Тогда как на основном сайте нельзя. Может надо что-то с правами для папок? Андрей Ившин, вызовите phpinfo и посмотрите, 1. где лежит php.ini который относится к вашему проекту. Бывает, что их несколько и вы меняете не тот п.с. а лучше поставьте CentOS + Битрикс ВО и там все будет работать из коробки Я ошибся, я перенёс сайт, но он собака переходит автоматом на старый сервер. Вот я и смотрел на старый сервер. Собственно проблема остаётся. А что касается CentOS, ммм. а что в ней лучше чем в Ubuntu? Что такого есть в CentOS чего нет в Ubuntu? А по поводу Битрикс ВО не подойдёт просто потому, что он настроен только на один сайт. В нём нет FTP сервера, нет трёх отдельных пользователей для FTP, да так, что бы каждый FTP пользователь видел только свою папку. Битрикс ВО нет три виртуальных домена, нет трёх разлиных баз данных ну и так далее. Для одного сайта, для одного пользователя Битрикс ВО подойдёт. А вот для троих сайтов к сожалению нет. Источник Ошибка при загрузке файла больше 4МбПри проверке системы выскакивает ошибка
У меня выделенный сервер, стоит Ubuntu Server 14 x64. В php.ini изменил параметры post_max_size и upload_max_filesize на 16 Мб. В В файле nginx.conf добавил client_max_body_size 100m ; . В файл fcgid.conf добавил FcgidMaxRequestLen (в байтах какое то число, которое обозначает 100Мб). Что ещё нужно сделать что бы сервер загружал более 4 Мб? Сегодня развернул на сервере другой сайт на 1С Битрикс, другая папка для файлов, другая БД, но тот же Apache, Ngnix, MySQL и на другом сайте этот тест проходит. На другом сайте можно загрузить файлы больше 4 Мб. Тогда как на основном сайте нельзя. Может надо что-то с правами для папок? Андрей Ившин, вызовите phpinfo и посмотрите, 1. где лежит php.ini который относится к вашему проекту. Бывает, что их несколько и вы меняете не тот п.с. а лучше поставьте CentOS + Битрикс ВО и там все будет работать из коробки Я ошибся, я перенёс сайт, но он собака переходит автоматом на старый сервер. Вот я и смотрел на старый сервер. Собственно проблема остаётся. А что касается CentOS, ммм. а что в ней лучше чем в Ubuntu? Что такого есть в CentOS чего нет в Ubuntu? А по поводу Битрикс ВО не подойдёт просто потому, что он настроен только на один сайт. В нём нет FTP сервера, нет трёх отдельных пользователей для FTP, да так, что бы каждый FTP пользователь видел только свою папку. Битрикс ВО нет три виртуальных домена, нет трёх разлиных баз данных ну и так далее. Для одного сайта, для одного пользователя Битрикс ВО подойдёт. А вот для троих сайтов к сожалению нет. Источник Ошибки при мультизагрузке фотографийУ меня локально работает, на win7. А удаленно та же херня. Глобальней некуда. Обновился и перестала работать))) причём по разному — иногда после загрузки фоток (визуально в загрузчике загружаются все), выкидывает в «доступ запрещён» — теряется авторизация, а бывает просто это сообщение выкидывается без потери сессии 2я попытка — «доступ запрещён» а с 3его раза нормально загрузилось И всё же в чём может быть причина данной ошибки? В php.ini и suhosin.ini увеличил все параметры, отвечающие за загрузку файлов — отчасти помогло увеличение max_file_uploads с 20 до 250 — стало больше загружаться через упрощённую форму (раньше загружалось не больше 20). Подскажите, что делать? В апреле всё прекрасно работало. Источник Битрикс ошибка при загрузке файлаСовременные сайты наполняются содержанием с помощью специального программного обеспечения: CMS. Соответственно, контент-менеджер (или редактор сайта) — это специалист, работающий с CMS.
Для кого этот курс?Примерное время изучения курса — 23 часа 33 минуты, без выполнения Практических заданий и сдачи тестов Курс Контент-менеджер адресован тем, кто работает с содержанием сайта: наполнение, изменение текста, загрузка и размещение картинок и так далее.
У нас часто спрашивают, сколько нужно заплатитьКурс полностью бесплатен. Изучение курса, прохождение итоговых тестов и получение сертификатов — ничего из этого оплачивать не нужно. Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров. Баллы опытаВ конце каждого урока есть кнопка Прочитано! . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится уроке. Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат — это если общее число набранных Вами баллов отличается от максимального на 1-2%. Практика и тестыПри изучении курса рекомендуется повторять описываемые действия на демонстрационной версии сайта, установленной локально или в Виртуальной лаборатории. После изучения курса пройдите тесты на сертификацию. При успешной сдаче линейки тестов со страницы Моё обучение скачайте сертификат об успешном прохождении курса в формате PDF. Также Вы можете поделиться ссылкой на страницу со своими сертификатами. Для этого на странице Моё обучение отметьте опцию Разрешить публичный доступ к резюме студента и скопируйте ссылку на страницу резюме . Страница с Вашим резюме будет доступна всем, кому Вы отправите ссылку на неё. Комментарии к урокам
Для преподавания офлайнЕсли данный курс берётся в качестве основы для офлайнового преподавания, то рекомендуемая продолжительность: 2 дня (16 академических часов). Если нет интернетаСкачать материалы курса в формате EPUB. Файлы формата EPUB Чем открыть файл на iPhone: Windows: iOS Linux: Как проходить учебный курс?Источник Ошибки загрузки файловЕсли у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно, Выгрузка на сайт завершилась с ошибками. import.xml: Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.Увидели такую ошибку и думаете «в коде кто-то накосячил»? А вот совсем не факт. А началось все довольно безобидно. Позвонил старый клиент у которого уже года 2-3 работает магазин в связке с 1С и пожаловался что обмен перестал работать. Полез я к нему в 1С и вижу, что обмен действительно падает причем с разными ошибками и на разных файлах. Первое что сделали — перешли на более мощный тариф хостинга. Половина зоопарка ошибок исчезла. Однако ошибка Выгрузка на сайт завершилась с ошибками. осталась и уходить не собиралась. Пробовали выгружать и на тиражный магазин и на VDS на который другая 1С прекрасно все грузит — везде одна и та же ошибка. В итоге обратились в поддержку Битрикса. Судя по оперативности и точности ответов поддержка знает о проблеме. А суть ответов была в следующем: поддержка вставила отладочную печать и попросила сделать выгрузку. Отсюда можно видеть, что одна из картинок имеет mimetype: application/octet-stream. Кому интересно — вся отладка заключается в изменении файла /bitrix/modules/main/classes/general/file.php: Попросил поддержку исправить этот баг в импорте, но мы то с вами знаем сколько такие неважные исправления могут делаться. Поэтому я просто оставлю это сообщение здесь. Возможно кому-то поможет сэкономить время. Источник Нельзя просто взять и интегрировать сайт с 1С. (с) Народное творчество. Цель написания поста – изложить всю информацию по теме человеческим языком. Интеграция сайта на 1С-Битрикс: Управление сайтом и 1С — неисчерпаемый источник вопросов и проблем. На сайте идей для Битрикс в соответствующем разделе 16 страниц, на форуме про это больше 23 000 сообщений. В форме обращения в техподдержку Битрикса есть даже отдельный тип заявки «Обмен с 1С». Считается, что интеграция 1С и сайта на Битриксе должна работать из коробки. Самые простые функции действительно можно запустить за час-два. А вот на доработку обмена можно потратить и 10, и 100 часов. Доработка обмена сайта и 1С — это уже магия уровня «эксперт», пугает даже бородатого опытного разработчика. В этой статье мы поговорим о том, как происходит обмен данными между этими двумя монстрами и как можно расширять возможности этого обмена. Статья содержит множество технических деталей обмена и будет полезна в основном программистам, которые хотят разобраться в предмете. В данной статье будет рассмотрена общая теория обмена между двумя IT-системами и два стандартных обмена между 1С и сайтом на 1С-Битрикс: обмен товарами и обмен справочниками. Немного теорииИнтеграция — обмен информацией между двумя IT-системами. Иногда называют просто обмен. Определяется форматом данных, протоколом (стандартом) передачи данных, алгоритмом работы Формат = как выглядят данные (например, XML, YML, JSON, CSV). Протокол = как данные оказываются в другом месте (например, HTTP, SIP, SMTP, FTP). Алгоритм = что при этом происходит. Представляется блок-схемой или диаграммой UML Activity. Примеры интеграций:
Процедуру обмена можно разделить на 3 части:
Часто весь обмен называют «импорт» («загрузка») и «экспорт» («выгрузка»). Это не ошибка, по такой формулировкой говорящий показывает, точка зрения какой системы ему ближе. То, что для 1С экспорт товаров, для Битрикса импорт. В дальнейшем тексте статьи мы не будем использовать эти понятия, чтобы не порождать двусмысленности. И еще одно важное уточнение. «1С» — в зависимости от контекста, это может быть компания-легенда «ООО 1С», их разработка «1С:Предприятие» или конкретная конфигурация (например, «1С: Управление торговлей» или «1С:ERP Управление предприятием») с установленным модулем обмена с сайтом . В мире веб-разработки имеется в виду как раз последнее определение. В статье будет действовать аналогичное соглашение. Так же и с сайтом на платформе 1С-Битрикс: Управление сайтом — обычно это просто «Битрикс». РезюмеИнтеграция — обмен данными между двумя системами. Формат — как выглядят данные. Протокол — как передаются данные. 1С — софт. Битрикс — сайт. Краткость — сестра. Стандартные возможности обмена 1С и Битрикса«Из коробки» (без доработок программиста) работают 4 типа обмена:
ПротоколВсе взаимодействия между 1С и Битриксом проводятся по HTTP, синхронно. Т.о. 1С подобна браузеру, она «открывает» специальную страницу, отправляет данные (методами POST и GET) и получает текстовый ответ. Есть даже способ имитировать выгрузку из 1С браузером (и мы часто используем этот трюк во время разработки и отладки). Подробнее про отладку мы рассказали в предыдущей статье «Типовые ошибки интеграции между 1С и 1С-Битрикс». В терминах сетевых взаимодействий 1С — клиент, а сайт — сервер. Обращения всегда инициируются на стороне 1С. В 1С есть настройки адреса сайта, сайт про 1С не знает ничего. Протокол синхронный. 1С отправляет следующий запрос на сайт только после получения ответа на предыдущий (или получения ошибки таймаута). ФорматДанные передаются в двух форматах. Первый формат — текстовый для ответов сайта на запросы из 1С. Сайт выводит в первой строке ответа «success», если завершил некую процедуру, «progress», если продолжает ее выполнять и «error» или «failure», если была ошибка. В последующих строках могут быть дополнительные данные (зависит от каждого конкретного запроса). Второй формат — CommerceML 2 . Основан на XML, в этом формате передаются товары, предложения, цены, склады, заказы и контрагенты (пользователи+платежные профили). АлгоритмПодготовка к обменуВыше мы уже сказали, что протокол обмена — синхронный HTTP. Все перечисленные типы обмена подразумевают выполнение нескольких запросов (шагов обмена) друг за другом. Первые два шага одинаковы для любого типа обмена, различия начинаются дальше Авторизация
Любой обмен начинается с авторизации 1С на сайте методом Basic access. В случае успеха сайт выводит «success», имя и значение Cookie (которую будет проверять во всех последующих запросах), id сессии и прочие параметры (зависят от type — типа обмена). Возможные ошибки
Запрос настроек сайта
На этом шаге 1С узнает важные для обмена настройки сайта. Управление этими параметрами на сайте происходит на странице «Интеграция с 1С» в панели управления сайтом.
Получив эти параметры, 1С начинает формирование данных для передачи на сайт. Если «zip=yes», то все файлы будут переданы как zip-архив. Иначе каждый выгружается по отдельности. Желательно включать всегда. Возможные ошибки
Обмен товарами (1С -> Битрикс)Данный тип обмена (type=catalog) используется для создания и обновления на сайте следующих сущностей:
При обмене товарами 1С формирует XML-файлы, передает их на сайт и контролирует их обработку сайтом. 1С может передать 4 вида файлов: В файлах с префиксом import_ — разделы каталога, товары, свойства товаров. В файлах с префиксом offers_ — SKU. В файлах с префиксом prices_ — цены товаров и предложений. В файлах с префиксом rests_ — остатки товаров и предложений по складам. На шаге авторизации в случае успеха сервер вернет дополнительный параметр timestamp (текущее время). 1С сохранит timestamp и передаст на сайт на последнем шаге обмена товарами. Шаг 1. Передача файла (повторяющийся)
Шаг может выполняется несколько раз. Каждый файл выгружается частями не более file_limit байт (см. предыдущий шаг) в бинарном виде через сырой POST-запрос. Сайт создает файл, если его нет. Имя файла берет из GET-параметра filename и дописывает в него переданный контент. Так продолжается до тех пор, пока 1С не передаст все части этого файла. Возможные ошибки
Шаг 2. Основной
Этот шаг — особенный. Файл уже целиком загружен на сайт и Битрикс готов его обработать. Его обработка может состоять из 11 более мелких операций, о которых 1С ничего не знает. Поэтому в параметре GET приходит mode=import (один и тот же запрос!), но сайт выполняет совершенно разные операции. Текущий прогресс Битрикс сохраняет в сессии в переменной $_SESSION[BX_CML2_IMPORT][NS]. Например, узел STEP в этом массиве отвечает как раз за номер внутренней операции импорта. Шаг 2.1 Распаковка архива (повторяющийся, необязательный)
Шаг исполняется, только если 1С передала файл в формате ZIP. Распаковка происходит в той же директории, где лежат все файлы обмена товарами (по умолчанию — /upload/1c_catalog/). Эта операция не нумеруется внутри Битрикса (значение STEP в сессии не изменяется). Возможные ошибки
Шаг 2.2 Удаление временных таблиц
Работать напрямую с файлом XML (тем более, если он большой) неудобно и неэффективно. Поэтому все данные прочитываются во временную таблицу b_xml_tree. На этом подготовительном шаге таблица b_xml_tree, если она существует, удаляется. Шаг 2.3 Создание временных таблиц
Таблица b_xml_tree создается. Если объявлена PHP константа BX_XML_CREATE_INDEXES_IMMEDIATELY, таблица сразу же индексируется. В конце этого шага Битрикс испускает событие OnBeforeCatalogImport1C . Возможные ошибки
Шаг 2.4 Загрузка файла во временную таблицу (повторяющийся)
Битрикс шаг за шагом начинает читать переданный из 1С файл, добавляя записи в таблицу b_xml_tree. Чтобы избежать проблем с временем исполнения, процесс происходит пошагово. Управление продолжительностью шага происходит на странице «Интеграция с 1С» в панели управления сайтом. Возможные ошибки
Шаг 2.5 Индексация временных таблиц
Для повышения скорости работы импорта таблица b_xml_tree индексируется после прочтения файла. Возможные ошибки
Шаг 2.6 Импорт метаданных
На этом шаге создаются или обновляются следующие данные:
Важно: никакие сущности при импорте метаданных не удаляются. Случайно выгруженный из 1С склад или тип цены остается на сайте, пока администратор не удалит его вручную. Возможные ошибки
Шаг 2.7 Импорт разделов каталога
На этом шаге в инфоблоке создаются и обновляются все разделы каталога, которые были в XML файле. Сопоставление разделов из XML-файла и в БД происходит по XML_ID. Если на сайте нет раздела с XML_ID из файла, он создается. Если есть, то выполняется сравнение полей из XML файла с аналогичными полями в БД. Если изменения нет, то Битрикс только обновляет поле TIMESTAMP_X и пропускает раздел. Если изменения есть — происходит полноценное обновление. Это происходит независимо от настроек сайта. Для экономии ресурсов сервера добавление разделов происходит без пересчета дерева (речь о полях LEFT_MARGIN и RIGHT_MARGIN). Возможные ошибки Так как импорт разделов не пошаговый, при обмене большом дереве разделов на сайте может возникать ошибка превышения времени исполнения. Решения три.
Объясним, как поможет повтор шага или всей выгрузки. Допустим, в XML-файле и на сайте 20001 раздел. Пусть за один проход Битрикс успевает импортировать только 10000 разделов.
Битрикс каждый раз обрабатывает столько разделов, сколько успевает. При повторении выгрузки первые 10000 разделов он пропустит (обновит только TIMESTAMP_X) и обновит еще 10000 разделов, пока не наступил тайм-аут. И только на 3-ей выгрузке из 1С шаг будет завершен корректно. Шаг 2.8 Пересчет дерева разделов
На этом шаге Битрикс выполняет две задачи:
В старых версиях 1С отличить полную выгрузку от частичной просто: при частичной в узле «Классификатор» был атрибут СодержитТолькоИзменения=»true», при полной его не было. В 2019 году 1С всегда выгружает этот атрибут. Если этого атрибута нет, Битрикс мог (и до сих пор может, просто этот код не используется) удалить, деактивировать старые разделы (или пропустить их). На выбор влиял параметр на странице «Интеграция с 1С». Сейчас эта настройка уже ни на что не влияет и ни деактивации, ни удаления не происходит. Также на этом шаге пересчитываются служебные поля LEFT_MARGIN и RIGHT_MARGIN всех разделов. Шаг 2.9 Импорт товаров (повторяющийся)
На этом шаге в инфоблоке создаются и обновляются все товары, которые были в XML файле. Сопоставление товаров в файле товарам на сайте происходит по полю XML_ID. Если на сайте нет товара с XML_ID из файла, он создается. Если есть, то выполняется сравнение полей из XML файла с аналогичными полями в БД. Если изменения нет, и задан параметр «Использовать контрольные суммы элементов для оптимизации обновления каталога», Битрикс только обновляет поле TIMESTAMP_X и пропускает товар. Иначе происходит полноценное обновление. При импорте товара заполняется поле TMP_ID. Значение для этого поля хранится в узле <НомерВерсии>. Если узла нет — Битрикс вычисляет контрольную сумму от всей информации о товаре из XML файла. Возможные ошибки
Шаг 2.10 Деактивация/удаление товаров (повторяющийся)
На этом шаге раньше (как и на шаге 2.8 Пересчет дерева разделов ) Битрикс проводил чистку товаров. Чистка товаров происходила только если в узле “Классификатор” XML файла не было пометки СодержитТолькоИзменения=»true» (старый формат выгрузки). Есть аналогичная настройка для выбора, что делать с товарами. В 2019 году на этом шаге ничего не происходит. Шаг 2.11 Завершение импорта
Служебный шаг. Обработки данных нет, только испускается событие OnSuccessCatalogImport1C . Шаг 3. Деактивация старых данных
На этом шаге в 2019 году Битрикс деактивирует все товары и разделы каталога, не затронутые в текущей сессии. Для этого время последнего изменения сравнивается с timestamp, который передает 1С — время начала текущей сессии, полученное на шаге авторизации. Напомним, что эти настройки в панели управления сайта сейчас ни на что не влияют (всегда происходит деактивация): Этот шаг будет выполнен, только если современная 1С делает полную выгрузку. Для выгрузки изменений и в старых версиях 1С этого шага нет. Шаг 4. Завершение импорта
Служебный шаг. Обработки данных нет, только испускается недокументированное событие модуля catalog OnCompleteCatalogImport1C. Аргументы обработчика аналогичны обработчикам события OnSuccessCatalogImport1C , возвращаемого значения нет. Обмен справочниками (1С -> Битрикс)Данный тип обмена (type=reference) используется для создания и обновления на сайте HL-блоков. Этот тип намного короче чем обмен товарами и повторяет многие из его шагов. Часто обмен справочниками — простой и быстрый способ расширить стандартные функции обмена. Шаг 1. Передача файла (повторяющийся)см. аналогичный шаг обмена товарами , (отличается только mode, в данном типе обмена mode=reference). Шаг 2. Основной
Шаг 2.1 Распаковка архива (повторяющийся, необязательный) см. аналогичный шаг обмена товарами . Шаг 2.2 Подготовка справочника
На этом шаге Битрикс создает HL-блок (если не существует) и все UF-поля. В начале шага испускается событие модуля catalog OnBeforeCatalogImportHL. Событие недокументированное, в обработчики передаются массив параметров компонента и путь к XML-файлу. Обработчик может вызвать ошибку и вернуть произвольное сообщение. Важно знать следующие особенности импорта справочников:
Возможные ошибки
Расшифровка кодов ошибок.
Шаг 2.3 Импорт элементов (повторяющийся)
На этом шаге Битрикс импортирует все элементы HL-блока. Если выгрузка была полной, Битрикс удаляет все элементы HL-блока, у которых значение поля UF_VERSION не начинается с <ID текущей сессии> + «#» В конце шага Битрикс испускает событие модуля catalog OnSuccessCatalogImportHL. Аргументы — массив параметров компонента и путь к файлу. Возможные ошибки Аналогичны ошибкам на предыдущем шаге. Формат файловФормат файла обмена товарамиФормат файла обмена предложениямиФормат файла обмена ценами товаров и предложенийФормат файла обмена остатками товаров и предложенийФормат файла обмена справочникамиПоясним некоторые места этого XML.
Как дорабатывать обмен?Все запросы (при стандартном обмене) 1С присылает на служебную страницу /bitrix/admin/1c_exchange.php. Но если заглянуть в файл, выяснится что вся логика скрыта в недрах модуля «Торговый каталог» в файле /bitrix/modules/sale/admin/1c_exchange.php. Эти страницу нельзя изменять, но можно скопировать (обычно мы копируем в /bitrix/admin/1c_exchange_custom.php) и изменить адрес в 1С. На этой странице, в зависимости от переданных GET-параметров (совсем как комплексные компоненты в режиме не-ЧПУ) подключаются разные простые компоненты. Компоненты без шаблонов. Значительная часть логики вынесена из этих компонентов в классы. Связь видов обмена, GET-параметров, компонентов и основных классов приведена ниже в таблице.
Существует 3 принципиально разных способа доработать обмен с 1С:
Первый способ нужен для самых простых случаев, ничего серьезного сделать так не получится. Второй способ реализуется так:
После правок на сайте нужно изменить параметр «Адрес сайта и путь до скрипта обмена» в 1С. Имя пользователя и пароль одинаковые как для стандартного обмена, так и для доработанного. Третий способ(через справочники) подходит, если у нужной сущности 1С совсем нет аналога на сайте или по каким-то причинам стандартный импорт совсем не годится. У модуля highloadblock есть все необходимые события (создание, редактирование, удаление) и для ненагруженных проектов это достаточно неплохое решение. С помощью выгрузки справочников решаются такие задачи, как создание пользователей на сайте через 1С, выгрузка персональных цен и скидок, бонусов и информации для личного кабинета партнеров. Отладка обмена — отдельный больной вопрос. Обычно решается логированием всех происходящих в недрах Битрикса процессов. В ИНТЕРВОЛГЕ разработали свою систему логирования обмена, которая представляет весь процесс в виде диаграммы Гантта. На ней сразу видно, если идут одновременно 2 обмена или 1С не дожидается ответа и начинает слать новые запросы. ЗаключениеЧасто самой сложной задачей в процессе разработки является именно интеграция с 1С. Отчетливое понимание происходящих в Битриксе процессов необходимо для серьезных проектов. Автор статьи: Анатолий Ерофеев. Ошибки конвертацииПри попытке открыть файл на диске может произойти ошибка конвертации.
В каких случаях это может произойти:
Лимит файла для совместного редактирования в Битрикс24 Docs — 100МБ Как решить проблему?
Спасибо, помогло! Спасибо
|