CIBlockElement::GetList

Подскажите, как правильно отфильтровать

    $arFilterSchet = array("IBLOCK_ID" => "88", "PROPERTY_398_VALUE" => $_GET['id']);
$resScheta =  CIBlockElement::GetList(Array(), $arFilterSchet, false, array(), $arSelectScheta);

$obSchet = $resScheta->GetNextElement();

$data = $obSchet->GetFields();


    $arRes[] = [
        "id" => $data["ID"],
        "name" => $data["PROPERTY_398_VALUE"],
        ];

$data["PROPERTY_398_VALUE"] возвращает всегда только первое значение поля, не зависимо куда записали, то есть, есть 4 поля с id 145, 146, 147, 148

Мне выводит только 145,


Ответы (2 шт):

Автор решения: Сергей Савченко

Не используйте GetNextElement этот метод устарел.

вы достаете только один елемент измените свой код на:

$arFilterSchet = array("IBLOCK_ID" => "88", "PROPERTY_398_VALUE" => $_GET['id']);
$resScheta =  CIBlockElement::GetList(Array(), $arFilterSchet, false, array(), $arSelectScheta);
while($data = $resScheta->GetNext()){
    $arRes[] = [
        "id" => $data["ID"],
        "name" => $data["PROPERTY_398_VALUE"],
    ];
}
→ Ссылка
Автор решения: Firsov36

Вы делаете запрос данных CIBlockElement::GetList, а далее из полученных данных только один раз получаете запись $resScheta->GetNextElement(). Вот и выходит, что у вас только один элемент выводится.

Оберните в цикл запрос записей из полученных данных.

while($r = $resScheta->GetNextElement()) {
    ...
}

Ну и как правильно сказал '@Сергей Савченко' - эти методы устарели, посмотрите в сторону bitrix d7. Но в принципе, старые методы не запрещается использовать... "пока" не запрещается.

→ Ссылка