Налаштування прив'язки таблиці розмірів до товарів 1С-Бітрікс

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

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

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

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

  • 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С-Бітрікс

Повернення одягу в онлайн-магазинах досягають 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 дні

Зв'язка «таблиця розмірів — торгова пропозиція» окупається зниженням повернень вже в перший місяць роботи.