Задать вопрос
@Kirill-Gorelov
С ума с IT

Битрикс, я сдаюсь CIBlockElement::SubQuery?

Мне нужно достать название элемента из другого инфоблока по его id(элемента)(id элемента у меня является "привязкой к элементу")

Сейчас это сделано так:
$arSelect = Array("ID", "NAME", "PROPERTY_c_serv", "PROPERTY_P_CAT_VALUE");
$arFilter = Array("IBLOCK_ID" => "10");
$res = CIBlockElement::GetList(Array(), $arFilter, false, array("nPageSize" => 25), $arSelect);
while($arFields = $res->fetch()){
    //тут я делаю дополнительный запрос
    $arSelect_cat = Array("ID", "NAME");
    $arFilter_cat = Array("IBLOCK_ID"=>"11", "ACTIVE"=>"Y","ID"=>$arFields["PROPERTY_P_CAT_VALUE"]);
    $res_cat = CIBlockElement::GetList(Array(), $arFilter_cat, false, false, $arSelect_cat);
    while($ob_cat = $res_cat->GetNextElement()){
        $arFields_cat = $ob_cat->GetFields();
        $arFields["category"] = $arFields_cat["NAME"];
    }
}


Ну и соответственно это ни в какие ворота.
Поэтому хочу сделать под запрос, с помощью CIBlockElement::SubQuery (Документация)

Я его уже несколько раз переписываю, ничего не меняется, абсолютно.
Переписал я его вот так:
$arSelect = Array("ID", "NAME", "PROPERTY_c_serv", "PROPERTY_P_CAT_VALUE");
$arFilter = Array("IBLOCK_ID" => "10", "ID" => CIBlockElement::SubQuery("NAME", array("IBLOCK_ID"=>"11", "ACTIVE"=>"Y","ID"=>$arFields["PROPERTY_P_CAT_VALUE"])));
$res = CIBlockElement::GetList(Array(), $arFilter, false, array("nPageSize" => 25), $arSelect);
while($arFields = $res->fetch()){
    //код
}


И в результате ничего не меняется. Ни отображается, ни ошибки ничего не происходит,как запрос был так он и работал.
Что я делаю не так? Кто уже делал такие под запросы, подскажите, буду весьма благодарен. Или хотя бы ткните где я сделал не так(
  • Вопрос задан
  • 2642 просмотра
Подписаться 1 Простой Комментировать
Ответ пользователя Антон К ответам на вопрос (3)
@anton99zel Куратор тега 1С-Битрикс
29а класс средней школы №7
$arSelect = Array("ID", "NAME", "PROPERTY_c_serv", "PROPERTY_P_CAT_VALUE");
$arFilter = Array("IBLOCK_ID" => "10");
$res = CIBlockElement::GetList(Array(), $arFilter, false, array("nPageSize" => 25), $arSelect);
while($arFields = $res->fetch()){
$ID = $arFields["PROPERTY_P_CAT_VALUE"];
$rest = CIBlockElement::GetByID($ID);
	if($ar_rest = $rest->GetNext())
  		echo $ar_rest['NAME']; // Название элемента 
}

И пишите символьные коды в системе заглавными буквами
Ответ написан