При настройке обмена данными между 1С и сайтом на Битрикс часто возникает задача выгружать весогабаритные характеристики товаров: длину, ширину и высоту. Эти данные критически важны для расчета стоимости доставки. Однако пользователи нередко сталкиваются с двумя основными проблемами: не могут найти, где в 1С заполнять эти реквизиты, а после настройки обнаруживают, что единицы измерения передаются некорректно. Разберем обе эти ситуации по шагам и найдем решение.
Основной вопрос, который возникает вначале: где в карточке номенклатуры находятся поля для ввода длины, ширины и высоты? Многие ищут их непосредственно в основной форме элемента справочника «Номенклатура» и, не найдя, приходят к выводу, что требуется доработка конфигурации. На самом деле, это стандартный функционал, но его расположение может быть неочевидным.
В типовых конфигурациях 1С, таких как «Управление торговлей» или «Комплексная автоматизация», габариты товара тесно связаны с механизмом упаковок. Это логично, так как габариты могут отличаться в зависимости от того, говорим мы об одной единице товара или о целой коробке.
Рассмотрим, где находятся нужные нам поля:
«Упаковки единиц измерения», подчиненный номенклатуре. Чтобы их найти, откройте карточку товара, перейдите по ссылке «Упаковки» и откройте нужную упаковку (например, базовую «шт.»). В форме упаковки вы найдете поля для ввода линейных размеров.«Длина» может дублироваться непосредственно в самой карточке товара для удобства. Однако «Ширина» и «Высота», как правило, всегда находятся в упаковке.Важный момент: если вы не видите полей для габаритов или даже самой возможности использовать упаковки, скорее всего, эта опция отключена в настройках программы. Давайте проверим и включим ее.
Как включить использование упаковок в 1С:
«НСИ и администрирование».«Склад и доставка».После активации этой настройки в карточках номенклатуры появятся все необходимые поля и ссылки для работы с упаковками и их габаритами.
После того как мы заполнили габариты в 1С, необходимо указать модулю обмена, что эти данные нужно передавать на сайт. Это делается в настройках узла обмена с сайтом.
Разберем по шагам настройку выгрузки:
«Продажи» или «НСИ и администрирование»).Здесь вы можете сопоставить реквизиты из 1С с полями, которые ожидает Битрикс. Вам нужно будет добавить строки в таблицу и указать, что реквизиты «Длина», «Ширина» и «Высота» из 1С должны выгружаться в соответствующие поля на сайте.
Это самая частая и коварная проблема. Вы все настроили, данные выгружаются, но на сайте видите странные цифры. Например, товар с длиной 1.5 метра в 1С отображается в Битриксе как 1.5 миллиметра. В чем причина?
Проблема в том, что в 1С габариты чаще всего хранятся в метрах (м), в то время как Битрикс по умолчанию ожидает их в миллиметрах (мм). Стандартный модуль обмена просто передает числовое значение (1.5), не выполняя конвертацию единиц. В итоге 1.5 метра становятся 1.5 миллиметрами.
Эту проблему необходимо решать, и вот несколько способов, от простого к сложному.
В некоторых современных версиях модуля обмена с Битрикс разработчики могли добавить специальные настройки для конвертации. Перед тем как прибегать к коду, внимательно изучите все параметры в настройках узла обмена в 1С и в настройках модуля «Торговый каталог» на стороне Битрикса. Возможно, там есть поле для указания коэффициента (множителя), который нужно применить к габаритам. Если такая настройка есть, просто укажите значение 1000.
Это самый надежный и правильный способ, так как он исправляет данные в источнике перед отправкой. Решение заключается в программном вмешательстве в процесс формирования XML-файла обмена. Для этого используются специальные точки расширения (события), предусмотренные в модуле.
Задача для программиста 1С:
«ОбменСайтом» или «ОбменСайтомСервер»).«ПриПолученииСвойствНоменклатуры» или что-то подобное.Таким образом, на сайт будет отправлено уже корректное значение в миллиметрах. Это гарантирует, что данные будут правильными вне зависимости от настроек на стороне сайта.
Если у вас нет возможности или желания изменять код в 1С, аналогичную операцию можно выполнить на стороне сайта. Для этого программист Битрикс может использовать обработчик события, который срабатывает перед обновлением или добавлением элемента инфоблока.
Основным событием для этой задачи является OnBeforeIBlockElementUpdate. В обработчике этого события нужно:
$arFields, который приходит от 1С.$arFields на новые, преобразованные.В результате в базу данных Битрикса товар сохранится уже с корректными габаритами в миллиметрах. Этот способ хорош, если доработки в 1С по каким-то причинам затруднительны.
Подводя итог, выгрузка габаритов — стандартная задача, которая требует внимательности к настройкам и понимания особенностей хранения данных в обеих системах. Убедитесь, что у вас включены упаковки, правильно настроен обмен, и не забудьте про конвертацию единиц измерения одним из предложенных способов.