Настройка выгрузки единиц измерения из 1С в 1С-Битрикс
Единицы измерения — техническая деталь, которую часто упускают при интеграции. Пока продаёшь всё в штуках, это незаметно. Но у дистрибьютора стройматериалов один товар продаётся в погонных метрах, другой в квадратных, третий в рулонах по 50 метров. Передать это корректно на сайт — нетривиальная задача.
Как единицы измерения хранятся в 1С
В 1С:УТ единицы измерения хранятся в справочнике КлассификаторЕдиницИзмерения (ОКЕИ). Каждая единица имеет:
- Код по ОКЕИ (796 = штука, 006 = метр, 055 = кг и т.д.)
- Краткое наименование (шт, м, кг)
- Полное наименование
Номенклатура может иметь несколько единиц измерения:
- Базовая единица — в которой ведётся складской учёт
- Единица продажи — в которой продаётся покупателю (может отличаться)
- Дополнительные единицы — с коэффициентами пересчёта
Пример: кабель учитывается в метрах (базовая), продаётся в бухтах по 100 метров (единица продажи). Покупатель заказывает «2 бухты» → на склад уходит запрос на 200 метров.
Передача единиц измерения в CommerceML
В CommerceML 2.08 единица измерения передаётся в теге БазоваяЕдиница:
<Товар>
<Ид>товар-guid</Ид>
<Наименование>Кабель NYM 3x2.5</Наименование>
<БазоваяЕдиница КодОКЕИ="006" НаименованиеПолное="Метр">м</БазоваяЕдиница>
</Товар>
Битрикс сохраняет единицу измерения в поле MEASURE элемента инфоблока и в таблице b_catalog_measure. При добавлении в корзину единица отображается рядом с количеством.
Дополнительные единицы — с коэффициентами — передаются через ЕдиницыИзмерения:
<ЕдиницыИзмерения>
<ЕдиницаИзмерения>
<Код>бухта</Код>
<НаименованиеПолное>Бухта</НаименованиеПолное>
<НаименованиеКраткое>бух</НаименованиеКраткое>
<Коэффициент>100</Коэффициент>
<ЦенаВключаетНалоги>false</ЦенаВключаетНалоги>
</ЕдиницаИзмерения>
</ЕдиницыИзмерения>
Стандартный модуль обмена Битрикс поддерживает этот тег и создаёт единицы измерения в торговом каталоге (b_catalog_unit) с коэффициентами пересчёта.
Настройка кратности в Битрикс
Для некоторых товаров минимальная покупка — кратна единице измерения. Рулон обоев нельзя купить «полрулона». Упаковка гвоздей — только целыми коробками.
В Битрикс это настраивается через:
-
MEASURE_RATIO— кратность (например, 1 для штук, 0.5 для весового товара) - Поле количества в корзине с шагом (атрибут
stepв форме добавления)
При обмене с 1С: если в УТ у номенклатуры есть кратность упаковки — передаём её в ДополнительныеРеквизиты и обрабатываем в обработчике импорта:
if (isset($arXML['PACKAGE_RATIO'])) {
// Устанавливаем кратность в торговом каталоге
CCatalogProduct::Update($elementId, [
'MEASURE_RATIO' => floatval($arXML['PACKAGE_RATIO']),
]);
}
Весовые товары
Для весового товара (продаётся в кг с точностью до 0,001) в корзине нужно поле ввода с нецелым значением. Битрикс поддерживает это через настройку MEASURE_RATIO < 1 или через свойство STEP в торговом каталоге.
Цена при этом — за базовую единицу (за 1 кг). Итоговая стоимость = цена × введённое количество.
Строительные материалы: мультиединичный каталог
Строительный магазин — классический пример сложных единиц измерения:
| Товар | Единица учёта | Единица продажи | Коэффициент |
|---|---|---|---|
| Ламинат | м² | Уп (2,04 м²) | 2,04 |
| Кабель | м | Бухта (100 м) | 100 |
| Цемент | кг | Мешок (25 кг) | 25 |
| Профиль | м | Пруток (6 м) | 6 |
Каждая строка — отдельная настройка единицы измерения и кратности в Битрикс. При обмене с 1С все эти коэффициенты должны передаваться корректно.
Кейс: оптовый магазин кабельной продукции
Оптовик кабелей: 4000 позиций, все в метрах. Продажа — бухтами (длина бухты разная для разных кабелей: 25, 50, 100, 200 м). Покупатель на сайте выбирает количество бухт, но видит итоговую длину в метрах.
Реализация:
- Базовая единица в 1С и Битрикс — метр
- Единица продажи (из 1С) — бухта с коэффициентом (разным для каждой позиции)
- В карточке товара: поле «Количество бухт» + поле «Итого метров» (автопересчёт через JS)
- В корзине: хранится количество в метрах (базовых единицах), отображается в бухтах
Коэффициент бухты передаётся из 1С в ЕдиницыИзмерения. При обновлении — автоматически обновляется в Битрикс при следующем обмене номенклатурой.







