Задать вопрос
@alexander_chn

Как в Битрикс вывести множественное свойство через API?

Здравствуйте! В битрикс есть множественное свойство типа список с такими параметрами:
5da1f2f316ce1877961142.png
Вот код которым я вывожу это свойство:
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");

$iblock_id  = 2;
$section_id = 34;

$arSelect = Array(
	"ID", 
	"NAME",
	"PROPERTY_ACTION");

$arFilter = Array( "IBLOCK_ID"=>$iblock_id, "SECTION_ID"=>$section_id, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y" );
$res = CIBlockElement::GetList(Array("SORT"=>"ASC"), $arFilter, false, false, $arSelect);

while($ob = $res->GetNextElement()) :
	$arFields = $ob->GetFields();
	echo $arFields['PROPERTY_ACTION_VALUE'] . '<hr>';
endwhile;

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

Выводится такое:
5da1f312c6b23489358615.png
В этом разделе есть 7 товаров, и только один товар с заполненым значением. В этом товаре присутствуют все значения.
Выводится странно, то есть при каждом проходе цикла выводит по одному значению этого множественного свойства.
Как вывести его нормально?
  • Вопрос задан
  • 2940 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
alex-1917
@alex-1917
Если ответ помог, отметь решением
этот код внутри твоего цикла будет, это битрикс, увы и ах
$VALUES = array();
$res = CIBlockElement::GetProperty($IBLOCK_ID, $ELEMENT_ID, Array("sort"=>"asc"), array("CODE" => "UF_NOTE_USER"));
    while ($ob = $res->GetNext())
    {
        $VALUES[] = $ob['VALUE'];
    }
}


Или другой варик - если ты включаешь множественное в arSelect, то у тебя будет вот такой нюанс, в доках описан:
Примечание 1: если в массиве используются свойство, являющееся множественным, то для элементов, где используются несколько значений этого свойства, будет возвращено несколько записей вместо одной. Для решения этой проблемы инфоблоки нужно перевести в Режим хранения свойств в отдельных таблицах, в этом случае для свойства будет отдаваться массив значений. Либо можно не указывать свойства в параметрах выборки, а получать их значения на каждом шаге перебора выборки с помощью _CIBElement::GetProperties().

Я делаю так - в арселект включаю множественное, но дальшее в php отсекаю повторы, в массиве останутся первые по сортировке значения множественных полей.
Это битрикс, детка,это битрикс.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы