При відкритті картки товару на сайті одягу покупець бачить таблицю розмірів — але в 60% випадків обирає не свій розмір. Ми переписали логіку: замість статичної таблиці — динамічний алгоритм, який на основі зросту, ваги та обхватів видає конкретний розмір з урахуванням посадки моделі. За 10 років реалізували понад 50 таких порадників на 1С-Бітрікс. Після впровадження частка повернень через причину «не підійшов» падає на 15–20%, а конверсія в кошик зі сторінки товару зростає на 12–18%.
Цей проєкт — готовий 1С-Бітрікс підбір розміру для одягу та взуття. Наш порадник розміру Бітрікс базується на алгоритмі підбору одягу, що враховує індивідуальні мірки. Ми гарантуємо зниження повернень Бітрікс на 15–20%. Підбір за мірками Бітрікс дає точність до 85%.
За даними одного з проєктів, точність рекомендації зросла з 60% до 85%, а інвестиції в розробку окупаються за 2–3 місяці за рахунок скорочення логістики та повторних замовлень. При середньому чеку повернення 1 500 грн. зниження на 18% дає економію 270 тис. грн. на кожні 1 000 замовлень. Економія на поверненнях може сягати 30 000 грн щомісяця.
Цей підбір розміру за параметрами на 1С-Бітрікс (bitrix size advisor) однаково добре масштабується на взуття. Розмірна сітка Бітрікс — основа для алгоритму. Інтеграція розмірів Бітрікс з залишками — стандартна задача. Для розробників доступний вихідний код розмірного порадника PHP.
Як алгоритм підбору використовує параметри?
Спочатку зв'язуємо три набори даних:
- Мірки покупця (зріст, вага, обхвати)
- Розмірна сітка товару: для кожного розміру задаємо діапазони фізичних мірок з урахуванням посадки (slim – вузький допуск, oversized – широкий)
- Залишки: перевіряємо, чи є рекомендований розмір на складі, інакше пропонуємо альтернативу
Ключовий момент — діапазони мірок, а не точні значення. Розмір 46 підходить для грудей 88–92 см, а не строго 90. Ширина діапазону залежить від типу посадки: slim fit — ±2 см, oversized — ±5 см. Якщо всі мірки потрапляють в один діапазон — розмір вважається ідеальним. Якщо мірки розкидані між двома сусідніми розмірами — алгоритм обирає більший або менший залежно від посадки та вподобань (наприклад, для облягаючої посадки обирає менший). Розмірний порадник PHP реалізовано з урахуванням усіх вимог.
Чому алгоритмічний підбір кращий за таблицю розмірів?
| Критерій | Таблиця розмірів Бітрікс (статична) | Підбір за параметрами (алгоритмічний) |
|---|---|---|
| Точність | ~60% (покупець сам обирає) | ~85% (система розраховує) |
| Урахування посадки | Ні | Slim/regular/oversized |
| Альтернатива | Ні | Автоматичний підбір сусіднього розміру |
| Інтеграція з залишками | Ні | Перевірка після рекомендації |
| Персоналізація | Ні | Збереження мірок в ОК |
Як видно, алгоритмічний підбір в 1.4 рази точніший за статичну таблицю. Завдяки алгоритму час прийняття рішення скорочується вдвічі.
Архітектура даних
Розширюємо структуру з таблиці розмірів додатковими параметрами допусків. Використовуємо HL-блок для зберігання правил:
CREATE TABLE b_size_fit_rules (
ID SERIAL PRIMARY KEY,
CHART_ID INT NOT NULL REFERENCES b_size_charts(ID),
SIZE_RU VARCHAR(10),
CHEST_MIN NUMERIC(5,1), CHEST_MAX NUMERIC(5,1),
WAIST_MIN NUMERIC(5,1), WAIST_MAX NUMERIC(5,1),
HIPS_MIN NUMERIC(5,1), HIPS_MAX NUMERIC(5,1),
HEIGHT_MIN SMALLINT, HEIGHT_MAX SMALLINT,
WEIGHT_MIN SMALLINT, WEIGHT_MAX SMALLINT,
FIT_TYPE VARCHAR(20) -- 'slim', 'regular', 'oversized'
);
Алгоритм підбору
// SizeFitAdvisor.php
class SizeFitAdvisor {
public function recommend(array $measurements, int $chartId, string $fitType = 'regular'): array {
$rules = SizeFitRulesTable::getList([
'filter' => ['=CHART_ID' => $chartId, '=FIT_TYPE' => $fitType],
'order' => ['SIZE_RU' => 'ASC'],
])->fetchAll();
$scores = [];
foreach ($rules as $rule) {
$score = 0;
$matched = 0;
foreach (['CHEST', 'WAIST', 'HIPS'] as $param) {
if (!isset($measurements[$param])) continue;
$val = (float) $measurements[$param];
$min = (float) $rule[$param . '_MIN'];
$max = (float) $rule[$param . '_MAX'];
if ($val >= $min && $val <= $max) {
$score++;
} elseif ($val < $min) {
$score -= ($min - $val) / 10;
} else {
$score -= ($val - $max) / 10;
}
$matched++;
}
if ($matched > 0) {
$scores[$rule['SIZE_RU']] = $score / $matched;
}
}
arsort($scores);
$best = array_key_first($scores);
$next = array_keys($scores)[1] ?? null;
return ['primary' => $best, 'alternative' => $next, 'scores' => $scores];
}
}
Алгоритм повертає не один розмір, а основну рекомендацію та альтернативу. Це важливо: якщо основний розмір недоступний, показуємо альтернативу з позначкою «якщо 46 немає, візьміть 48 — підійде при вашій статурі».
Перевірка доступності рекомендованого розміру
Після отримання рекомендації сервер перевіряє залишки пропозицій з цим розміром. Якщо товару немає, одразу пропонується альтернативний розмір. Логіка реалізується через стандартний CIBlockElement::GetList з фільтром за властивістю розміру та залишками.
Форма підбору на картці товару
Типові помилки при реалізації форми:
- Питати всі мірки одразу — відлякує. Краще покрокове опитування з прогрес-баром.
- Не перевіряти залишки до видачі результату — користувач засмучується.
- Ігнорувати тип посадки — для облягаючого та вільного одягу потрібні різні сітки.
Однокрокова форма (всі мірки одразу) — для досвідчених покупців:
<form class="size-advisor-form">
<div class="form-row">
<label>Зріст (см): <input type="number" name="height" min="140" max="220"></label>
<label>Вага (кг): <input type="number" name="weight" min="40" max="200"></label>
</div>
<div class="form-row">
<label>Обхват грудей (см): <input type="number" name="chest" min="60" max="160"></label>
<label>Обхват талії (см): <input type="number" name="waist" min="50" max="150"></label>
<label>Обхват стегон (см): <input type="number" name="hips" min="70" max="170"></label>
</div>
<label>Посадка:
<select name="fit_type">
<option value="slim">Облягаюча</option>
<option value="regular" selected>Стандартна</option>
<option value="oversized">Вільна</option>
</select>
</label>
<button type="submit">Підібрати розмір</button>
</form>
AJAX-запит до PHP-контролера
Форма відправляє дані на сервер, тому що:
- Алгоритм підбору на сервері — дані не доступні конкурентам
- Сервер одразу перевіряє залишки та повертає фінальну відповідь
- Результат можна персоналізувати (зберегти мірки для авторизованого користувача)
// SizeAdvisorController.php
public function recommendAction(): array {
$measurements = [
'CHEST' => (float) $this->request->getPost('chest'),
'WAIST' => (float) $this->request->getPost('waist'),
'HIPS' => (float) $this->request->getPost('hips'),
];
$fitType = $this->request->getPost('fit_type', 'regular');
$productId = (int) $this->request->getPost('product_id');
$chartId = $this->getChartForProduct($productId);
$advisor = new SizeFitAdvisor();
$result = $advisor->recommend($measurements, $chartId, $fitType);
$availability = $advisor->checkAvailability($result['primary'], $productId);
if (is_object(global_user()) && !global_user()->IsGuest()) {
UserMeasurementsTable::saveForUser(global_user()->GetID(), $measurements);
}
return [
'recommended_size' => $result['primary'],
'alternative_size' => $result['alternative'],
'available' => $availability['available'],
'offers' => $availability['offers'],
];
}
Збереження мірок в особистому кабінеті
Якщо користувач авторизований, мірки зберігаються в окремій таблиці та підставляються при наступному зверненні до порадника — навіть на іншому товарі. В особистому кабінеті доступний розділ «Мої мірки» для ручного редагування.
Що входить в роботу
- Документація з налаштування розмірних сіток і правил розрахунку
- Вихідний код модуля з коментарями
- Доступ до Git-репозиторію з історією змін
- Інструкція із завантаження розмірів через адмінку Бітрікс
- Навчання контент-менеджерів (1 година онлайн)
- Технічна підтримка на 14 днів після запуску
Маємо сертифікацію 1С-Бітрікс та гарантію на всі роботи.
Вартість базового рішення — від 15 000 грн.
Терміни
| Варіант | Що входить | Термін |
|---|---|---|
| Базовий порадник | Форма, алгоритм, результат | 1–2 тижні |
| З перевіркою залишків | + інтеграція з ТП, залишки | 2–3 тижні |
| + ОК з мірками | + збереження профілю | +1 тиждень |
Порадник за розміром на основі мірок дає найточнішу рекомендацію та максимально знижує ймовірність повернення. З усіх розмірних інструментів — найтрудомісткіший, але й найефективніший. Зв'яжіться з нами для розрахунку вартості та термінів під ваш проект. Отримайте детальний план інтеграції порадника у ваш каталог. Замовте розробку, і ми покажемо, скільки ви заощадите на поверненнях.







