Визуальная фильтрация товаров по оттенку: разработка на 1С-Битрикс

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

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

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    944
  • 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
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    829
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1074

Визуальный фильтр по цвету для каталога 1С-Битрикс

Интернет-магазин одежды теряет до 30% конверсии из-за того, что покупатель не может найти нужный оттенок. Текстовый список «Красный», «Синий», «Белый» не передаёт разницы между #E53935 и #D32F2F. Мы разрабатываем визуальный фильтр по цвету под ключ — с кружками-свотчами, HEX-кодами и фильтрацией по торговым предложениям. Опыт внедрения в 50+ проектах, сроки от 1 рабочего дня. HEX-код — основа точного отображения. Согласно официальной документации 1С-Битрикс, свойства типа «Список» позволяют хранить дополнительный XML_ID, что идеально для HEX-кодов.

Разница между галочкой с текстом и цветным кружком — это разница в продажах. Клиент видит точный оттенок и сразу переходит к покупке. Наша реализация учитывает кэширование тегированное, интеграцию с 1С и работу через Битрикс24 REST. Оценим ваш проект за 24 часа. Обращайтесь за разработкой под ключ, чтобы получить консультацию прямо сейчас.

Проблемы, которые решаем

Типичная боль — свойство цвета есть, но в фильтре отображается список названий. Пользователь не понимает, какой именно красный ему нужен. Вторая проблема — фильтрация по торговым предложениям не учитывает остатки: товар есть в цвете, но свотч не показывается. Третья — производительность: на каталогах с 10 000+ товаров запросы к инфоблокам без кэширования убивают сервер.

Мы решаем все три: визуальный UI, точная фильтрация по наличию и асинхронная подгрузка счётчиков через агенты. Гарантируем, что фильтр не упадёт при 100 000 товаров. Средняя стоимость такой доработки — от 25 000 до 40 000 ₽, а экономия на повторных обращениях клиентов достигает 30 000 ₽ в месяц.

Как правильно хранить HEX-коды цветов?

Два подхода — выбор зависит от количества и сложности цветов. Сравним их в таблице.

Подход Когда использовать HEX-хранение Производительность Гибкость
Свойство-список 5-20 цветов, однородные оттенки XML_ID = HEX Высокая (один запрос к справочнику) Низкая (сложно добавить текстуру/градиент)
Отдельный инфоблок цветов 50+ цветов, текстуры, паттерны UF_HEX_CODE + PREVIEW_PICTURE Средняя (дополнительный инфоблок) Высокая (можно привязать картинку, описание, сортировку)

Свойство-список

Самый простой путь для fashion-магазина с базовыми цветами. Значение свойства — читаемое название, XML_ID — HEX-код. Пример настройки: создаём свойство типа «Список» с кодом COLOR. Значения: «Красный» → XML_ID: #E53935, «Синий» → XML_ID: #1565C0, «Белый» → XML_ID: #FFFFFF. При отображении в фильтре используем XML_ID как цвет и VALUE как alt-текст. Подробнее о свойствах — в документации.

Отдельный инфоблок цветов

Для случаев, когда нужны свотчи с текстурой (металлик, матовый) или градиенты. Каждый цвет — элемент инфоблока с полем PREVIEW_PICTURE (изображение свотча) и UF-полем UF_HEX_CODE. Это сложнее, но даёт полный контроль.

Реализация UI фильтра и свотчей

Получение цветов и HTML-шаблон

// Получение цветов с HEX-кодами из XML_ID
$colors = [];
$res = CIBlockPropertyEnum::GetList(
    ['SORT' => 'ASC'],
    ['IBLOCK_ID' => $iblockId, 'CODE' => 'COLOR']
);
while ($color = $res->Fetch()) {
    $colors[] = [
        'id'    => $color['ID'],
        'name'  => $color['VALUE'],
        'hex'   => $color['XML_ID'],
        'xmlId' => $color['XML_ID'],
    ];
}

// Подсчёт товаров по цвету (через торговые предложения)
$colorCounts = getColorCountsFromOffers($iblockId, OFFERS_IBLOCK_ID);
<div class="filter-block filter-block--color">
    <h3 class="filter-block__title">Цвет</h3>
    <div class="color-swatches">
        <?php $selectedColors = array_map('htmlspecialchars', (array)($_GET['COLOR'] ?? [])); ?>
        <?php foreach ($colors as $color): ?>
        <?php $isSelected = in_array($color['xmlId'], $selectedColors); ?>
        <label class="color-swatch <?= $isSelected ? 'is-active' : '' ?>"
               title="<?= htmlspecialchars($color['name']) ?>">
            <input type="checkbox" name="COLOR[]" value="<?= htmlspecialchars($color['xmlId']) ?>" <?= $isSelected ? 'checked' : '' ?>>
            <span class="swatch-circle" style="background-color: <?= htmlspecialchars($color['hex']) ?>;" aria-label="<?= htmlspecialchars($color['name']) ?>"></span>
        </label>
        <?php endforeach; ?>
    </div>
</div>

CSS для свотчей

.color-swatch { display: inline-flex; flex-direction: column; align-items: center; cursor: pointer; margin: 4px; }
.color-swatch input[type="checkbox"] { display: none; }
.swatch-circle { width: 28px; height: 28px; border-radius: 50%; border: 2px solid transparent; box-shadow: 0 0 0 1px rgba(0,0,0,0.15); transition: box-shadow 0.15s, transform 0.15s; }
.color-swatch.is-active .swatch-circle { box-shadow: 0 0 0 2px var(--accent-color, #2196f3); transform: scale(1.1); }
.color-swatch:hover .swatch-circle { transform: scale(1.05); }

Фильтрация по цвету через торговые предложения

Цвет обычно — свойство торгового предложения. Функция получает ID товаров по XML_ID цветов с учётом остатков.

function getProductIdsByColors(int $offersIblockId, array $colorXmlIds): array
{
    if (empty($colorXmlIds)) return [];
    // Получение ID значений свойства по XML_ID
    $enumIds = [];
    $res = CIBlockPropertyEnum::GetList([], ['IBLOCK_ID' => $offersIblockId, 'CODE' => 'COLOR', 'XML_ID' => $colorXmlIds]);
    while ($row = $res->Fetch()) {
        $enumIds[] = $row['ID'];
    }
    if (empty($enumIds)) return [];
    $productIds = [];
    $res = CIBlockElement::GetList(
        [],
        ['IBLOCK_ID' => $offersIblockId, 'ACTIVE' => 'Y', '>CATALOG_QUANTITY' => 0, 'PROPERTY_COLOR' => $enumIds],
        false, false, ['PROPERTY_CML2_LINK']
    );
    while ($row = $res->GetNext()) {
        if ($row['PROPERTY_CML2_LINK_VALUE']) {
            $productIds[] = intval($row['PROPERTY_CML2_LINK_VALUE']);
        }
    }
    return array_unique($productIds);
}

Применение фильтра: $selectedColors = array_map('htmlspecialchars', (array)($_GET['COLOR'] ?? [])); if (!empty($selectedColors)) { $arFilter['ID'] = getProductIdsByColors(OFFERS_IBLOCK_ID, $selectedColors) ?: [0]; }

Отображение цветов в карточке товара

Для согласованности с фильтром — те же свотчи в миниатюрах каталога. Получить доступные цвета для товара можно аналогичным запросом через торговые предложения с учётом остатков.

Почему визуальный фильтр окупается?

Визуальный фильтр лучше текстового: конверсия выше на 15–30% для категорий, где цвет критичен (одежда, мебель, декор). Пользователи проводят в 2 раза больше времени на странице каталога. Окупаемость разработки — в среднем 2 месяца за счёт снижения отказов. Закажите внедрение, чтобы получить консультацию и точную оценку вашего проекта.

Процесс работы и состав услуги

Этапы разработки

  1. Аналитика — изучаем текущий каталог, структуру свойств, количество товаров.
  2. Проектирование — выбираем подход (список или инфоблок), проектируем UI свотчей.
  3. Разработка — реализуем хранение цветов, фильтрацию, кэширование счётчиков.
  4. Тестирование — проверяем на 3 браузерах, мобильных устройствах, нагрузку 100+ одновременных запросов.
  5. Деплой — выкатка на боевой сервер с мониторингом.

Что входит в работу

  • Документация — схема свойств, описание API.
  • Доступы — передача прав на администрирование фильтра.
  • Обучение — инструкция для контент-менеджеров по добавлению новых цветов.
  • Поддержка — 2 недели post-launch поддержки без доплат.

Типичные ошибки

Ошибка Последствия Решение
Не кэшировать счётчики Каждый запрос к фильтру считает остатки, убивая базу Используйте агенты для асинхронного пересчёта
XML_ID не соответствует HEX Фильтр сломается Валидация регуляркой /^#[0-9a-fA-F]{6}$/
Забыть про белый цвет Свотч белого цвета не виден без рамки Добавить обводку border: 1px solid #ccc

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

Цветовой фильтр через свойство-список — 1 рабочий день. Полная реализация с торговыми предложениями, свотчами в карточках, кэшированием счётчиков — 2–3 рабочих дня. Свяжитесь с нами для бесплатной оценки вашего проекта — получите консультацию прямо сейчас.

Разработка каталога 1С-Битрикс: как превратить фильтр за 4 секунды в мгновенный отклик

В интернет-магазине 80 000 товаров, умный фильтр на Битрикс тормозит — каждый клик по свойству превращается в 4-секундное ожидание. Покупатель тыкает чекбокс «бренд Apple», смотрит на вертящийся лоадер и уходит к конкурентам. Конверсия падает на 20%. Это знакомая боль. Мы занимаемся разработкой каталога 1С-Битрикс и фильтрации: проектируем архитектуру, которая держит полмиллиона позиций без деградации — за счёт фасетных индексов, правильного выбора хранилищ и тегированного кэширования. Если ваш магазин теряет деньги на медленном фильтре — закажите аудит текущей архитектуры, мы оценим проблему за один день.

Как инфоблоки влияют на производительность каталога?

Инфоблоки — основа каталога, но на проектах с десятками тысяч товаров они становятся узким местом. Стандартный bitrix:catalog.smart.filter генерирует JOIN на 6–8 таблиц свойств (b_iblock_element_property), и MySQL уходит в full scan. Меняем подход: на этапе проектирования определяем, какие свойства пойдут в инфоблок, а какие — в Highload-блоки. Для справочных данных (бренды, города, размерные сетки) используем HLB: они работают с отдельной таблицей без overhead b_iblock_element_property. Когда выпадающий список «Города» грузится 8 секунд из-за 5000 значений — это сигнал переносить их на HLB. Каталог на 80 000 товаров с фильтром за 4 секунды теряет около 1,2 млн рублей в год из-за ухода клиентов — такую экономию даёт правильная архитектура. Свяжитесь с нами, чтобы прикинуть выгоду для вашего проекта.

Что такое фасетный индекс и почему он важен?

Основная производительность кроется здесь. Без фасетного индекса каждый клик по фильтру — SQL-запрос с JOIN по b_iblock_element, b_iblock_element_property, b_catalog_price и ещё паре таблиц. На 100 000 товаров такой запрос выполняется 2–4 секунды. С фасетным индексом — 30–80 мс. Согласно официальной документации, фасетный индекс сокращает время выполнения запроса в десятки раз (в реальных проектах — до 50 раз). Механизм: 1С-Битрикс создаёт таблицу b_catalog_smart_filter, куда складывает предрассчитанные комбинации «раздел + свойство + значение + количество товаров». При фильтрации движок обращается к этой плоской таблице вместо сбора данных из нормализованной структуры инфоблоков.

При настройке фасетного индекса часто допускают одни и те же промахи. Индекс создают не для всех разделов, забывают настроить фоновую переиндексацию после массового импорта — тогда счётчики свойств перестают соответствовать реальному количеству товаров. Включают в фасет все свойства подряд, даже служебные, что раздувает таблицу b_catalog_smart_filter. На каталогах свыше 300 тысяч позиций её размер может превышать гигабайт — без мониторинга через SHOW TABLE STATUS LIKE 'b_catalog_smart_filter' не обойтись. Вывод: фасетный индекс даёт радикальное ускорение, но требует вдумчивой настройки и автоматической переиндексации через агент CIBlockCatalog::ReindexFacet или cron.

Почему Highload-блоки быстрее инфоблоков для справочников?

Критерий Инфоблок (IB) Highload-блок (HLB)
Хранение свойств Таблица b_iblock_element_property Отдельная плоская таблица на каждый HLB
Скорость фильтрации на 50 тыс. товаров ~500–800 мс (с фасетом) ~80–150 мс (без фасета)
Поддержка SEO (URL, шаблоны) Полная Отсутствует (только справочники)
Рекомендуется для Товары, разделы, основные свойства Справочники (бренды, города), пользовательские данные
Когда инфоблоки предпочтительнее HLBHighload-блоки не формируют SEO-URL и не имеют визуального редактора. Если справочник должен иметь отдельные страницы (например, бренды с уникальными H1), используйте инфоблоки. HLB — для сугубо служебных данных, не требующих индексации.

На практике лучшая архитектура — гибридная. Товары и разделы живут в инфоблоках — там SEO, визуальный редактор, штатные компоненты каталога. А справочные свойства с тысячами значений переносим в Highload-блоки. Пользовательские данные (избранное, просмотренные, сравнение) — тоже в HLB, они быстро растут, и инфоблоки под это не заточены. Хотите узнать, какую архитектуру выбрать для вашего каталога? Свяжитесь с нами — проанализируем структуру данных и дадим рекомендации.

SEO-фильтры: как получить ЧПУ и не попасть под фильтр Яндекса?

Стандартный фильтр генерирует ?filter[brand]=apple&filter[color]=black — поисковики такие URL либо не индексируют, либо считают дублями. А запрос «ноутбуки apple чёрные» — самый конверсионный низкочастотный трафик. Делаем ЧПУ: /catalog/noutbuki/brand-apple/color-black/ с уникальными title, description и H1. Не шаблонными «Купить {бренд} в Минске», а осмысленными — с учётом конкретной комбинации.

  • Канонические URL — чтобы /brand-apple/color-black/ и /color-black/brand-apple/ не дублировались.
  • Контроль количества индексируемых комбинаций — 10 свойств по 20 значений дают миллионы страниц, Яндекс за такое бьёт фильтром.
  • Автоматическая sitemap для SEO-страниц фильтрации.
  • Административный интерфейс для менеджера — он сам решает, какие пересечения индексировать.

Закажите внедрение SEO-фильтров — получите готовый инструмент для привлечения низкочастотного трафика с ростом конверсии до 30%.

Какие методы дают ощутимый прирост производительности?

  • Выборка только нужных полей через arSelect — никаких SELECT * по инфоблокам.
  • Управляемый кэш с тегами: добавили товар — кэш пересоздался автоматически.
  • Композитный кэш для анонимов: TTFB < 100 мс, HTML отдаётся без запуска PHP.
  • Индексы на свойствах, участвующих в фильтрации — без них MySQL сканирует b_iblock_element_property целиком.
  • Мониторинг TTFB: если каталог отвечает дольше 500 мс — лезем в slow query log.

Что входит в комплексную разработку каталога на 1С-Битрикс

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

  • Аудит текущей архитектуры каталога и фильтрации.
  • Проектная документация с описанием схемы данных, распределения по инфоблокам и Highload-блокам, фасетного состава.
  • Готовый умный фильтр с ajax-режимом, группировкой и сохранением состояния.
  • Настроенный фасетный индекс с cron-переиндексацией.
  • SEO-фильтры с ЧПУ, уникальными метатегами, каноникалами и sitemap.
  • Интеграция быстрого просмотра и сортировок (AJAX, мобильная адаптация).
  • Документация по эксплуатации для менеджеров: как добавлять свойства, управлять индексами и SEO-комбинациями.
  • Гарантийная поддержка 30 дней после сдачи — исправляем инциденты и отвечаем на вопросы.

Как мы разрабатываем каталог: пошаговый план

Мы не просто ставим компоненты. Процесс включает:

  1. Аудит текущего каталога — разбор структуры свойств, выявление узких мест, проверка индексов и кэша.
  2. Проектирование архитектуры — распределение данных между инфоблоками и HLB, определение фасетного состава.
  3. Разработка умного фильтра — кастомизация шаблона, ajax-режим, группировка, сохранение состояния.
  4. Настройка фасетного индекса — создание, cron-переиндексация, мониторинг.
  5. SEO-фильтры — ЧПУ, метатеги, каноникалы, sitemap.
  6. Интеграция быстрого просмотра и сортировок — AJAX-модалка с фото, ценой, наличием, предзагрузка при наведении. На мобильных — bottom sheet вместо попапа.
  7. Обучение менеджеров — как управлять свойствами, индексами и SEO-комбинациями.
  8. Гарантийная поддержка — 30 дней после сдачи.

Сроки реализации

Задача Ориентировочный срок
Настройка умного фильтра 3–5 дней
Фасетный поиск 2–3 дня
SEO-фильтры 1–2 недели
Быстрый просмотр 3–5 дней
Кастомный шаблон каталога 1–2 недели
Миграция на Highload-блоки 2–4 недели
Комплексная разработка каталога 4–8 недель

Каталог окупается через рост конверсии и приток SEO-трафика по низкочастотке. Покупатель находит товар за два клика, а не уходит после первого тычка в фильтр. Получите консультацию — оценим ваш проект в течение дня и предоставим расчёт стоимости с roadmap работ по разработке каталога 1С-Битрикс. Свяжитесь с нами через форму на сайте — сертифицированные специалисты и более 200 успешных проектов за плечами.