При відкритті картки товару на сайті одягу покупець бачить таблицю розмірів — але в 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 тиждень |
Порадник за розміром на основі мірок дає найточнішу рекомендацію та максимально знижує ймовірність повернення. З усіх розмірних інструментів — найтрудомісткіший, але й найефективніший. Зв'яжіться з нами для розрахунку вартості та термінів під ваш проект. Отримайте детальний план інтеграції порадника у ваш каталог. Замовте розробку, і ми покажемо, скільки ви заощадите на поверненнях.







