Разработка таблицы размеров одежды на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка таблицы размеров одежды на 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Разработка таблицы размеров одежды на 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 дней

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