Работа с Highload-блоками Bitrix - Сергей Житников: Web-разработчик

Работа с Highload-блоками Bitrix

Для работы с highload-ами, нужно подключить подключить модуль highloadblock к сущности highload. Если не подключено, подключить ядро битрикс.

use Bitrix\Main\Loader;
use Bitrix\Highloadblock\HighloadBlockTable as HLBT;

Loader::includeModule('highloadblock');

Дальше получаем экземпляр класса HL-блока (любые действия с хайлоад-блоками выполняются с помощью этой сущности):

function getEntityDataClass($HlBlockId) {
    if (empty($HlBlockId) || $HlBlockId < 1)
    {
        return false;
    }
    $hlblock = HLBT::getById($HlBlockId)->fetch();
    $entity = HLBT::compileEntity($hlblock);
    return $entity->getDataClass();
}

После того, как получили сущность хл-блока, можно выполнять стандартные операции — получать данные, удалять, редактировать, добавлять. Для работы с полями HL блока получать экземпляр класса HL не нужно.

Работа с полями HL блока

$hlblock = HLBT::getById(MY_HL_BLOCK_ID)->fetch();
$entity = HLBT::compileEntity($hlblock);
var_dump($entity->getFields());

В результате, получаем массив, где ключи — это поля highload-блока, а значения — объекты, соответствующие типу поля (строка — Bitrix\Main\Entity\StringField, число — Bitrix\Main\Entity\IntegerField).

Дальше можно работать с объектами — полями HL блока:

foreach ($entity as $field) {
    echo $field->getName();             //возвращает имя поля
    echo $field->isRequired();          //возвращает true, если поле является обязательным для заполнения (required), и false в противном случае
    echo $field->getDefaultValue();     //возвращает значение по умолчанию для поля
}

Получение элементов

Получаем элементы HL блока:

$entity_data_class = getEntityDataClass(MY_HL_BLOCK_ID);
$rsData = $entity_data_class::getList(array(
    'order' => array('UF_NAME'=>'ASC'),
    'select' => array('*'),
    'filter' => array('!UF_NAME'=>false, "UF_PRODUCT_ID"=>"77","UF_TYPE"=>'33')
));
while($el = $rsData->fetch()){
    print_r($el);
}

Можно получить количество элементов HL блока (для примера, получим имена, которые начинаются на «м» или «т»:):

$entity_data_class = getEntityDataClass(MY_HL_BLOCK_ID);
$ar_filter = [
    [
        "LOGIC"=>"OR",
        [
            "UF_NAME"=>'м%'
        ],
        [
            "UF_NAME"=>'т%'
        ]
    ]
];
$rs_data = $entity_data_class::getList(array(
    'select' => array('*'),
    'filter' => $ar_filter
));
while($el = $rs_data->fetch()){
    var_dump($el);
}

Метод для получения всех полей одного элемента HL-блока:

$entity_data = $entity_data_class::getRowById($entityId);

Добавление элементов

Добавляем элементы в HL блок:

$entity_data_class = getEntityDataClass(MY_HL_BLOCK_ID);
$result = $entity_data_class::add(array(
    'UF_NAME' => 'Желтый',
    'UF_CODE' => 'YELLOW',
    'UF_VALUE' => '#ffff00',
    'UF_ACTIVE' => '1'
   ));

Error: Не стоит забывать, что в HL блоках могут быть разные типы полей, они могут быть обязательными и необязательными. Элемент может не добавляться, если не добавлено обязательное поле.

Удаление элементов

Пример удаления элемента:

$idForDelete = 9;
$entity_data_class = getEntityDataClass(MY_HL_BLOCK_ID);
$result = $entity_data_class::delete($idForDelete);

Обновление элементов

Пример обновления элемента:

$idForUpdate = 10;
$entity_data_class = getEntityDataClass(MY_HL_BLOCK_ID);
$result = $entity_data_class::update($idForUpdate, array(
    'UF_NAME' => 'Фиолетовый',
    'UF_CODE' => 'PURPLE',
    'UF_VALUE' => '#5A009D',
    'UF_ACTIVE' => '1'
));
Сергей Житников
Об авторе

Сергей Житников - Веб-разработчик

Занимаюсь веб-разработкой более 5 лет. Специализируюсь на создании адаптивных сайтов и веб-приложений на HTML5, CSS3 и JavaScript. Работаю с популярными CMS и фреймворками, а также уделяю большое внимание оптимизации производительности и чистоте кода.

Есть проект или идея? Буду рад помочь!

Связаться со мной

Последние статьи

19.06.2026
В статье собрал шпаргалку по основным компонентам Bitrix: bitrix:menu, news.list, news.detail, sale.basket.basket.line, main.include и breadcrumb. Разобрал настройку меню из разделов и элементов инфоблока через файлы .menu_ext.php, показываю полные конфигурации компонентов с пояснениями ключевых параметров. Готовые примеры для быстрого копирования и использования в проектах.
19.06.2026
Купоны в Битрикс неразрывно связаны с правилами работы с корзиной — без привязки к правилу они не сработают, а правило без купонов применит скидку на все товары. Разбираю создание купонов через DiscountCouponTable::add(): обязательные и опциональные поля, типы купонов, флаги активности. Показываю примеры работы с датами через объект DateTime (прибавление дней, месяцев и минут).
19.06.2026
Разбираю готовые примеры работы с изображениями в PHP: сохранение на сервер, вывод в браузер, рисование линий и прямоугольников. Отдельно — нюансы с форматами файлов (JPEG/PNG) и поддержкой кириллицы через шрифты.