СезонГотовим магазин к высокому сезону и Чёрной пятнице: скорость, нагрузка, акции

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

Проектирование структуры базы данных каталога товаров на 1С-Битрикс: инфоблоки и торговые предложения

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

Эта статья — о том, как грамотно спроектировать структуру базы данных каталога на 1С-Битрикс: как устроены инфоблоки, когда нужны торговые предложения, как выбирать типы свойств, зачем highload-справочники и как согласовать всё это с умным фильтром, поиском и обменом с 1С. Материал опирается на нашу практику автоматизации проектов на 1С.

Коротко

  • Каталог строят на инфоблоках — они интегрированы с фильтром, обменом и корзиной.
  • Модель товар/торговое предложение нужна там, где у позиции есть варианты со своей ценой и остатком.
  • Свойства проектируют по назначению и типу; фильтруемые характеристики — через списки и highload-справочники.
  • Структуру согласуют с обменом 1С и прицеливают на фильтр, поиск и нагрузку заранее.

Почему структуру проектируют заранее

Структура данных каталога — это фундамент, на котором держится всё остальное: фильтр, поиск, карточка товара, обмен, корзина. Ошибка в фундаменте не видна сразу, но проявляется постоянно — тормозами, дублями, невозможностью добавить нужную функцию без переделки.

Ключевая причина проектировать заранее — стоимость изменений. Добавить свойство на живом каталоге просто, а вот сменить модель товаров, перенести данные между инфоблоками или переопределить типы свойств — трудоёмкая миграция с риском сломать обмен и фильтр. Чем больше каталог, тем дороже переделка.

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

Инфоблоки как основа каталога

В 1С-Битрикс каталог товаров строится на инфоблоках — это штатный механизм хранения структурированного контента. Для каталога он предпочтителен почти всегда, потому что связан со всей торговой инфраструктурой платформы.

Что даёт инфоблок каталога из коробки:

Соблазн заменить инфоблоки «своей быстрой таблицей» почти всегда ошибочен для каталога: вы потеряете фильтр, обмен и корзину и будете переписывать их вручную. Своя таблица на D7 хороша для служебных сущностей — логов, баллов, технических справочников, — но не для товаров. Подробнее про уместность D7 — в статье про D7 ORM в Битрикс.

От номенклатуры до витрины каталога Номенклатуратовары из 1ССвойства и SKUхарактеристикиКарточкафото, описаниеИндекспоиск и фильтрКаталогвитрина клиенту
Схема: номенклатура из 1С обрастает свойствами и торговыми предложениями, наполняется контентом карточки и индексируется — так формируется витрина, по которой ищут и фильтруют.

Товары и торговые предложения

Ключевое проектное решение — нужна ли двухуровневая модель «товар + торговые предложения». Она разделяет карточку модели и её конкретные варианты.

УровеньЧто этоЧто хранит
Товар (родитель)Карточка моделиНазвание, описание, общие свойства, изображения
Торговое предложение (SKU)Конкретный вариантРазмер/цвет/фасовка, своя цена, артикул, остаток

Пример: «Футболка» — товар, а «Футболка, синяя, M» и «Футболка, чёрная, L» — торговые предложения с собственными ценами, артикулами и остатками. Такая модель нужна, когда у позиции есть варианты, между которыми выбирает покупатель. Если вариантов нет (уникальная позиция), товар обходится без предложений — плодить их «на всякий случай» не нужно.

Правило: торговые предложения оправданы там, где есть реальный выбор варианта с разной ценой или остатком. Лишний уровень усложняет обмен, фильтр и карточку, поэтому вводить его стоит осознанно.

Свойства: типы и назначение

Свойства — то, из чего складывается вся полезная информация о товаре, и здесь легче всего наделать ошибок. Свойства проектируют сразу по двум осям: назначение и тип.

По назначению их удобно делить на группы:

По типу важно выбрать правильный: список или привязка к справочнику для повторяющихся значений, число для диапазонных характеристик, строка только там, где значение действительно произвольное. Ошибка типа дорого обходится: строковое свойство вместо списка замедляет фильтр и плодит разнобой написаний одного и того же значения.

Highload-справочники для значений

Когда значений свойства много и они повторяются у тысяч товаров, их выносят в highload-справочник — отдельную таблицу-словарь на D7. Свойство товара тогда хранит не строку, а ссылку на элемент справочника.

Зачем это нужно:

Highload-справочники — типичный выбор для брендов, цветов, материалов, коллекций. Они особенно окупаются на больших каталогах, где одни и те же значения встречаются массово. Проектируя свойства, сразу решают, какие из них станут справочниками.

Разделы и навигация

Разделы инфоблока задают дерево каталога и во многом определяют навигацию и SEO. Здесь важен баланс: слишком плоская структура теряет товары, слишком глубокая утомляет пользователя и усложняет обмен.

Хорошее дерево разделов служит одновременно навигацией для покупателя, каркасом для фильтра и основой семантической структуры для SEO. Поэтому его проектируют вместе с ассортиментом, а не «как выгрузилось из 1С».

Структура под умный фильтр и поиск

Умный фильтр и поиск работают ровно настолько хорошо, насколько грамотно спроектированы свойства. Это главная причина проектировать структуру с прицелом на них.

  1. Отметьте фильтруемые свойства. У характеристик, по которым отбирают товар, включают участие в умном фильтре.
  2. Используйте списки и справочники. Фильтр по спискам и highload-справочникам работает быстро и без разнобоя значений.
  3. Числа — для диапазонов. Цена, мощность, вес как числовые свойства дают фильтр «от и до».
  4. Учтите предложения. Свойства вариантов (размер, цвет) фильтруют на уровне торговых предложений.
  5. Заложите точные поля для поиска. Артикул и код 1С — отдельные свойства под точный поиск, отличный от полнотекстового.

Про то, как отделить точный поиск по артикулу от полнотекстового и не потерять коды, у нас есть отдельный разбор в блоге. Здесь важно одно: если структура свойств продумана под фильтр и поиск заранее, оба работают быстро; если нет — их потом «натягивают» на неудобные данные.

Связь с обменом 1С

Каталог редко живёт сам по себе — товары, цены и остатки приходят из 1С через обмен CommerceML. Это значит, что структуру нельзя проектировать в отрыве от выгрузки: обмен сам создаёт и наполняет инфоблоки, и если структура сайта расходится с тем, что отдаёт 1С, обмен ломается или дублирует данные.

Что важно согласовать:

Согласование структуры и правил обмена — обязательный этап проектирования, а не то, что чинят потом. Надёжность обмена во многом держится и на инфраструктуре: про окружение мы пишем в статье про хостинг и инфраструктуру BitrixVM.

Производительность и кэш

Хорошо спроектированная структура — это ещё и быстрый каталог. На больших объёмах разница между продуманной и небрежной моделью данных измеряется секундами загрузки.

Скорость каталога также сильно выигрывает от композитного сайта и грамотного кэша динамики. Как выстраивать выборки эффективно, мы разбираем в материале про D7 ORM в Битрикс — правильная структура и правильные запросы работают в паре.

Частые ошибки

Чек-лист проектирования

  1. Основа — инфоблоки. Каталог на инфоблоках, служебные сущности — на D7 по необходимости.
  2. Модель товаров определена. Решено, где нужны торговые предложения, а где нет.
  3. Свойства спроектированы. Разбиты по назначению, у каждого правильный тип.
  4. Справочники выделены. Повторяющиеся значения вынесены в highload-справочники.
  5. Разделы продуманы. Разумная глубина, свойства привязаны к разделам, согласовано с SEO.
  6. Фильтр и поиск учтены. Фильтруемые свойства отмечены, точные поля под поиск заведены.
  7. Обмен согласован. XML_ID стабилен, соответствие свойств 1С описано.
  8. Производительность заложена. Типы, индексы и кэш продуманы под объём каталога.

Вывод

Структура данных каталога — это фундамент магазина, от которого зависят фильтр, поиск, обмен и скорость. На 1С-Битрикс её строят на инфоблоках и торговом каталоге, вводя торговые предложения там, где есть варианты, тщательно проектируя свойства по назначению и типу и вынося повторяющиеся значения в highload-справочники. Всё это согласуют с умным фильтром, поиском и обменом с 1С.

