Как создать Highload-блок на 1С-Битрикс: справочники, свойства и вывод на сайте

Как создать Highload-блок на 1С-Битрикс: справочники, свойства и вывод на сайте

Бренды и города в свойствах инфоблока раздули каталог - фильтр тормозит, заказчик просит "вынести справочник". Highload-блок (HL) в 1С-Битрикс: Управление сайтом - отдельная плоская таблица MySQL с полями UF_* и формой в админке, а не "инфоблок, только быстрее". Ниже - когда HL уместен, создание в админке, вывод через bitrix:highloadblock.list и D7 ORM, индексы на UF_* и типовые ошибки. Проверено 30 июля 2026.

Highload-блок (HL) в 1С-Битрикс: Управление сайтом - отдельная плоская таблица MySQL со своими UF_-полями и формой в админке "Контент → Highload-блоки". Без иерархии разделов и SEO-страниц элементов; для больших справочников (бренды, города, коды), связи с каталогом через UF_XML_ID и быстрой выборки через D7 ORM compileEntity и getList. Сегодня: создайте блок, заполните справочник, выведите list/view или getList, добавьте ADD INDEX на поля фильтра.

Bitrix24 - CRM в облаке, не наш продукт. Здесь только коробочная CMS на вашем сервере. Углублённый add/update/delete - в гайде по D7 CRUD для Highload; обзор кластера - в хабе по Highload-блокам. В выдаче много сниппетов с HL=1 и мало связки "админка → компонент → индексы".

Оцените, когда Highload оправдан вместо инфоблока

Сравнение инфоблока и Highload-блока: объём, структура, кейсы

Инфоблок - контент с разделами, SEO и карточкой элемента. HL - плоский справочник: бренды, города, коды складов, логи. Без иерархии и без URL элемента на сайте.

Критерий Инфоблок Highload-блок
Объём До нескольких тысяч Десятки и сотни тысяч строк
Структура Разделы, SEO, детальная страница Плоский справочник
Кейс Товары, новости, статические страницы Бренды, города, таблицы соответствий
Связь с каталогом Элемент = товар В товаре UF_XML_ID или ID из HL

Если умный фильтр на Битрикс тормозит из-за "списка" с тысячами значений - кандидат на HL.

Когда HL: справочники от 3-5 тысяч строк, логи без SEO. Когда НЕ нужен HL: контент с разделами и ЧПУ, новости с мета-тегами, товары с карточкой и галереей, любая иерархия "раздел → элемент". Для этого создайте инфоблок в админке - HL не заменит SEO и дерево разделов.

Делайте: выносите только "тяжёлые" справочники. Не делайте: не дублируйте товары в HL "ради скорости".

Создайте HL-блок в админке CMS

Схема создания HL-блока в админке 1С-Битрикс: от формы до HLBLOCK_ID

Путь: Контент → Highload-блоки → Добавить. Поля HL - пользовательские поля с объектом HLBLOCK_ID.

  1. Название сущности латиницей: BrandDirectory.
  2. TABLE_NAME в snake_case: b_hlbd_brands - уникально в базе.
  3. Языковые названия для редакторов в админке.
  4. Права на закладке "Права" (с 17.0.0 модуля).
  5. ID блока после сохранения - для BLOCK_ID и кода. Не копируйте HL=1 с Habr.

Добавьте UF_NAME, UF_XML_ID, UF_SORT, UF_ACTIVE; для логотипа - UF_FILE. В каталоге задайте тип свойства "Справочник" с привязкой к HL - штатный путь из курса CMS (COURSE_ID=41).

Делайте: фиксируйте ID и TABLE_NAME в документации. Не делайте: не меняйте TABLE_NAME на проде без миграции.

Заполните справочник и свяжите с каталогом

Чеклист заполнения справочника и связки Highload-блока с каталогом

Записи: "Контент → Highload-блоки → [блок] → Элементы". Тысячи строк - импорт CSV или штатный экспорт/импорт модуля.

Связка: HL (UF_XML_ID) → свойство "Справочник" в товаре → фильтр по коду → без раздувания свойств IB

С 1С синхронизируйте UF_XML_ID - см. интеграцию 1С с сайтом. В товаре храните XML_ID, не текст бренда.

Делайте: проверьте уникальность UF_XML_ID перед импортом. Не делайте: не заливайте 50 000 строк без теста на стенде.

Выведите справочник компонентами list и view

В модуле highloadblock есть bitrix:highloadblock.list и bitrix:highloadblock.view. В визредакторе: "Контент → Highload инфоблоки" или ручная вставка.

List - таблица записей на странице "Все бренды". Параметры: BLOCK_ID (ID из админки), DETAIL_URL (шаблон /brands/#ID#/), ROWS_PER_PAGE, SORT_FIELD, SORT_ORDER. View - одна запис по ROW_ID из URL; укажите BLOCK_ID и шаблон DETAIL_URL в list, чтобы ссылки вели на view-страницу.

<?php
$APPLICATION->IncludeComponent(
 'bitrix:highloadblock.list',
 '',
 [
 'BLOCK_ID' => BRAND_HL_ID,
 'DETAIL_URL' => '/brands/#ID#/',
 'ROWS_PER_PAGE' => 50,
 'SORT_FIELD' => 'UF_SORT',
 'SORT_ORDER' => 'ASC',
 ]
);

Делайте: для типового списка брендов начните с list и кастомизируйте шаблон. Не делайте: не пишите compileEntity, если штатный компонент закрывает задачу.

Прочитайте данные через compileEntity и getList

D7 ORM: Loader::includeModule('highloadblock') → getById → compileEntity → getDataClass → getList. Классы HighloadBlockTable, compileEntity и getDataClass - канон api_d7.

<?php
use Bitrix\Main\Loader;
use Bitrix\Highloadblock\HighloadBlockTable;

Loader::includeModule('highloadblock');
$hlblock = HighloadBlockTable::getById(BRAND_HL_ID)->fetch();
if (!$hlblock) return;
$entity = HighloadBlockTable::compileEntity($hlblock);
$dataClass = $entity->getDataClass();
$rows = $dataClass::getList([
 'select' => ['ID', 'UF_NAME', 'UF_XML_ID'],
 'filter' => ['=UF_ACTIVE' => 1],
 'order' => ['UF_SORT' => 'ASC'],
 'limit' => 50,
])->fetchAll();

Битый ID даёт Invalid highloadblock description - типичная ошибка на практике: getById(1) с Habr, на проде блок с ID=4. Кэшируйте $dataClass в static или Bitrix\Main\Data\Cache с TTL 3600, не compileEntity на каждый hit каталога.

Для вывода в шаблоне интернет-магазина getList удобен, когда нужна кастомная верстка списка брендов вне стандартного шаблона list. add/update/delete, AddResult и кэш entity - в гайде по Highload D7 CRUD - здесь только чтение, без дубля полного справочника операций.

Делайте: getById()->fetch() перед compileEntity. Не делайте: не наследуйте DataClass без getEntity - Unknown field definition.

Создайте HL через API для миграций

На staging: HighloadBlockTable::add с полями NAME и TABLE_NAME, затем UF_-поля через CUserTypeEntity. Удобно для Sprint Migration и install-скриптов модуля - TABLE_NAME и набор UF_* совпадают на dev и prod. На проде для разовой задачи быстрее админка.

Делайте: фиксируйте структуру HL в миграции. Не делайте: не вызывайте highloadblock до загрузки обработчика пользовательских полей в init.php - типичный bootstrap-конфликт из api_help.

Проверьте индексы UF_* и производительность

После 5-10k строк без индекса - full scan. Битрикс не ставит индексы на UF_* сам:

ALTER TABLE b_hlbd_brands ADD INDEX ix_xml_id (UF_XML_ID);
ALTER TABLE b_hlbd_brands ADD INDEX ix_name (UF_NAME);

После ADD INDEX - EXPLAIN: type ref/range, не ALL.

Симптом Исправление
Invalid highloadblock description includeModule, сверить HLBLOCK_ID
getList пустой на проде Константа с реальным ID, не HL=1
Фильтр 4+ сек на 20k ADD INDEX на UF_* из WHERE
Unknown field definition Не наследуйте DataClass без getEntity

Делайте: после выноса справочника прогоните фильтр под нагрузкой - в результате получите предсказуемое время ответа. Не делайте: не считайте HL ускорителем без индексов - это обычная MySQL-таблица с формой в админке.

Обзор кластера "highload блоки битрикс" - в хабе по Highload на CMS. Заложите поддержку сайта на мониторинг медленных запросов после выноса справочника.

Аудит каталога и вынос справочников - обсудим задачу. Кейсы - в портфолио.

Автор: Максим Мольков, разработчик 1С-Битрикс.
Источники: dev.1c-bitrix.ru, api_d7 highloadblock. Проверка: 30 июля 2026.

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

Что такое highload блок в битрикс?

Highload-блок (HL) в 1С-Битрикс: Управление сайтом - плоская таблица MySQL с UF_-полями и формой в админке "Контент → Highload-блоки". Для больших справочников без разделов и SEO-страниц; связь с каталогом через UF_XML_ID.

Чем highload отличается от инфоблока?

Инфоблок - контент с разделами, URL и SEO; для товаров и новостей. HL - плоский список кодов для связи с каталогом. 8 000 брендов в фильтре - HL; карточка товара с галереей - инфоблок.

Как создать highload блок битрикс?

"Контент → Highload-блоки → Добавить": NAME, TABLE_NAME (b_hlbd_*), UF_-поля (UF_NAME, UF_XML_ID, UF_ACTIVE), записать ID для BLOCK_ID и кода.

Как вывести highload блок на сайте?

Штатно: bitrix:highloadblock.list (BLOCK_ID, DETAIL_URL, ROWS_PER_PAGE) и highloadblock.view. В коде: Loader::includeModule, HighloadBlockTable::getById, compileEntity, getDataClass, getList.

Invalid highloadblock description - что делать?

Неверный ID, блок удалён или модуль не подключён. Loader::includeModule('highloadblock'), сверьте ID в админке, getById()->fetch() должен вернуть массив перед compileEntity.

Когда использовать Highload для каталога?

Когда свойства "список" раздулись до тысяч значений и фильтр тормозит. Бренды и города - в HL, в товаре UF_XML_ID. Товары с карточкой - в инфоблоке.

Можно ли создать HL только из кода?

Да: HighloadBlockTable::add и CUserTypeEntity для UF_*. CRUD через entityClass - в гайде D7 ORM CRUD (HighloadBlockTable, add, update, delete) на mvmolkov.ru/blog/ai/highload-d7-orm-crud-bitrix/.

Читайте также

Интеграции с 1С и API
1136 6 мин.

Как настроить регистрацию и личный кабинет покупателя на 1С-Битрикс?

Пошаговая настройка регистрации на сайте битрикс: Главный модуль, main.register, system.auth.form и sale.personal.section с историей заказов и 152-ФЗ.
Интеграции с 1С и API
1052 6 мин.

Как настроить скидки и промокоды на 1С-Битрикс: правила корзины и купоны

Пошаговый гайд по скидкам в CMS-магазине: скидка на товар, правило корзины от суммы, купоны с лимитом, приоритеты без конфликтов и тестовый заказ. Не Bitrix24.
Интеграции с 1С и API
881 15 мин.

Что такое компонент в Битриксе и как он работает

Каждый разработчик, впервые столкнувшийся с Битриксом, проходит через своеобразный обряд посвящения. Вначале кажется, что это просто CMS, где можно поправить HTML в визуальном редакторе или дописать пару строк CSS. Но однажды наступает момент, когда нужно изменить логику вывода новостей, отфильтровать товары по хитрому свойству или добавить на страницу нечто совершенно новое. И тут он впервые слышит это слово — «компонент». Для многих этот момент становится стеной. Система, казавшаяся понятной, вдруг превращается в черный ящик, полный непонятных файлов и странных переменных. Но стоит лишь раз заглянуть под капот, как эта стена рассыпается, превращаясь в набор удивительно логичных и мощных строительных блоков. Понимание компонентов — это тот самый щелчок, после которого разработка на Битрикс из мучения превращается в творчество.

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

Интеграции с 1С и API
794 2 мин.

Установка Composer в 1С-Битрикс

Установка Composer в проекте на 1С-Битрикс требует учета особенностей платформы, чтобы обеспечить корректную работу и интеграцию с системой.