@SteepNET

Вывести имя элемента «привязка к элементам» Битрикс?

Добрый день!
В init.php через API хочу получить ИМЯ элемента "привязка к элементам". Пытаюсь таким образом.
$res = CIBlockElement::GetProperty($IBLOCK_ID, $ELEMENT_ID, array("sort" => "asc"), Array("CODE"=>"TOVAR"));
    while ($ob = $res->GetNext()) {
        $TOVAR_NAME = $ob['VALUE'];
    }

Но тут я получаю только его ID ,а имя этого элемента никак не могу достать...

В элементе инфоблока свойство с типом "привязка к элементам". При выборе в котором проставляется его ID ,при нажатии на "..." выводится как раз справочник с наименованиями. Вот имя выбранного элемента мне как раз и надо получить.
  • Вопрос задан
  • 1706 просмотров
Решения вопроса 1
udjin123
@udjin123
PHP, Golang, React
Имя элемента в свойстве не храниться, храниться только его ID.

По этому вы сначала получаете его ID как и сделал и делаете второй запрос CIBlockElement::GetByID или еще лучше CIBlockElement::GetList то есть получаете данные уже самого элемента.

$res = CIBlockElement::GetProperty($IBLOCK_ID, $ELEMENT_ID, array("sort" => "asc"), Array("CODE"=>"TOVAR"));
while ($ob = $res->GetNext()) {
	$id = $ob['VALUE'];
	$element = CIBlockElement::GetList([], ['=ID' => $id], false, false, ['ID', 'NAME'])->Fetch();
}

Соответственно в $element['NAME'] будет ваше имя.

Еще можно вот так

$element = CIBlockElement::GetList(
	[],
	[
		'IBLOCK_ID' => $IBLOCK_ID,
		'=ID' => $ELEMENT_ID
	],
	false,
	false,
	['ID', 'PROPERTY_TOVAR.NAME']
)->Fetch();


В таком виде имя элемента будет $elemen['PROPERTY_TOVAR_NAME']

Если свойство множественное, данные способы тоже применимы, но не правильные. Тогда лучше собрать все ID элементов в массив и сделать только один запрос в базу вместо запросов в цикле.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы