Шпаргалка по работе с Highload-блоками в Битрикс

Шпаргалка по работе с Highload-блоками в Битрикс

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// подключаем пространство имен класса 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;
}
// подключаем пространство имен класса 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; }
// подключаем пространство имен класса 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;
}

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

ПОЛУЧЕНИЕ НАЗВАНИЙ ПОЛЕЙ
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$hlblock = HLBT::getById(MY_HL_BLOCK_ID)->fetch();
$entity = HLBT::compileEntity($hlblock);
var_dump($entity->getFields());
$hlblock = HLBT::getById(MY_HL_BLOCK_ID)->fetch(); $entity = HLBT::compileEntity($hlblock); var_dump($entity->getFields());
$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-ИНФОБЛОКА
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$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);
}
$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); }
$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-ИНФОБЛОКА
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$entity_data_class = GetEntityDataClass(MY_HL_BLOCK_ID);
var_dump($entity_data_class::getCount());
$entity_data_class = GetEntityDataClass(MY_HL_BLOCK_ID); var_dump($entity_data_class::getCount());
$entity_data_class = GetEntityDataClass(MY_HL_BLOCK_ID);
var_dump($entity_data_class::getCount());
ДОБАВИТЬ НОВЫЙ ЭЛЕМЕНТ В HIGHLOAD-ИНФОБЛОК
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$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'
));
$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' ));
$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-ИНФОБЛОК
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$idForDelete = 9;
$entity_data_class = GetEntityDataClass(MY_HL_BLOCK_ID);
$result = $entity_data_class::delete($idForDelete);
$idForDelete = 9; $entity_data_class = GetEntityDataClass(MY_HL_BLOCK_ID); $result = $entity_data_class::delete($idForDelete);
$idForDelete = 9;
$entity_data_class = GetEntityDataClass(MY_HL_BLOCK_ID);
$result = $entity_data_class::delete($idForDelete);
ОБНОВИТЬ НОВЫЙ ЭЛЕМЕНТ В HIGHLOAD-ИНФОБЛОК
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$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'
));
$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' ));
$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'
));