Главный принцип — проектировать заранее и с запасом: переделать живой каталог дороже, чем продумать его на старте. Заложите правильную модель, стабильный обмен и прицел на нагрузку — и каталог будет быстрым и расширяемым годами. Если нужно спроектировать структуру под ваш ассортимент надёжно, доверьте это команде, которая ежедневно работает с автоматизацией продаж и склада на 1С.

Частые вопросы

Инфоблоки или своя таблица для каталога в Битрикс?

Для каталога товаров почти всегда правильнее инфоблоки: они интегрированы с торговым каталогом, умным фильтром, обменом CommerceML и корзиной из коробки. Своя таблица D7 оправдана для служебных сущностей (логи, баллы, технические справочники), где не нужна эта инфраструктура. Пытаться заменить инфоблоки каталога кастомной таблицей — почти всегда лишняя работа и потеря штатных возможностей.

Чем товар отличается от торгового предложения?

Товар (SKU-родитель) — это карточка модели, а торговые предложения (SKU) — её конкретные варианты: размер, цвет, фасовка, каждый со своей ценой, артикулом и остатком. Например, футболка — товар, а «футболка, синяя, размер M» — торговое предложение. Такая двухуровневая модель нужна, когда у одной позиции есть варианты; если вариантов нет, товар обходится без предложений.

Как правильно спроектировать свойства товаров?

Свойства делят по назначению: характеристики для фильтра и сравнения, служебные поля для обмена с 1С, контентные поля для карточки. Важно выбирать правильный тип свойства (список, привязка к справочнику, число, строка), а фильтруемые характеристики выносить в свойства с включённым умным фильтром. Свойства-списки и привязки к highload-справочникам работают в фильтре быстрее произвольных строк.

Что такое highload-справочники и когда они нужны?

Highload-блоки — это отдельные таблицы-справочники на D7, которые подключают как источник значений свойств (бренды, цвета, материалы). Они нужны, когда значений много и они повторяются: вместо хранения строки «Красный» у тысяч товаров хранится ссылка на элемент справочника. Это экономит место, ускоряет фильтр и облегчает поддержку — переименовать бренд можно в одном месте.

Как структура каталога влияет на скорость сайта?

Напрямую. Плохо спроектированные свойства и разделы замедляют умный фильтр и выборки, особенно на больших каталогах. Правильные типы свойств, индексируемые поля, разумная глубина разделов и грамотное кэширование позволяют держать каталог быстрым даже на сотнях тысяч товаров. Структуру данных проектируют сразу с прицелом на фильтр, поиск и нагрузку, а не переделывают потом.

Как связать структуру каталога с обменом 1С?

Обмен CommerceML сам создаёт и наполняет инфоблоки товаров и предложений, поэтому структуру проектируют с учётом того, что приходит из 1С. Ключевые поля — внешний код (XML_ID), артикул, привязка предложений к товару — должны стабильно передаваться. Если структура сайта расходится с выгрузкой 1С, обмен ломается или дублирует данные. Согласование структуры и правил обмена — обязательный этап проектирования.

Нужно ли разделять каталог на несколько инфоблоков?

Зависит от бизнеса. Один большой инфоблок проще в обмене и фильтрации по всему каталогу, несколько — удобны, когда категории товаров сильно различаются по набору свойств или правам доступа. Чаще выбирают один инфоблок каталога с разделами, а разные наборы свойств решают через привязку свойств к разделам. Дробить каталог стоит по реальной необходимости, а не «на всякий случай».

Можно ли поменять структуру каталога после запуска?

Можно, но это дороже и рискованнее, чем спроектировать правильно сразу. Добавить свойство несложно, а вот переделать модель товар/предложение, перенести данные между инфоблоками или сменить типы свойств на живом каталоге — трудоёмко и требует миграции с проверкой обмена и фильтра. Поэтому базовую структуру важно продумать на старте, заложив запас под рост номенклатуры.

Поделиться:

Нужен каталог, который не придётся переделывать?

Спроектируем структуру инфоблоков, предложений и свойств под ваш ассортимент, фильтр и обмен с 1С — с запасом на рост и без тормозов.

Автоматизация на 1С

Игорь Воскресенский

Команда B2Bsite. С 2014 года разрабатываем интернет-магазины на 1С-Битрикс: проектируем структуру каталога, инфоблоки, торговые предложения и справочники под фильтр, поиск и обмен с 1С.

← Все статьи блога