Для работы с highload-ами, нужно подключить подключить модуль highloadblock к сущности highload:
// подключаем пространство имен класса HighloadBlockTable и даём ему псевдоним HLBT для удобной работы use Bitrix\Highloadblock\HighloadBlockTable as HLBT; // id highload-инфоблока const MY_HL_BLOCK_ID = 1; //подключаем модуль highloadblock CModule::IncludeModule('highloadblock'); //Функция получения экземпляра класса: function GetEntityDataClass($HlBlockId) { if (empty($HlBlockId) || $HlBlockId < 1) { return false; } $hlblock = HLBT::getById($HlBlockId)->fetch(); $entity = HLBT::compileEntity($hlblock); $entity_data_class = $entity->getDataClass(); return $entity_data_class; }
Данная функция получает сущность хайлоадов для дальнейшей работы.
ПОЛУЧЕНИЕ НАЗВАНИЙ ПОЛЕЙ
$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).
ПОЛУЧИТЬ ЭЛЕМЕНТЫ HIGHLOAD-ИНФОБЛОКА
$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) )); while($el = $rsData->fetch()){ print_r($el); }
КОЛИЧЕСТВО ЭЛЕМЕНТОВ HIGHLOAD-ИНФОБЛОКА
$entity_data_class = GetEntityDataClass(MY_HL_BLOCK_ID); var_dump($entity_data_class::getCount());
ДОБАВИТЬ НОВЫЙ ЭЛЕМЕНТ В HIGHLOAD-ИНФОБЛОК
$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' ));
УДАЛИТЬ НОВЫЙ ЭЛЕМЕНТ В HIGHLOAD-ИНФОБЛОК
$idForDelete = 9; $entity_data_class = GetEntityDataClass(MY_HL_BLOCK_ID); $result = $entity_data_class::delete($idForDelete);
ОБНОВИТЬ НОВЫЙ ЭЛЕМЕНТ В HIGHLOAD-ИНФОБЛОК
$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' ));