Налаштування вивантаження одиниць виміру з 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С у ОдиниціВиміру. При оновленні — автоматично оновлюється в Бітрікс при наступному обміні номенклатурою.







