sanches.free
Highload-блоки: модуль, DataClass и CRUD через ORM
Подключение и получение DataClass
\Bitrix\Main\Loader::includeModule('highloadblock');
$hlblockRow = \Bitrix\Highloadblock\HighloadBlockTable::getById($hlId)->fetch();
$entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($hlblockRow);
$dataClass = $entity->getDataClass();Найти ID по имени сущности
$hlId = null;
$probe = \Bitrix\Highloadblock\HighloadBlockTable::getList([
'filter' => ['=NAME' => 'MyEntityName'],
]);
if ($row = $probe->fetch()) {
$hlId = (int)$row['ID'];
}Выборки
$list = $dataClass::getList([
'select' => ['*'],
'filter' => ['UF_USER_ID' => 4],
'order' => ['ID' => 'DESC'],
]);
while ($item = $list->fetch()) {
print_r($item);
}
$limited = $dataClass::getList([
'select' => ['ID', 'UF_URL'],
'filter' => ['UF_USER_ID' => 4],
'order' => ['UF_USER_ID' => 'ASC'],
'limit' => 5,
]);Количество строк
use Bitrix\Main\ORM\Fields\ExpressionField;
$aggregate = $dataClass::getList([
'select' => ['CNT'],
'filter' => ['UF_ACTIVE' => true],
'runtime' => [
new ExpressionField('CNT', 'COUNT(*)'),
],
]);
$count = (int)($aggregate->fetch()['CNT'] ?? 0);Одна запись
$one = $dataClass::getById($primary)->fetch();Добавление и обновление
$create = $dataClass::add(['UF_USER_ID' => $userId]);
if ($create->isSuccess()) {
$newId = $create->getId();
} else {
$create->getErrorMessages();
}
$save = $dataClass::update($primary, ['UF_USER_ID' => $userId]);
if (!$save->isSuccess()) {
$save->getErrorMessages();
}Удаление
$drop = $dataClass::delete($primary);
if (!$drop->isSuccess()) {
$drop->getErrorMessages();
}Исторически встречается опечатка $entity_data_class из старых заметок — в рабочем коде переменную лучше называть так же, как $dataClass, чтобы не промахнуться регистром.
Итог
Цепочка «модуль → compileEntity → getDataClass» остаётся стандартом для HL: те же фильтры, лимиты и Result-объекты, что и в остальном ORM D7.
Не хотите копаться сами?
Починю за 1-3 дня. Без предоплаты — оплата по результату.
15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии