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

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

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

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

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    943
  • 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 для компании ТЕХНОТОРГКОМПЛЕКС
    1073

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

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

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

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

Тип свойства Назначение Когда использовать
Строка Текстовые значения без повторений Для уникальных полей (артикул, название)
Число Числовые значения для фильтра по диапазону Цена, вес, мощность
Список Фиксированный набор значений Статусы, категории размеров
Справочник (HL-блок) Динамические справочники Бренды, страны, метро (множественные)
Файл Изображения и документы Дополнительные фото (если >2)
Привязка к элементам Связь элементов Связанные товары, комплекты

Согласно документации 1С-Битрикс, правильный выбор типа свойства — основа производительности каталога. Строки без индекса и дубли в b_iblock_element_property — частая причина тормозов. Фасетный индекс решает проблему, но только для свойств числового типа, списков и справочников.

Структура типов инфоблоков

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

Для интернет-магазина типовая структура типов:

  • catalog — инфоблоки каталога товаров и торговых предложений
  • content — новости, статьи, FAQ
  • references — справочники (используемые как источник для свойств типа «Список», если не HL-блоки)
  • landing — лендинговые блоки, баннеры

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

Разделы (b_iblock_section) хранятся в нативном дереве Битрикс. Практическое ограничение: глубина вложенности более 5–6 уровней создаёт проблемы с хлебными крошками, ЧПУ и навигацией. Если бизнес требует более глубокой иерархии (например, запчасти для оборудования: производитель → модель → серия → узел → деталь) — рассматривается замена иерархии свойствами с фильтрацией вместо навигации по разделам.

Множественные свойства и производительность

Множественное свойство хранит несколько значений в b_iblock_element_property — по одной строке на каждое значение. 10 000 элементов × свойство с 5 значениями = 50 000 строк в таблице только для этого свойства. При множественных свойствах-справочниках фасетный индекс обрабатывает их корректно, но нагрузка при пересоздании индекса выше.

Правило: если свойство редко бывает заполнено (заполнено у 10% элементов) — пустые записи не хранятся, что снижает объём таблицы. Если свойство заполнено у всех элементов и редко меняется — рассмотреть перенос в отдельную HL-таблицу через DataManager.

Почему важно разбивать данные на разные типы инфоблоков?

Правильное разделение по типам позволяет избежать замедления запросов при смешивании разнородных данных. Например, товары и баннеры имеют разные наборы свойств и частоту обновления. Если их объединить, при выборке баннеров приходится сканировать и товарные записи, что увеличивает нагрузку. Агентства, пренебрегающие этим правилом, часто сталкиваются с ростом времени выполнения компонента 'catalog'.

Кейс: проектирование инфоблоков для агрегатора недвижимости

Платформа объявлений о продаже и аренде недвижимости. Изначальное решение: один инфоблок «Объекты» с 40 свойствами, включая строковые адрес, район, метро.

Проблемы под нагрузкой:

  • Фильтр по метро работал как текстовый поиск (LIKE), а не по индексу
  • Дубли значений: «м. Арбатская», «Арбатская», «арбатская» — три разные записи
  • Поиск по радиусу от метро невозможен без геокоординат

Реструктурированная схема:

  • catalog тип: инфоблок «Объекты» + инфоблок «Жилые комплексы»
  • HL-блок hl_metro с полями: UF_NAME, UF_LINE, UF_LAT, UF_LON — 342 записи вместо текстовых значений
  • HL-блок hl_district — районы с привязкой к городу
  • Свойства «Площадь», «Этаж», «Этажность» — тип «Число» для фильтра по диапазону
  • Свойство «Метро» — справочник (HL), множественное (несколько станций)

Фасетный индекс после реструктурирования: создаётся за 3 минуты на 85 000 объектов, фильтр по метро и типу — 0.15 секунды. Наш клиент получил ускорение фильтрации более чем в 50 раз. Это позволило сэкономить бюджет на серверных ресурсах и сократить время ожидания пользователей. Подробнее о фасетном индексе — на Wikipedia.

