Рассмотрим как работать с Highload блоками через API. Сам highload блок вы создаете в админке, задаете ему поля, которые настраиваются в пользовательских полях для объекта HBLOCK_ид. Рассмотрим создание записей, изменение записей, фильтрацию и поиск по записям.
use Bitrix\Highloadblock as HL;
use Bitrix\Main\Entity;
use Bitrix\Main\Loader;
Loader::includeModule("highloadblock");
$hbID = 11;
$hlblock = HL\HighloadBlockTable::getById($hbID)->fetch();
$entity = HL\HighloadBlockTable::compileEntity($hlblock);
$entity_data_class = $entity->getDataClass();
//Или если ID не известен или меняется при миграции на боевой портал
$hlblock = HighloadBlockTable::getList([
'filter' => ['=NAME' => 'код HB']
])->fetch();
if($hlblock){
$hlClassName = (HighloadBlockTable::compileEntity($hlblock))->getDataClass();
}
// Добавление элемента
$data = array( "UF_NAME"=>'Название', );
$result = $entity_data_class::add($data);
//изменение элемента
$data = array( "UF_NAME"=>'другое Название, );
$elementID=2;
$result = $entity_data_class::update($elementID, $data);
//Получение по фильтру:
$rsData = $entity_data_class::getList(array(
"select" => array("*"),
"filter" => array("UF_POLE_ID"=>"1")
));
while($arData = $rsData->Fetch()){
var_dump($arData);
}