Следи за нами

Шпаргалка по работе с highload-инфоблоками

Дата создания: г.

Данный пост - маленькая шпаргалка для работы с highload-инфоблоками.

Подготовка к работе

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

// подключаем пространство имен класса HighloadBlockTable и даём ему псевдоним HLBT для удобной работы 
use Bitrix\Highloadblock\HighloadBlockTable as HLBT; 

// ID highloadblock'a
const EXP_HL_BLOCK_ID = 1; 

//подключаем модуль highloadblock 
CModule::IncludeModule('highloadblock'); 

//Функция получения экземпляра класса: 
function GetEntityDataClass($iHlBlockId) { 
    if (empty($iHlBlockId) || $iHlBlockId < 1)
    {
        return false;
    }
    $hlblock = HLBT::getById($iHlBlockId)->fetch();   
    $entity = HLBT::compileEntity($hlblock);
    $entity_data_class = $entity->getDataClass();
    return $entity_data_class;
}

Данная функция получает сущность хайлоадов для дальнейшей работы.

Получение названий полей


use Bitrix\Highloadblock\HighloadBlockTable as HLBT;
const EXP_HL_BLOCK_ID = 1;
CModule::IncludeModule('highloadblock');
$hlblock = HLBT::getById(EXP_HL_BLOCK_ID)->fetch();
$entity = HLBT::compileEntity($hlblock);
var_dump($entity->getFields());

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

var_dump(get_class($entity->getFields()['ID']));

Получить элементы highload-инфоблока


 array('*')
));
while($el = $rsData->fetch()){
    print_r($el);
}

Количество элементов highload-инфоблока


const EXP_HL_BLOCK_ID = 1;
CModule::IncludeModule('highloadblock');
$entity_data_class = GetEntityDataClass(EXP_HL_BLOCK_ID);
var_dump($entity_data_class::getCount());

Добавить новый элемент в highload-инфоблок

const EXP_HL_BLOCK_ID = 1;
CModule::IncludeModule('highloadblock');
$entity_data_class = GetEntityDataClass(EXP_HL_BLOCK_ID);
$result = $entity_data_class::add(array(
      'UF_NAME'         => 'Желтый',
      'UF_CODE'         => 'YELLOW',
      'UF_VALUE'         => '#ffff00',
      'UF_ACTIVE'   => '1'
   ));

Удалить новый элемент в highload-инфоблок


const EXP_HL_BLOCK_ID = 1;
CModule::IncludeModule('highloadblock');
$id = 9;
$entity_data_class = GetEntityDataClass(EXP_HL_BLOCK_ID);
$result = $entity_data_class::delete($id);

Обновить новый элемент в highload-инфоблок


const EXP_HL_BLOCK_ID = 1;
CModule::IncludeModule('highloadblock');
$id = 10;
$entity_data_class = GetEntityDataClass(MY_HL_BLOCK_ID);
$result = $entity_data_class::update($id, array(
  'UF_NAME'         => 'Фиолетовый',
  'UF_CODE'         => 'PURPLE',
  'UF_VALUE'         => '#5A009D',
  'UF_ACTIVE'   => '1'
));

В качестве дополнения, рекомендую ознакомиться с оффициальной документацией здесь и здесь

Источник: http://thisis-blog.ru/elementi-highload-bloka/

Прикрепить файл

до 50мб