Розробка таблиці розмірів одягу на 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Розробка таблиці розмірів одягу на 1С-Бітрікс
Середня
~1-2 тижні
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Розробка таблиці розмірів одягу на 1С-Бітрікс

Головна причина повернень у fashion-рітейлі — невідповідність розміру. Таблиця розмірів на картці товару знижує повернення на 20–40% залежно від категорії. Але стандартної таблиці розмірів у 1С-Бітрікс немає. Її потрібно проектувати та розробляти — з урахуванням того, що один і той самий одяг може продаватися в розмірах RU, EU, US, UK одночасно, а розмірні дані відрізняються у кожного бренду.

Архітектура зберігання розмірних даних

Неправильний підхід — жорстко вшити таблицю розмірів у шаблон компонента. Через місяць з'явиться другий бренд з іншою розмірною сіткою, і все потрібно буде переробляти.

Правильний підхід — зберігати таблиці розмірів як сутності в базі даних із прив'язкою до брендів та категорій.

Кастомні таблиці:

CREATE TABLE b_size_charts (
    ID          SERIAL PRIMARY KEY,
    NAME        VARCHAR(255) NOT NULL,  -- "Чоловічі футболки Nike"
    CATEGORY    VARCHAR(100),           -- 'tops', 'bottoms', 'outerwear', 'underwear'
    BRAND_ID    INT,                    -- посилання на інфоблок брендів
    GENDER      VARCHAR(10),            -- 'male', 'female', 'unisex', 'kids'
    ACTIVE      BOOLEAN DEFAULT TRUE
);

CREATE TABLE b_size_chart_rows (
    ID          SERIAL PRIMARY KEY,
    CHART_ID    INT NOT NULL REFERENCES b_size_charts(ID),
    SIZE_RU     VARCHAR(10),  -- 42, 44, 46...
    SIZE_EU     VARCHAR(10),  -- XS, S, M, L...
    SIZE_US     VARCHAR(10),  -- 6, 8, 10...
    SIZE_UK     VARCHAR(10),
    CHEST_CM    NUMERIC(5,1), -- обхват грудей, см
    WAIST_CM    NUMERIC(5,1),
    HIPS_CM     NUMERIC(5,1),
    HEIGHT_FROM SMALLINT,     -- зріст від, см
    HEIGHT_TO   SMALLINT,     -- зріст до, см
    SORT        INT DEFAULT 100
);

Прив'язка таблиці до товару

Товар у каталозі Бітрікс отримує властивість SIZE_CHART_ID типу «Число» — ID потрібної таблиці розмірів. Це дозволяє:

  • Різним брендам мати різні таблиці
  • Різним категоріям (верх/низ/взуття) використовувати різні таблиці
  • Одному товару — конкретну таблицю, відмінну від категорійної за замовчуванням

Якщо SIZE_CHART_ID у товару не задано, компонент шукає таблицю за замовчуванням для розділу (інфоблока). Це робиться через властивість розділу b_iblock_section:

// У component.php таблиці розмірів
$chartId = $arResult['PROPERTIES']['SIZE_CHART_ID']['VALUE'];
if (!$chartId) {
    // Беремо таблицю за замовчуванням для розділу або бренду
    $chartId = SizeChartTable::getDefaultForSection($arResult['IBLOCK_SECTION_ID']);
}

Компонент таблиці розмірів

Компонент custom:catalog.size.chart — модальне вікно або вкладка на картці товару:

component.php — вибірка даних:

$chart  = SizeChartTable::getByPrimary($chartId)->fetch();
$rows   = SizeChartRowTable::getList([
    'filter' => ['=CHART_ID' => $chartId, '=ACTIVE' => true],
    'order'  => ['SORT' => 'ASC'],
])->fetchAll();

$this->arResult = ['CHART' => $chart, 'ROWS' => $rows];
$this->IncludeComponentTemplate();

template.php — виведення таблиці:

echo '<table class="size-chart">';
echo '<tr><th>RU</th><th>EU</th><th>US</th><th>Груди (см)</th><th>Талія (см)</th><th>Стегна (см)</th></tr>';
foreach ($arResult['ROWS'] as $row) {
    echo '<tr>';
    echo '<td>' . htmlspecialchars($row['SIZE_RU']) . '</td>';
    echo '<td>' . htmlspecialchars($row['SIZE_EU']) . '</td>';
    // ...
    echo '</tr>';
}
echo '</table>';

Кешування компонента: таблиця розмірів змінюється рідко, кеш на 24 години:

if ($this->StartResultCache(86400, 'size_chart_' . $chartId)) {
    // ...
    $this->EndResultCache();
}

Інтерактивне підсвічування вибраного розміру

Коли користувач вибирає торгову пропозицію (розмір) на картці товару, відповідний рядок у таблиці розмірів підсвічується. Це вимагає синхронізації між компонентом вибору торгових пропозицій та таблицею розмірів.

Торгова пропозиція в Бітрікс зберігає розмір як властивість SIZE_VALUE. Це значення передається в JS:

// При виборі ТП
document.querySelectorAll('[data-offer-id]').forEach(btn => {
    btn.addEventListener('click', function() {
        const sizeValue = this.dataset.sizeValue; // '44' або 'M'
        highlightSizeInChart(sizeValue);
    });
});

function highlightSizeInChart(size) {
    document.querySelectorAll('.size-chart tr').forEach(row => {
        row.classList.remove('highlighted');
        if (row.dataset.sizeRu === size || row.dataset.sizeEu === size) {
            row.classList.add('highlighted');
        }
    });
}

Порадник з розміру

Простий калькулятор: користувач вводить свої мірки та отримує рекомендований розмір.

function recommendSize(chest, waist, hips) {
    const chartData = window.sizeChartData; // передається з PHP у JSON
    for (const row of chartData) {
        if (chest >= row.chest_min && chest <= row.chest_max &&
            waist >= row.waist_min && waist <= row.waist_max) {
            return { sizeRu: row.size_ru, sizeEu: row.size_eu };
        }
    }
    return null; // немає відповідного розміру
}

Форма порадника — три поля введення (груди, талія, стегна) + кнопка «Підібрати розмір». Результат — виділення рекомендованого рядка в таблиці та автовибір відповідної торгової пропозиції.

Управління таблицями в адмінці

Для контент-менеджерів потрібен зручний інтерфейс управління таблицями розмірів без прямого редагування БД. Реалізується через кастомний розділ у /bitrix/admin/:

/bitrix/admin/size_charts.php       — список таблиць
/bitrix/admin/size_chart_edit.php   — редагування таблиці та рядків

Або через інфоблок з нестандартною структурою — якщо хочеться використовувати стандартний інтерфейс Бітрікс, але це менш гнучко для табличних даних.

Мобільна версія

На мобільному пристрої таблиця з 6–8 колонками не вміщується. Рішення:

  • Горизонтальна прокрутка таблиці з overflow-x: auto — мінімальне зусилля
  • Картковий формат — кожен розмір як окрема картка з ключовими параметрами
  • Рядки, що згортаються — показувати лише стовпці RU/EU, решту за кліком «Детальніше»

Терміни

Обсяг Що входить Термін
1 таблиця для 1 категорії БД, компонент, виведення на картці 3–5 днів
Мультибрендові таблиці + управління в адмінці, прив'язка до брендів 1–2 тижні
+ Порадник з розміру + калькулятор, підсвічування ТП +3–5 днів

Таблиця розмірів — це не контентний блок, а конверсійний інструмент. Правильно реалізована, вона окупається через зниження повернень уже в перший місяць після запуску.