-15%Скидка 15% на разработку сайта или магазина при старте до конца месяца

Комплексные и простые компоненты 1С-Битрикс

Комплексные и простые компоненты 1С-Битрикс: устройство, ЧПУ, шаблоны и кэширование

Разработчик открывает каталог на 1С-Битрикс и видит один компонент bitrix:catalog, который каким-то образом показывает и дерево разделов, и список товаров, и детальную карточку — по разным адресам, без отдельных файлов на каждую страницу. А рядом лежит простой bitrix:news.list, который умеет только выводить список. В чём разница и почему это важно понимать до того, как начинать кастомизацию? Ответ — в делении компонентов на простые и комплексные.

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

Коротко

  • Простой компонент отвечает за один блок или страницу и не занимается маршрутизацией.
  • Комплексный объединяет несколько связанных страниц, сам разбирает ЧПУ и распределяет запрос по режимам.
  • Комплексный компонент внутри вызывает простые — их можно переиспользовать и кастомизировать по отдельности.
  • Кастомизируйте через копию шаблона, result_modifier и component_epilog, не трогая component.php и class.php ядра.

Что такое компонент в 1С-Битрикс

Компонент в 1С-Битрикс — это переиспользуемый блок логики и представления. Он инкапсулирует получение данных (из инфоблоков, торгового каталога, модулей) и их вывод через шаблон. Логика компонента живёт в component.php и, в современном варианте, в классе class.php, а внешний вид — в отдельных шаблонах. Такое разделение позволяет ставить один и тот же компонент на разные страницы и оформлять его по-разному.

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

Простой компонент: одна задача

Простой компонент решает ровно одну задачу и не знает ни о каких «соседних» страницах. Он получает параметры, выбирает данные и отдаёт их в шаблон — на этом его ответственность заканчивается.

Примеры простых компонентов — bitrix:news.list, bitrix:news.detail, bitrix:catalog.section, форма bitrix:form. Каждый из них самодостаточен и не претендует на управление целым деревом адресов. Именно из таких кирпичей потом собирается комплексный компонент.

Обмен данными сайта с 1С Сайткаталог, заказытовары, заказыОбменочередь / APIДанные идут в обе стороны по расписанию или по событию
Схема: сайт и 1С обмениваются данными в обе стороны — по расписанию или по событию. Товары и остатки приходят на сайт, заказы уходят обратно.

Комплексный компонент и маршрутизация

Комплексный компонент — это оркестратор. Он объединяет несколько логических страниц под одним вызовом и сам решает, какую из них показать по текущему URL. Именно поэтому bitrix:catalog по одному адресу показывает раздел, по другому — товар, по третьему — список, хотя физически это один компонент на одной странице.

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

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

ЧПУ и разбор URL

Сердце комплексного компонента — механизм человекопонятных URL (ЧПУ). Он определяет, как части адреса превращаются в режим работы и параметры.

  1. Включение ЧПУ. В настройках компонента задаётся, что он работает в режиме человекопонятных адресов, и указывается корневой путь.
  2. Описание путей. Файл с шаблонами URL сопоставляет маски адресов с внутренними страницами (список, раздел, элемент).
  3. Определение режима. По совпавшей маске компонент понимает, что показать, и извлекает переменные (код раздела, элемента).
  4. Вызов внутренней страницы. На основе режима подключается соответствующий внутренний компонент с нужными параметрами.

Понимание этого механизма критично при настройке SEO и переносе URL: правки ЧПУ комплексного компонента влияют сразу на всё дерево адресов. Ошибка в масках ломает не одну страницу, а целый раздел. Как аккуратно выкатывать такие изменения без сбоев, мы разбираем в статье про CI/CD и деплой для 1С-Битрикс.

Как комплексный собирается из простых

Важный принцип: комплексный компонент почти никогда не делает всю работу сам — он вызывает простые компоненты для каждого режима. Это делает архитектуру переиспользуемой и предсказуемой.

Режим комплексного каталогаВызываемый простой компонентЧто показывает
Корень каталогаcatalog.section.listДерево разделов
Разделcatalog.sectionСписок товаров раздела
Товарcatalog.elementДетальную карточку
Фильтрcatalog.smart.filterУмный фильтр по свойствам

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

