Как выгрузить габариты товара (длину, ширину, высоту) из 1С в Битрикс?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

Этап 1: Где найти и как заполнить реквизиты габаритов в 1С

Основной вопрос, который возникает вначале: где в карточке номенклатуры находятся поля для ввода длины, ширины и высоты? Многие ищут их непосредственно в основной форме элемента справочника «Номенклатура» и, не найдя, приходят к выводу, что требуется доработка конфигурации. На самом деле, это стандартный функционал, но его расположение может быть неочевидным.

В типовых конфигурациях 1С, таких как «Управление торговлей» или «Комплексная автоматизация», габариты товара тесно связаны с механизмом упаковок. Это логично, так как габариты могут отличаться в зависимости от того, говорим мы об одной единице товара или о целой коробке.

Рассмотрим, где находятся нужные нам поля:

  1. Длина, Ширина, Высота в упаковке: Основное место хранения габаритов — это справочник «Упаковки единиц измерения», подчиненный номенклатуре. Чтобы их найти, откройте карточку товара, перейдите по ссылке «Упаковки» и откройте нужную упаковку (например, базовую «шт.»). В форме упаковки вы найдете поля для ввода линейных размеров.
  2. Длина в карточке номенклатуры: В некоторых конфигурациях поле «Длина» может дублироваться непосредственно в самой карточке товара для удобства. Однако «Ширина» и «Высота», как правило, всегда находятся в упаковке.

Важный момент: если вы не видите полей для габаритов или даже самой возможности использовать упаковки, скорее всего, эта опция отключена в настройках программы. Давайте проверим и включим ее.

Как включить использование упаковок в 1С:

  1. Перейдите в раздел «НСИ и администрирование».
  2. В панели навигации выберите «Склад и доставка».
  3. Найдите флажок «Упаковки номенклатуры» и установите его.

После активации этой настройки в карточках номенклатуры появятся все необходимые поля и ссылки для работы с упаковками и их габаритами.

Этап 2: Настройка выгрузки габаритов в модуле обмена с Битрикс

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

Разберем по шагам настройку выгрузки:

  1. Откройте настройки обмена с сайтом (обычно в разделе «Продажи» или «НСИ и администрирование»).
  2. Перейдите к настройке выгрузки информации о номенклатуре.
  3. Откройте закладку «Товары».
  4. Внутри нее найдите и переключитесь на закладку «Дополнительные реквизиты».

Здесь вы можете сопоставить реквизиты из 1С с полями, которые ожидает Битрикс. Вам нужно будет добавить строки в таблицу и указать, что реквизиты «Длина», «Ширина» и «Высота» из 1С должны выгружаться в соответствующие поля на сайте.

Этап 3: Решение проблемы несоответствия единиц измерения (метры vs миллиметры)

Это самая частая и коварная проблема. Вы все настроили, данные выгружаются, но на сайте видите странные цифры. Например, товар с длиной 1.5 метра в 1С отображается в Битриксе как 1.5 миллиметра. В чем причина?

Проблема в том, что в 1С габариты чаще всего хранятся в метрах (м), в то время как Битрикс по умолчанию ожидает их в миллиметрах (мм). Стандартный модуль обмена просто передает числовое значение (1.5), не выполняя конвертацию единиц. В итоге 1.5 метра становятся 1.5 миллиметрами.

Эту проблему необходимо решать, и вот несколько способов, от простого к сложному.

Способ 1: Проверка настроек модуля обмена

В некоторых современных версиях модуля обмена с Битрикс разработчики могли добавить специальные настройки для конвертации. Перед тем как прибегать к коду, внимательно изучите все параметры в настройках узла обмена в 1С и в настройках модуля «Торговый каталог» на стороне Битрикса. Возможно, там есть поле для указания коэффициента (множителя), который нужно применить к габаритам. Если такая настройка есть, просто укажите значение 1000.

Способ 2: Доработка модуля обмена в 1С (рекомендуемый)

Это самый надежный и правильный способ, так как он исправляет данные в источнике перед отправкой. Решение заключается в программном вмешательстве в процесс формирования XML-файла обмена. Для этого используются специальные точки расширения (события), предусмотренные в модуле.

Задача для программиста 1С:

  1. Найти в коде модуля обмена процедуру, ответственную за формирование данных о товарах (например, в общем модуле «ОбменСайтом» или «ОбменСайтомСервер»).
  2. Найти событие (обработчик), которое вызывается перед записью свойств товара в XML. Часто такие обработчики называются «ПриПолученииСвойствНоменклатуры» или что-то подобное.
  3. В коде обработчика нужно проверить, что текущее выгружаемое свойство — это один из габаритов (длина, ширина, высота).
  4. Если это габарит, необходимо получить его числовое значение и умножить на 1000.
  5. Записать в структуру выгрузки уже преобразованное значение.

Таким образом, на сайт будет отправлено уже корректное значение в миллиметрах. Это гарантирует, что данные будут правильными вне зависимости от настроек на стороне сайта.

Способ 3: Обработка данных на стороне Битрикс

Если у вас нет возможности или желания изменять код в 1С, аналогичную операцию можно выполнить на стороне сайта. Для этого программист Битрикс может использовать обработчик события, который срабатывает перед обновлением или добавлением элемента инфоблока.

Основным событием для этой задачи является OnBeforeIBlockElementUpdate. В обработчике этого события нужно:

  1. Проверить, что обновление происходит в инфоблоке торгового каталога.
  2. Получить значения полей габаритов из массива данных $arFields, который приходит от 1С.
  3. Умножить каждое значение на 1000.
  4. Подменить старые значения в массиве $arFields на новые, преобразованные.

В результате в базу данных Битрикса товар сохранится уже с корректными габаритами в миллиметрах. Этот способ хорош, если доработки в 1С по каким-то причинам затруднительны.

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

← На главную