Что включает проектирование структуры инфоблоков

  1. Анализ предметной области — список сущностей и связей (1–2 дня).
  2. Проектирование схемы свойств — выбор типов, HL-блоки, фасетный индекс (1–3 дня).
  3. Проектирование иерархии разделов — оптимальная глубина, замена свойствами при необходимости (0.5–1 день).
  4. Документирование — схема в табличном формате для каждого инфоблока (0.5–1 день).
  5. Согласование — утверждение схемы с заказчиком (0.5 дня).
  6. Опционально: реализация — развертывание структуры, перенос данных (от 2 дней).
Этап Длительность Результат
Анализ предметной области 1-2 дня Список сущностей и связей
Проектирование схемы 1-3 дня Документ структуры инфоблоков
Согласование 0.5 дня Утверждённая схема
Реализация (опционально) от 2 дней Работающая структура с переносом данных

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

Как спроектировать архитектуру проектов на 1С-Битрикс без ошибок?

Мы не раз сталкивались с проектами, где неправильная архитектура 1С-Битрикс приводила к падению производительности. Каталог на 80К товаров отдавал страницу за 5 секунд — и это при пустом кэше. Архитектура проектов на 1С-Битрикс — фундамент, который определяет производительность и стоимость поддержки. Архитектурные ошибки накапливаются и через год превращаются в капитальный рефакторинг, стоимость которого в разы выше изначального проектирования. По оценкам нашей практики, такой рефакторинг может стоить от 300 000 до 1 000 000 руб., не считая потери выручки во время простоя. Согласно документации, фундаментальные решения по хранению данных и кэшированию закладываются на старте и потом меняются с огромными затратами.

Наш опыт показывает: правильное проектирование на старте экономит до 40% бюджета на разработку. Мы проектируем структуру данных, кэширование, масштабирование и интеграции — с учётом роста нагрузки до 500К товаров и пикового трафика в Черную пятницу. Каждый проект проходит этап нагрузочного тестирования, чтобы избежать сюрпризов в продакшене. Оптимальная архитектура снижает требования к хостингу, экономя от 30 000 до 150 000 руб. в месяц.

Выбор типа хранения: инфоблоки или Highload-блоки?

Это первое и самое дорогое архитектурное решение. Миграция с инфоблоков на Highload потом — переписывание всех компонентов, шаблонов, фильтров и поисковых индексов.

Обычные инфоблоки работают через таблицы b_iblock_element и b_iblock_element_property. Свойства хранятся в EAV-модели — каждое значение в отдельной строке b_iblock_element_property. При 50 свойствах и 100К элементов получаем 5 миллионов строк в одной таблице. MySQL начинает задыхаться на JOIN-ах при фильтрации.

Инфоблоки хороши для:

  • Контента до 10-50К элементов — статьи, новости, акции
  • Сущностей, где нужен визуальный редактор и SEO-модуль
  • Элементов с наследованием свойств от разделов

Highload-блоки — плоские таблицы. Одна сущность — одна таблица с колонками. Никакого EAV. Фильтрация по индексированным колонкам работает на порядок быстрее. Каталог на 200К товаров с фасетным индексом (b_catalog_sm_*) отдаёт фильтр за 50ms вместо 3 секунд.

Highload-блоки обязательны для:

  • Каталоги > 50К товаров
  • Справочники, которые дёргаются при каждой загрузке (города, бренды, характеристики)
  • Данные с частой записью — логи, заявки, история
  • Сущности, где нужны прямые SQL-запросы и агрегации

D7 ORM и свои таблицы — для бизнес-логики, которая не лезет в модель инфоблоков. Связи many-to-many, вычисляемые поля, кастомные агрегации. Bitrix\Main\ORM\Data\DataManager даёт типобезопасность, валидацию и систему событий. Но придётся писать админку с нуля. Подробнее — в документации Bitrix ORM.

