Автонаполнение характеристик товаров из внешних источников 1С-Битрикс
Правильно заполненные характеристики — основа фасетного фильтра. Без них умный фильтр bitrix:catalog.smart.filter не работает, а покупатель не может отобрать товары по параметрам. Автоматизация заполнения характеристик сложнее, чем автоматизация описаний: нужно поддерживать схему свойств инфоблока, нормализовывать разнородные данные и следить за консистентностью значений списочных свойств.
Проектирование схемы свойств под автоматизацию
Перед началом — аудит текущих свойств инфоблока. Типичные проблемы унаследованных каталогов:
- Характеристики хранятся в одном текстовом свойстве «Описание» через переносы строк
- Одно и то же свойство создано несколько раз с разными CODE
- Числовые значения хранятся в строковых свойствах, фильтр не работает корректно
Для автонаполнения нужна чистая схема: каждая характеристика — отдельное свойство с правильным типом. Числа — тип N, категории (бренд, цвет, материал) — тип L (список), текстовые — тип S.
Источники характеристик
Icecat XML — наиболее полный источник для электроники и бытовой техники. Поиск по EAN через https://icecat.us/api/. Данные структурированы, названия характеристик стандартизированы.
GS1 / GEPIR — база данных по штрихкодам, содержит базовые атрибуты товара.
API производителя — если производитель предоставляет партнёрский доступ к спецификациям.
Парсинг сайта производителя — fallback при отсутствии API. Таблицы спецификаций парсим как описано в статье о парсинге характеристик.
Нормализация и контроль качества
Главная проблема: один и тот же параметр из разных источников может называться по-разному и иметь разные единицы измерения.
Архитектура нормализации:
-
Словарь канонических имён — таблица
property_canonical_map:source: 'icecat', source_name: 'Screen Size', canonical: 'display_diagonal', unit: 'inch' source: 'supplier_a', source_name: 'Диагональ экрана', canonical: 'display_diagonal', unit: 'sm' -
Конвертер единиц — при импорте автоматически конвертирует см в дюймы (или наоборот) по
canonical - Валидатор диапазонов — числовые значения проверяются на реалистичность (вес телефона 5000 г — явная ошибка)
Управление enum-значениями списочных свойств
Свойства типа L требуют предварительного создания значений в b_iblock_prop_enum. При автонаполнении новые значения появляются постоянно — нужна стратегия:
Автосоздание — новое значение автоматически добавляется в enum. Риск: мусорные значения от ошибок парсинга (опечатки, HTML-теги в значении).
Очередь на модерацию — новое значение помещается в очередь, менеджер подтверждает или отклоняет. Безопаснее, но требует внимания.
Рекомендую комбинацию: автосоздание с фильтрацией (длина > 2 и < 100 символов, без HTML, без спецсимволов), + уведомление менеджеру о новых значениях.
Инкрементальное обновление
Характеристики меняются реже, чем цены — раз в неделю достаточно для большинства каталогов. Оптимизация:
- Храним хеш набора характеристик элемента:
md5(serialize($properties)) - При обновлении из источника сравниваем хеш — если не изменился, пропускаем запись в БД
- Это снижает нагрузку на
b_iblock_element_propertyпри больших объёмах
Таймлайн работ
| Этап | Срок |
|---|---|
| Аудит и реструктуризация схемы свойств инфоблока | 1–2 дня |
| Разработка провайдеров источников | 2–4 дня |
| Нормализатор, словарь канонических имён | 2–3 дня |
| Управление enum-значениями | 1 день |
| Инкрементальное обновление, мониторинг | 1–2 дня |
Итого: 7–12 рабочих дней — одна из самых трудоёмких задач автонаполнения из-за необходимости работы со схемой данных.







