/
bitrix-dev
/
Starter-kit
Обзор
Документация
Войти
/
bitrix-dev
/
Starter-kit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
main
local/php_interface/classes/mwi/Helper/Hlblock.php
120 строк
4 KB
Alexey Karizhenskiy
Первая сборка (из ранее используемого)
19 янв 2026, 21:00
19 янв 2026, 21:00
d843e36
Код
Авторство
О чём код?
<?php /** * 07.11.2024 * @author AlexeyS <karizhenskiy@bk.ru> */ namespace MWI\Helper; use Bitrix\Main\Loader; use Bitrix\Main\LoaderException; class Hlblock { /** * Возвращает ID HL-блока по названию таблицы * * @param string $tableName Название таблицы * * @return int * @throws ArgumentException * @throws ObjectPropertyException * @throws SystemException */ static function getIdByTableName(string $tableName): ?int { if (!Loader::includeModule('highloadblock')) { throw new LoaderException('Ошибка загрузки модуля highloadblock'); } $hlBlock = \Bitrix\Highloadblock\HighloadBlockTable::getRow([ 'filter' => ['=TABLE_NAME' => $tableName], 'cache' => ['ttl' => 3600] ]); return $hlBlock['ID']; } /** * Возвращает класс HL-блока по его таблице * * @param string $tableName * * @return string * @throws \Bitrix\Main\ArgumentException * @throws \Bitrix\Main\ObjectPropertyException * @throws \Bitrix\Main\SystemException */ static function getDataClassByTable(string $tableName): string { if (!Loader::includeModule('highloadblock')) { throw new LoaderException('Ошибка загрузки модуля highloadblock'); } $hlDataClass = ''; $hlblock = \Bitrix\Highloadblock\HighloadBlockTable::getRow([ 'filter' => ['=TABLE_NAME' => $tableName], 'cache' => ['ttl' => 3600] ]); if ($hlblock) { $entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($hlblock); $hlDataClass = $entity->getDataClass(); } return $hlDataClass; } /** * Возвращает все поля записей HL-блока * @param string $tableName * @param array $xmlId * * @return array|null * @throws ArgumentException * @throws ObjectPropertyException * @throws SystemException */ static function getAllFieldsByTable(string $tableName, array $xmlId = []): ?array { if (!Loader::includeModule('highloadblock')) { throw new LoaderException('Ошибка загрузки модуля highloadblock'); } $hlBlock = \Bitrix\Highloadblock\HighloadBlockTable::getRow([ 'filter' => ['=TABLE_NAME' => $tableName], 'cache' => ['ttl' => 3600] ]); if (!$hlBlock) { return null; } $entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($hlBlock); $hlDataClass = $entity->getDataClass(); $filter = !empty($xmlId) ? ['UF_XML_ID' => $xmlId] : []; $result = $hlDataClass::getList([ 'filter' => $filter, 'select' => ['*'] ])->fetchAll(); return $result ?: null; } /** * Добавляет элемент в HL-блок * * @param string $tableName Название таблицы HL-блока * @param array $fields Массив полей для добавления * @return \Bitrix\Main\ORM\Data\AddResult */ static function addElement(string $tableName, array $fields): \Bitrix\Main\ORM\Data\AddResult { if (!Loader::includeModule('highloadblock')) { throw new LoaderException('Ошибка загрузки модуля highloadblock'); } $hlDataClass = self::getDataClassByTable($tableName); return $hlDataClass::add($fields); } }