Критерий Инфоблоки Highload D7 ORM
Объём данных До 50K 50K-10M+ Любой
Скорость фильтрации Деградирует с ростом Стабильная Максимальная
Гибкость структуры Высокая (EAV) Средняя (фиксированная) Полная
Админка из коробки Да Да Нет
Поддержка SEO-модуля Да Ограниченная Нет

Как масштабировать 1С-Битрикс без потери производительности?

Горизонтальное масштабирование — тема, на которой горят 90% проектов. Однако думают о нём, когда сайт уже лежит.

Первый шаг — сессии из файлов в Redis. Без этого второй веб-сервер бесполезен: пользователь авторизовался на сервере A, следующий запрос уходит на сервер B, сессия не найдена — разлогин. В .settings.php:

'session' => ['value' => ['mode' => 'redis', 'host' => '127.0.0.1', 'port' => 6379]]

Далее:

  • nginx upstream или HAProxy раскидывает запросы. Модуль «Веб-кластер» Битрикс поддерживает кластеризацию, но нужна лицензия «Бизнес» или выше
  • CDN для статики — /upload/, JS, CSS. Сервер перестаёт тратить ресурсы на отдачу картинок
  • Репликация MySQL — master для записи, slave для чтения. Битрикс поддерживает до 9 slave-соединений через настройку в .settings.php. Но есть лаг репликации — товар добавили, а на slave он появится через 0.5-2 секунды

Вертикальное масштабирование — дешевле и быстрее на старте:

  • EXPLAIN на каждый тяжёлый запрос. Один составной индекс на b_iblock_element_property (IBLOCK_PROPERTY_ID, VALUE) ускоряет фильтрацию в 10 раз
  • Многоуровневый кэш: управляемый кэш Битрикс → memcached → композитный сайт. Проверяем hit rate в панели «Производительность» — если ниже 90%, что-то не так
  • OPcache с JIT на PHP 8.1+ — бесплатное ускорение на 15-30%

Когда стоит выносить процессы из монолита?

Битрикс — монолит, и это нормально. Ломать его на микросервисы — безумие. А вот вынести тяжёлые процессы — правильный ход.

Импорт/экспорт — самая частая боль. Обмен с 1С через CIBlockCMLImport блокирует таблицы инфоблоков на время импорта. 100К товаров — это 20-40 минут, когда фильтрация на сайте тормозит. Решение: вынести импорт в отдельный воркер через RabbitMQ, писать в промежуточную таблицу, потом атомарно переключать.

  • Поиск — Elasticsearch вместо штатного search.title. Полнотекстовый и фасетный поиск, автодополнение, исправление опечаток. Нагрузка с MySQL снимается полностью
  • Уведомления — push, SMS, email через очередь. CEvent::Send() синхронный — пока письмо не уйдёт, пользователь ждёт ответ сервера. Очередь решает это
  • Генерация отчётов — PDF, Excel на больших объёмах. В отдельный процесс, результат — ссылка на скачивание

API: REST, GraphQL, вебхуки

REST API Битрикса (/rest/) покрывает CRM, задачи, диск, но не покрывает каталог и инфоблоки в нужном объёме. Для SPA на React/Vue приходится писать свои эндпоинты через Bitrix\Main\Engine\Controller.

  • GraphQL — для мобильных приложений, где трафик дорогой. Клиент запрашивает только нужные поля
  • Вебхуки — событийная модель: новый заказ → POST на внешний URL. Не нужно опрашивать API каждые 5 минут
  • Версионирование — /api/v1/, /api/v2/. Без этого обновление API ломает всех потребителей одновременно
  • OpenAPI/Swagger — автогенерация документации. API без документации через месяц не помнит даже автор

Как избежать дорогостоящего рефакторинга?

Самый действенный способ — принимать архитектурные решения осознанно, с учётом реальных сценариев нагрузки и роста данных. Мы используем подход ADR (Architecture Decision Records) для фиксации каждого решения — контекст, альтернативы, последствия. Это позволяет новым разработчикам входить в проект за дни, а не недели, и исключает двоякое толкование логики через полгода.

