Настройка привязки таблицы размеров к товарам 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка привязки таблицы размеров к товарам 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • 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С-Битрикс

Возвраты одежды в онлайн-магазинах достигают 30–40% — и большинство из них связано с неправильным размером. Таблица размеров рядом с выбором торгового предложения напрямую снижает этот показатель. Стандартный Битрикс не имеет встроенного механизма таблиц размеров, поэтому задача решается через расширение инфоблока или отдельный модуль.

Архитектура хранения

Таблицы размеров — это структурированные данные, привязанные к товарам или категориям. В Битриксе для этого есть два места:

Свойство инфоблока типа «Привязка к элементам» — создаётся отдельный инфоблок «Таблицы размеров», каждый элемент которого содержит данные таблицы. Товары через свойство PROP_SIZE_TABLE ссылаются на нужную таблицу. Плюс: удобно переиспользовать одну таблицу для сотен товаров одного бренда.

Пользовательское поле типа «HTML/текст» — таблица хранится прямо в свойстве товара в виде HTML-разметки. Проще, но не масштабируется.

Рекомендуется первый вариант. Структура инфоблока «Таблицы размеров»:

Поле Тип Описание
NAME string Название (например, «Женская одежда EU»)
PROP_BRAND string Бренд
PROP_CATEGORY привязка к разделу Категория каталога
PROP_TABLE_DATA text JSON с данными таблицы
PROP_MEASURE_SYSTEM list EU / US / UK / RU

Данные таблицы хранятся в JSON:

{
  "headers": ["Размер EU", "Размер RU", "Обхват груди (см)", "Обхват бёдер (см)"],
  "rows": [
    ["XS", "40", "80-84", "86-90"],
    ["S", "42", "84-88", "90-94"],
    ["M", "44", "88-92", "94-98"]
  ]
}

Привязка к товарам и категориям

Привязка реализуется на двух уровнях:

Уровень категории — у раздела создаётся UF-поле UF_DEFAULT_SIZE_TABLE (привязка к элементу инфоблока размеров). Все товары категории автоматически наследуют эту таблицу, если у них не задана персональная.

Уровень товара — свойство инфоблока PROP_SIZE_TABLE с типом «Привязка к элементам». Позволяет переопределить таблицу для конкретного товара.

Логика получения таблицы для товара:

function getSizeTableForProduct(int $productId, int $sectionId): ?array {
    // Сначала проверяем свойство товара
    $element = CIBlockElement::GetByID($productId)->GetNextElement();
    $props = $element->GetProperties();
    $tableId = (int)($props['SIZE_TABLE']['VALUE'] ?? 0);

    // Если нет — берём из категории
    if (!$tableId) {
        $section = CIBlockSection::GetByID($sectionId)->Fetch();
        $tableId = (int)($section['UF_DEFAULT_SIZE_TABLE'] ?? 0);
    }

    if (!$tableId) return null;

    $table = CIBlockElement::GetByID($tableId)->GetNextElement();
    $tableProps = $table->GetProperties();
    return json_decode($tableProps['TABLE_DATA']['VALUE'], true);
}

Вывод в карточке товара

Таблица размеров выводится в шаблоне компонента bitrix:catalog.element. Стандартный подход — всплывающее окно (modal) при нажатии ссылки «Таблица размеров» рядом с селектором торговых предложений.

В шаблоне подключаем данные:

// В result_modifier.php или непосредственно в template.php
$sizeTable = getSizeTableForProduct(
    $arResult['ID'],
    $arResult['IBLOCK_SECTION_ID']
);
$this->SetViewTarget('size_table_data');

Важный нюанс: если товар имеет торговые предложения разных размеров, таблицу нужно показывать только при активном выборе размерного параметра (цвет менять вместе с размером не нужно — только таблица).

Мультиязычность и несколько систем мер

Для магазинов, работающих в разных регионах, одна таблица должна содержать несколько систем измерений. В JSON добавляется группировка по системе:

{
  "systems": {
    "EU": { "headers": [...], "rows": [...] },
    "US": { "headers": [...], "rows": [...] },
    "UK": { "headers": [...], "rows": [...] }
  }
}

Переключатель системы мер выводится над таблицей через JS без перезагрузки страницы.

Сроки выполнения

Объём работ Срок
Инфоблок + свойство + базовый вывод 1 день
Каскадная привязка категория/товар + modal 2–3 дня
Мультисистема мер + мультиязычность +1–2 дня

Связка «таблица размеров — торговое предложение» окупается снижением возвратов уже в первый месяц работы.