Работа с Highload-блоками в 1С‑Битрикс
Highload-блоки — это инструмент, который позволяет хранить и обрабатывать большие объёмы данных без использования инфоблоков. Они оптимизированы для высокой производительности, гибкости и интеграции с ORM‑системой D7. В этой статье мы подробно разберём, как создавать, настраивать и использовать highload-блоки на практике: от интерфейса админки до программной работы с ними в коде.
Что такое Highload-блоки
Highload-блок — представляет собой таблицу в базе данных с собственной ORM‑моделью. Они используются для хранения структурированных данных, которые не требуют типовых возможностей инфоблоков (свойств, версий, событий), но при этом должны быстро обрабатываться и масштабироваться.
Примеры, когда удобно использовать highload-блоки:
- Каталоги справочников (цвета, бренды, города, курьеры).
- История действий пользователя (логирование, просмотры, заказы).
- Хранилище отзывов, комментариев или лайков.
- Сложные связки между сущностями (user → preferences, order → delivery_steps).
Создание Highload-блока через административную панель
Создать highload-блок можно без кода, через интерфейс админки. Это удобно для начальной настройки и тестовых данных.
Шаг 1. Переходим в раздел
Административная панель → Настройки → Highload-блоки → Добавить Highload-блок.
Шаг 2. Заполняем основные параметры
- Название: Человекопонятное имя (например, «Цвета»).
- Таблица базы данных: Указывается латиницей, например,
colors(в БД создастся таблицаb_hlbd_colors).
Шаг 3. Добавляем пользовательские поля
После создания блока переходим в «Поля» и добавляем нужные колонки. Например:
- UF_NAME — строка (название цвета)
- UF_CODE — символьный код (например,
red,blue) - UF_HEX — строка (HEX-код цвета, например
#FF0000)
Шаг 4. Настраиваем доступ
Далее настраиваем права доступа - кто может читать, добавлять, редактировать или удалять записи. Это особенно важно, если highload-блок будет использоваться через публичные формы.
Работа с Highload-блоками через код (D7 ORM)
После создания блока мы можем обращаться к нему через ORM‑модель. Для этого нужно получить класс‑обёртку, который описывает структуру таблицы.
Подключение модуля highloadblock
use Bitrix\Main\Loader;
use Bitrix\Highloadblock as HL;
use Bitrix\Main\Entity;
Loader::includeModule('highloadblock');
Получение ORM‑класса для блока
Чтобы работать с данными, нужно получить ORM‑класс для конкретного highload‑блока. Для этого используется метод HL\HighloadBlockTable::compileEntity().
$hlblock = HL\HighloadBlockTable::getById(1)->fetch();
$entity = HL\HighloadBlockTable::compileEntity($hlblock);
$entityClass = $entity->getDataClass();
Теперь в $entityClass хранится имя ORM‑класса, через который можно выполнять все CRUD‑операции (create, read, update, delete).
Создание записи
$result = $entityClass::add([
'UF_NAME' => 'Красный',
'UF_CODE' => 'red',
'UF_HEX' => '#FF0000'
]);
if ($result->isSuccess()) {
echo 'Добавлено с ID ' . $result->getId();
} else {
echo 'Ошибка: ' . implode(', ', $result->getErrorMessages());
}
Чтение данных
$result = $entityClass::getList([
'select' => ['*'],
'filter' => ['UF_CODE' => 'red']
]);
while ($row = $result->fetch()) {
echo $row['UF_NAME'];
}
Обновление записи
$entityClass::update(1, [
'UF_HEX' => '#DD0000'
]);
Если вы хотите масштабировать проект на 1С‑Битрикс, без highload‑блоков не обойтись: они дают идеальный баланс между скоростью, гибкостью и управляемостью данных.