Документация: ADR вместо Word-файлов

  • ADR — Architecture Decision Records. Короткий файл: контекст, решение, последствия. Как показывает практика, фиксация архитектурного решения в момент его принятия спасает от бесконечных догадок через полгода. Например, через год новый разработчик откроет ADR и за пять минут поймёт, почему для каталога выбрали Highload, вместо того чтобы гадать три дня
  • Диаграммы — серверы, потоки данных, точки интеграций. PlantUML или Mermaid, хранятся в репозитории рядом с кодом
  • ER-диаграммы — инфоблоки, свойства, связи. Без схемы даже автор через полгода не вспомнит, почему свойство LINKED_PRODUCTS ссылается на другой инфоблок через привязку, а не через Highload-справочник
  • Runbook — деплой, откат, масштабирование, действия при аварии. Потому что авария случится в субботу ночью, когда архитектора нет на связи

Техдолг: старое ядро, прямые SQL, логика в шаблонах

Техдолг в Битриксе специфичен. Три главных источника:

  1. Старое ядро вместо D7 — CIBlockElement::GetList() вместо \Bitrix\Iblock\Elements\ElementTable::getList(). Старое ядро не поддерживает ORM-фичи, медленнее, и Битрикс рано или поздно его задепрекейтит
  2. Прямые SQL в шаблонах компонентов — $DB->Query("SELECT...") прямо в template.php. Переносим в сервисные классы, заменяем на ORM
  3. Бизнес-логика в result_modifier.php — файл, который должен готовить данные для шаблона, а не считать скидки и проверять права доступа

Подход: PHPStan level 5+ для выявления проблем, матрица «влияние на бизнес / стоимость фикса», поэтапный рефакторинг по спринтам. Не всё сразу — но тренд должен быть нисходящим.

Как мы проектируем архитектуру

  1. Анализ бизнес-требований и нагрузочных характеристик (пиковый RPS, размер каталога, типичные сценарии)
  2. Проектирование структуры данных — выбор инфоблоки/Highload/D7 ORM, связи, индексы
  3. Определение схемы кэширования и очередей (Redis, RabbitMQ, композит)
  4. Прототипирование и нагрузочное тестирование на реальных данных (200К записей, 30+ свойств)
  5. Документирование — ADR, ER-диаграммы, runbook, спецификации API
  6. Ревью проекта — внутреннее и с заказчиком

Для одного интернет-магазина мы спроектировали архитектуру на Highload-блоках и Elasticsearch. Фильтрация товаров до 50 мс, время первого байта 0.3 с. Экономия на хостинге — существенная.

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

Мы — команда сертифицированных специалистов с опытом внедрения 1С-Битрикс более 8 лет. Выполнили архитектуру для 50+ проектов с каталогами до 300К товаров и нагрузкой до 10К одновременно активных пользователей. Гарантируем, что спроектированная архитектура выдержит пиковые нагрузки и не потребует рефакторинга в ближайшие 3 года.

Этап Срок Результат
Сбор требований 3-5 дней Документ с нагрузочными характеристиками, профилем пользователей, планом роста
Проектирование 1-2 недели Структура данных, схема интеграций, ADR по ключевым решениям
Прототипирование 1 неделя Нагрузочные тесты на реальных объёмах (Highload-блок с 200К записей и 30 свойств — проверяем фильтрацию до 50 мс)
Документирование 3-5 дней Диаграммы, runbook, спецификации API
Ревью 2-3 дня Внутреннее ревью, потом с заказчиком

На выходе: архитектурный документ (ADR, ER-диаграммы, runbook), прототип критических узлов (опционально), документация по API, рекомендации по кэшированию и масштабированию.

Если ваша архитектура вызывает сомнения или вы готовитесь к росту трафика — свяжитесь с нами для консультации. Мы проведём аудит текущей структуры и предложим оптимальную стратегию. Закажите коммерческое предложение — мы подготовим его в течение 2 рабочих дней.