При интеграции 1С:Управление торговлей 11 и 1С-Битрикс пользователи часто сталкиваются с ситуацией, когда в загруженных заказах поле Склад остается пустым или заполняется некорректно (например, проставляется группа складов вместо конкретного места отгрузки). Особенно остро эта проблема проявляется, если в настройках 1С включена опция «Отгрузка с нескольких складов». Разберем подробно, почему так происходит и как правильно настроить модуль обмена для автоматического заполнения этих данных.
Прежде чем переходить к настройкам, проанализируем, как модуль обмена (в частности, версии 7.x) обрабатывает данные о складах. В типовой конфигурации ЗаказКлиента имеет склад как в шапке документа, так и в табличной части Товары. Если в системе разрешена отгрузка с нескольких складов, то склад в шапке может выступать в роли «Группы складов», а в строках должны быть указаны конкретные физические склады.
Выделим основные причины, по которым автоматическая подстановка не срабатывает:
Рассмотрим самый простой способ без написания кода. Чтобы 1С «узнала» склад, приходящий из XML, необходимо синхронизировать их идентификаторы. Для этого выполним следующие шаги:
Склады.Теперь при загрузке документа модуль успешно найдет объект в базе данных по соответствию кодов.
Разберем, как настроить правила заполнения реквизитов в самом модуле обмена (версия 7.x и выше). Нам необходимо разделить логику заполнения для шапки и для товаров.
В настройках обмена документами переходим на вкладку Настройка параметров обмена, выбираем нужный тип документа и заходим в Настройку реквизитов:
Группа складов, если вы используете мультискладскую отгрузку. Это позволит документу быть валидным, но не будет жестко определять место хранения для каждой позиции.Важный нюанс: Если вы установите фиксированный склад в шапке и при этом в настройках 1С стоит запрет на отгрузку с разных складов, система будет всегда подставлять склад из шапки во все строки.
Если стандартное сопоставление по XML_ID не подходит (например, идентификаторы постоянно меняются или их сложно синхронизировать), проанализируем возможность использования алгоритмов. В настройках реквизитов модуля можно выбрать источник «По алгоритму».
Посмотрим на пример логики, которую можно реализовать в поле алгоритма для склада табличной части:
// Пример логики для поиска склада по наименованию или свойству
НаименованиеСкладаССайта = СообщенияXML.ТекущееЗначение("СкладНаименование");
НайденныйСклад = Справочники.Склады.НайтиПоНаименованию(НаименованиеСкладаССайта);
Если Не НайденныйСклад.Пустая() Тогда
Значение = НайденныйСклад;
Иначе
// Установка склада по умолчанию, если поиск не дал результатов
Значение = Справочники.Склады.НайтиПоКоду("000000001");
КонецЕсли;
Этот способ позволяет гибко обрабатывать входящие данные, например, искать склад не по GUID, а по части наименования или по какому-то пользовательскому свойству заказа, которое Битрикс передает в XML.
Иногда склад отгрузки в Битриксе хранится не в стандартном узле Склад, а в свойствах заказа (особенно при использовании различных кастомных модулей доставки). В таком случае в 1С в настройках реквизита склада нужно указать источник «Из свойств заказа» и прописать код свойства с сайта (например, STORES_ID).
Выясним, как это работает: модуль при загрузке обращается к коллекции свойств заказа, ищет там указанный код и по его значению пытается найти соответствующий склад в справочнике 1С. Это часто решает проблему «пустого склада», когда сайт просто не передает тег <Склад> в блоке товаров.
После внесения изменений выполните следующие действия:
Используя комплексный подход — от синхронизации XML_ID до настройки правил в табличной части товаров — вы обеспечите корректное и автоматическое заполнение складов, что критически важно для дальнейшего резервирования и отгрузки товаров в 1С:УТ 11.