Обмен данными с 1С

Александр Стерхов

Веб-разработчик

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

Постановка задачи

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

Решение задачи

Установка дополнения модуля обмена 1С

Устанавливаем дополнение модуля обмена с 1С с сайта Битрикса. Не будем останавливаться на этом пункте подробно, так как инструкция по установке и настройке модуля находится в скачанном архиве.

Первый запуск

После установки и настройки пробуем запустить обмен данными. Тут же сталкиваемся с первой трудностью: появляется сообщение об ошибке

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

  1. Заходим в 1С в режиме Конфигуратора.
  2. Находим справочник Номенклатура, выбираем вкладку Данные, в свойстве Описание устанавливаем максимальную длину 1000 символов.

Следующая ошибка

Причина этой ошибки в разнице конфигураций 1С УТ 11.1.4.10 и 1С УТ 11.1.4.13

Решаем эту проблему так:

В 1С в режиме Конфигуратора находим модуль Общие — Общие модули — Б_ОбменССайтомСервер и меняем строку

ТОГДА Остатки.ВНаличииОстаток - Остатки
на
ТОГДА Остатки.ВНаличииОстаток - Остатки.ВРезервеСоСкладаОстаток - Остатки.ВРезервеПодЗаказОстаток

Очередная попытка...

Обновляем конфигурацию Базы данных, запускаем 1С и выполняем обмен.

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

В битриксе есть ошибка которая не дает изменить данные заказа выгрузкой.
Ошибка исправлена, но пока еще не вышло обновление с исправлением.
Замените в файле /bitrix/modules/sale/general/order_loader.php строку:
if($arOrder["VERSION_1C"] != $orderInfo["VERSION_1C"]) // skip update if the same version
на
if($arOrder["VERSION_1C"] != $orderInfo["VERSION_1C"] || (strlen($orderInfo["VERSION_1C"]) <= 0 || strlen($arOrder["VERSION_1C"]) <= 0)) // skip update if the same version
и строку
if(is_array($val[GetMessage("CC_BSC1_ITEM_UNIT")]))
на
if(is_array($val[GetMessage("CC_BSC1_ITEM_UNIT")]) && is_array($val[GetMessage("CC_BSC1_ITEM_UNIT")][0]["#"]))
Это должно решить проблему.

Удачная выгрузка

Запускаем обмен ещё раз. Всё хорошо — ошибок нет, заказы и товары обновляются.

Результат

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

Комментарии

Тут без вас никак. Поделитесь с нами вашими мыслями

  • Спасибо большое! Была старая версия Битрикс, патч на order_loader решил проблему. Да, надо чаще обновлять Битрикс :)
Горячие вакансии