Шаблоны и кастомизация без правки ядра

Главное правило работы с любым компонентом — не трогать его исходники в каталоге bitrix. Всё, что нужно изменить, меняется в слое шаблона сайта, а не в ядре, иначе обновления затрут ваши правки.

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

Кэширование обоих типов

Компоненты кэшируют результат, чтобы не дёргать базу на каждый запрос, но у простых и комплексных кэш устроен по-разному по масштабу.

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

Когда какой тип выбрать

Выбор между простым и комплексным компонентом сводится к вопросу: есть ли у вас несколько связанных страниц с общей логикой и ЧПУ.

На практике для типовых задач вы используете готовые комплексные компоненты (каталог, новости) и кастомизируете их шаблоны, а простые вставляете для отдельных блоков. Своё пишут редко и осознанно.

Свой компонент: стоит ли

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

  1. Не решается ли настройками. Многое покрывается параметрами штатного компонента без единой строки кода.
  2. Не решается ли шаблоном. Изменение вывода — это шаблон и result_modifier, а не новый компонент.
  3. Нужна ли особая маршрутизация. Свой комплексный оправдан, когда нужен нестандартный разбор URL и режимов.
  4. Готовы ли поддерживать. Собственный компонент придётся обновлять и сопровождать самостоятельно.

Если ответы ведут к своему компоненту, это уже уровень полноценной разработки с классом, параметрами и, возможно, модулем. Подходить к этому стоит с ясной архитектурой, а не «по ходу дела».

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

Чек-лист работы с компонентами

  1. Тип определён. Понятно, простой это блок или сценарий из связанных страниц с ЧПУ.
  2. Ядро не тронуто. Кастомизация идёт через копию шаблона, а не правку component.php.
  3. Данные в нужном месте. Доработка данных — в result_modifier, динамика — в component_epilog.
  4. ЧПУ проверены. Маски URL покрывают все режимы, разбор адресов корректен.
  5. Кэш настроен. Теговый кэш включён, динамические данные вынесены из кэшируемой части.
  6. Штатное в приоритете. Проверено, что задача не решается настройками и шаблоном.
  7. Обновляемость сохранена. После обновления ядра кастомизация не ломается.

Вывод

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

Понимая эту механику, вы кастомизируете каталог и новости аккуратно: через шаблоны, result_modifier и эпилог, не трогая ядро и сохраняя обновляемость, с правильно настроенным теговым кэшем. А собственный комплексный компонент пишете только тогда, когда штатных настроек и шаблонов действительно не хватает. Такой подход экономит недели на поддержке и уберегает от правок «на удачу».

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

В чём главное отличие комплексного компонента от простого?

Простой компонент отвечает за одну страницу или один блок и не управляет маршрутизацией. Комплексный объединяет несколько логических страниц под одним компонентом и сам разбирает ЧПУ, распределяя запрос между внутренними режимами. Классический пример — bitrix:catalog, который внутри показывает и разделы, и список товаров, и детальную карточку.

Когда выбирать простой компонент, а когда комплексный?

Простой компонент подходит для самостоятельного блока: список новостей, форма, баннер. Комплексный оправдан, когда есть связанные страницы с общей логикой и ЧПУ — каталог с разделами и карточками, новости со списком и детальной. Если у вас всего одна страница, комплексный компонент — избыточное усложнение.

Как комплексный компонент разбирает человекопонятные URL?

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

Можно ли собрать комплексный из простых компонентов?

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

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

Правильный путь — копировать шаблон компонента в шаблон сайта и менять только представление, а данные дорабатывать через result_modifier.php и component_epilog.php. Так вы не трогаете component.php и class.php ядра, а значит компонент можно обновлять. Прямая правка исходников компонента в bitrix — почти всегда ошибка.

Как кэширование различается у простых и комплексных компонентов?

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

Стоит ли писать свой комплексный компонент или хватит штатных?

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

Поделиться:

Нужна аккуратная доработка компонентов без правки ядра?

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

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

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

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

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