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

Из ошибки видно, что причиной проблемы является отсутствие ограничения на максимальное количество символов в поле Номенклатура.Описание
. Решается эта проблема следующим образом:
- Заходим в 1С в режиме Конфигуратора.
- Находим справочник
Номенклатура
, выбираем вкладкуДанные
, в свойствеОписание
устанавливаем максимальную длину 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 продуктивнее работать с клиентами.
Комментарии
Тут без вас никак. Поделитесь с нами вашими мыслями