Настроить обмен между «1С» и «1С-Битрикс» – не проблема. Эта функция присутствует «из коробки» начиная с ранних версий продуктов «1С:Предприятие», редакция Управление торговлей и «1С-Битрикс: Управление сайтом» в редакциях Малый бизнес и Бизнес.
Даже с учётом имеющейся документации по продукту, у многих разработчиков сайтов возникают сложности в корректной настройке обмена данными между этими системами. Рассмотрим самые частые проблемы, которые возникают у тех кто пытался.
Мы выделили несколько групп ошибок:
- проблемы авторизации;
- ошибки на стороне сервера;
- ошибки при работе с файлами данных;
- ошибки MySQL;
- логические ошибки.
Далее мы детально рассмотрим сами ошибки и способы их исправления.
Ошибки на стороне веб-сервера
К этой группе относятся ошибки, возникающие в подсистемах веб-сервера, отвечающих за выполнение PHP-кода. Обычно это: Nginx, Apache и сам интерпретатор языка PHP.
Возможны 2 варианта:
а) Ошибка действительно вызвана неоптимальными настройками Nginx/Apache/PHP. Если Вы чувствуете неуверенность в своем веб-сервере или совсем недавно на него переехали — привлеките администратора для проверки и изменения настроек.
б) Подобная ошибка может маскировать либо некорректную настройку объема одной порции загружаемых данных (10К товаров за раз, например), либо логическую ошибку в программном коде (например, пересчет каких-нибудь значений в товарах по событию изменения).
Способы решения:
- уменьшать объем передаваемых за раз данных (проверить на 1 товаре, но лучше выставлять значение поочередно, 1, 100, 1000, 10000 и смотреть, какое значение оптимально для ваших настроек);
- временно закомментировать обработчики событий в файле /bitrix/php_interface/init.php, может быть они мешают обмену.
Ошибки при работе с файлами данных
Данные ошибки возникают при неверной настройке прав доступа к файлу.
Отображение ошибок звучит следующим образом: «Ошибка открытия файла» и «Ошибка записи файла».
Возможные причины и их решение:
Проблемы авторизации
Самая распространённая проблема, если пользователь не указал данные или указал их неверно.
Ошибки MySQL
Ошибки возникают при соединении с базой данных MySQL, настроенной на сайте.
Логические ошибки
Ошибки пользователей неверно понимающих процесс обмена данными и, соответственно, неверно выполняющих какие-то действия.
Диагностика отладки
Мы применяем два инструмента отладки обмена между 1С и 1С-Битрикс.
Отладка обмена на стороне 1С-Битрикс
При настройке выгрузки необходимо проверить существование папки /upload/1c_catalog/. В эту папку будут загружаться файлы при обмене.
При необходимости, можно удалять из папки файлы последнего обмена, т.к. по завершению обмена файлы последней операции будут храниться именно в этой папке.Выполнение этой задачи возможно сделать автоматически, например запустить "Режим отладки" процесса обмена на сайте. При включенном "режиме отладки" не будут удаляться старые файлы из этого каталога после успешного обмена.
Включить "режим отладки" можно отредактировав файл dbconn.php.
А именно, создать константу такого вида:
define("BX_CATALOG_IMPORT_1C_PRESERVE", true);
На стороне 1С-Битрикс мы можем увидеть только конечные данные. Если данные приходят корректные, то они попадают в инфоблоки и это видно. Если данные приходят некорректные, то либо неверные данные были выгружены из 1С, либо выставлен неверный тип данных. Например вы пытаетесь передать многострочный список как строку.
Модуль отладки обмена от ИНТЕРВОЛГИ
Для упрощения диагностики мы создали модуль отладки обмена.
Он встраивается между 1С и 1С-Битрикс и пишет логи того, что происходит при обмене. По этим логам можно выяснить где ошибка и исправить её. Отображение логов происходит в административной части сайта.
Модуль отладки обмена от ИНТЕРВОЛГИ лучше логов со стороны 1С-Битрикс, потому что он:
- следит за размером и в результате его работы не закончится место на сайте;
- логирует обмен справочников и заказов;
- логирует время обмена и время выполнения одного шага.
Выводы
Если не разбираться в вопросе и попытаться исправить обмен, то можно сделать только хуже и придётся или переписывать код модуля или ставить модуль обмена заново.
Наша компания обладает компетенциями в вопросе отладки обмена. Если у вас возникла подобная проблема, напишите, обсудим.