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

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

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

Для работы с 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'
));
Количество показов: 27158
14.06.2017

Возврат к списку

Если вам была полезна статья можете отблагодарить автора:
Ethereum:

0x16Df809287333C49D3A237296C6248A6c08702Bc

Разработка сайта

Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...

Сопровождение сайта

Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение

Работы по сайту

Вы можете подать заявку на выполнение определенного объема работ по сайту. Опишите в заявке объем работ. Это может быть разработка какого-то нового функционала, доработки по имеющемуся функционалу, доработки под требования сео-специалистов. На основании заявки вам будет сформирован бюджет работ, а также названы сроки на выполнение тех или иных работ.