Работа с HL-блоками через API D7
Как получить класс сущности Highload-блока для работы с его данными: добавить, изменить, удалить запись
Содержание
В статье приведены методы API D7, которые часто применяются при работе с Highload-блоками в 1С-Битрикс.
Получение класса сущности HL-блока
Для работы с данными в Highload-блоке через ORM и API D7 нужно для начала получить сущность и класс HL-блока.
Сделать это можно следующим образом.
Получение по имени:
<?php
use Bitrix\Highloadblock\HighloadBlockTable;
use Bitrix\Main\Loader;
Loader::includeModule('highloadblock');
$hlBlockName = 'ExampleHL'; //имя HL-блока
//получение HL по имени
$hlBlock = HighloadBlockTable::getList(['filter' => ['NAME' => $hlBlockName]])->fetch();
$entity = HighloadBlockTable::compileEntity($hlBlock);
//получаем класс для работы
$entityClass = $entity->getDataClass();
Также HL-блок можно получить по ID:
<?php
//получение HL по ID
$hlBlock = HighloadBlockTable::getList(['filter' => ['ID' => $hlBlockId]])->fetch();
Или по названию таблицы:
<?php
//получение HL по имени таблицы
$hlBlock = HighloadBlockTable::getList(['filter' => ['=TABLE_NAME' => $hlBlockTable]])->fetch();
Добавление записи в HL-блок
<?php
use Bitrix\Highloadblock\HighloadBlockTable;
use Bitrix\Main\Loader;
Loader::includeModule('highloadblock');
$hlBlockName = 'ExampleHL'; //имя HL-блока
$hlBlock = HighloadBlockTable::getList(['filter' => ['NAME' => $hlBlockName]])->fetch();
$entity = HighloadBlockTable::compileEntity($hlBlock);
//получаем класс для работы
$entityClass = $entity->getDataClass();
$res = $entityClass::add([
'UF_NAME' => 'Тест',
'UF_XML_ID' => 'test',
//... остальные поля
]);
$isSuc = $res->isSuccess();
Изменение записи в HL-блоке
<?php
use Bitrix\Highloadblock\HighloadBlockTable;
use Bitrix\Main\Loader;
Loader::includeModule('highloadblock');
$hlBlockName = 'ExampleHL'; //имя HL-блока
$hlBlock = HighloadBlockTable::getList(['filter' => ['NAME' => $hlBlockName]])->fetch();
$entity = HighloadBlockTable::compileEntity($hlBlock);
//получаем класс для работы
$entityClass = $entity->getDataClass();
//$id – ID записи в HL-блоке
$res = $entityClass::update($id, [
'UF_NAME' => 'Тест',
'UF_XML_ID' => 'test',
//... остальные поля
]);
Удаление записи из HL-блока
<?php
use Bitrix\Highloadblock\HighloadBlockTable;
use Bitrix\Main\Loader;
Loader::includeModule('highloadblock');
$hlBlockName = 'ExampleHL'; //имя HL-блока
$hlBlock = HighloadBlockTable::getList(['filter' => ['NAME' => $hlBlockName]])->fetch();
$entity = HighloadBlockTable::compileEntity($hlBlock);
//получаем класс для работы
$entityClass = $entity->getDataClass();
//$id – ID записи в HL-блоке
$res = $entityClass::delete($id);
Получение записей из HL-блока
<?php
use Bitrix\Highloadblock\HighloadBlockTable;
use Bitrix\Main\Loader;
Loader::includeModule('highloadblock');
$hlBlockName = 'ExampleHL'; //имя HL-блока
$hlBlock = HighloadBlockTable::getList(['filter' => ['NAME' => $hlBlockName]])->fetch();
$entity = HighloadBlockTable::compileEntity($hlBlock);
//получаем класс для работы
$entityClass = $entity->getDataClass();
$listRes = $entityClass::getList([
'select' => ['ID', 'UF_NAME', 'UF_XML_ID'],
'filter' => [//...],
]);
// перебираем результат в массив
while ($item = $listRes->Fetch()) {
$list[] = $item;
}
А в этой статье можете узнать, как получить все варианты из поля типа «Список» в HL-блоке.
Оставьте комментарий
Если эта статья была полезной для вас, оставьте комментарий ниже или задайте интересующий Вас вопрос. Ваш опыт может помочь другим читателям!
Написать комментарий