Задача: у раздела инфоблока (ID=1) есть пользовательское свойство UF_TITLE, необходимо получить вместе с остальными стандартными параметрами раздела в функции getList на D7.
В старом ядре запрос выглядит так:
Код |
---|
$section = CIBlockSection::GetList(
array(),
array(
"IBLOCK_ID" => 1,
"ACTIVE" => "Y",
"GLOBAL_ACTIVE" => "Y"
),
false,
array(
"ID",
"NAME",
"DESCRIPTION",
"PICTURE",
"UF_TITLE"
)
);
|
В D7 пришлось повозиться:
- Зайти в админке Настройки -> Производительность -> Таблицы
- Подставить в url параметр orm=y для доступа к функции автоматической генерации ORM класса.
- Сгенерировать класс для таблицы b_uts_iblock_1_section
- Положить класс по указанному пути (/bitrix/modules/iblock/lib/iblock1section.php)
- Переименовать namespace (Bitrix\Uts в Bitrix\Iblock)
И только потом можно сделать запрос:
Код |
---|
$section = SectionTable::getList(
array(
"select" => array("ID", "NAME", "DESCRIPTION", "PICTURE", "TITLE"),
"filter" => array("IBLOCK_ID" => 1, "ACTIVE" => "Y", "GLOBAL_ACTIVE" => "Y"),
"runtime" => array(
"TITLE" => array(
"data_type" => Bitrix\Iblock\Iblock1SectionTable::getEntity(),
"reference" => array('=this.ID' => 'ref.VALUE_ID'),
)
)
)
);
|
В итоге в результате получаем искомый параметр в поле IBLOCK_SECTION_TITLE_UF_TITLE.
Можно ли всё это сделать проще? Или каждый раз необходимо совершать описанные процедуры?