Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

непокорный CIBlockElement::GetList

00 голосов
5
Уважаемые форумчане. Вновь возникла неожиданная проблема, с которой не могу справиться уже почти сутки.
Есть некий элемент, у которого существуют некоторое количество полей.Одно из них - my_field, по которому мне и нужно выполнить формирование списка. Написал код: но он, собака, живет своей жизнью и не выполняет ожидаемой сортировки по полю my_field. что я делаю не так?!?!

$arFilter= array("IBLOCK_ID" => "6");
$arSelect=array("PROPERTY_my_field"=>"1");
$res = CIBlockElement::GetList(array('sort' => 'asc', 'name' => 'asc'),
$arFilter,
false,
false,
$arSelect);
while($ar=$res->Fetch())
{
echo $ar["NAME"]."<br />".$ar["ID"];
}
спросил 05 Янв, 14 от lynch (100 баллов)

5 Ответы

00 голосов

Фильтровать надо в массиве $arFilter или 2 параметре CIBlockElement::GetList

Ответ

$arFilter= array("IBLOCK_ID" => "6", "PROPERTY_my_field"=>"1"); 

Если my_field список и фильтруешь по значению то 

$arFilter= array("IBLOCK_ID" => "6", "PROPERTY_my_field_VALUE"=>"1"); 

ответил 26 Март, 14 от аноним
00 голосов
Цитата
wolfrum пишет:
что я делаю не так

все не так.

Цитата
wolfrum пишет:
не выполняет ожидаемой сортировки по полю my_field.

сортировка - это $arOrder. Например, сортировка по названию в порядке убывания.
А вам я так поняла, нужно именно по свойству отфильтровать, а не отсортировать.

Сейчас в фильтре вы вообще пишете - а выбери-ка мне все элементы из иблока номер 6.
А надо - а выбери-ка элементы из ИБ номер 6, да чтоб свойство было =1.
Уловили?

А $arSelect = это массив возвращаемых полей. т.е., например, если вам нужно получить только названия, то пишите $arSelect = array("NAME").
ответил 08 Апр, 14 от Texnik (1,860 баллов)
00 голосов
Спасибо огромное за оперативность. не могли бы ВЫ, хоть в общих чертах, написать, как должен выглядеть код? я уже что только не перепробовал - не работает, а сроки-то горят(
ответил 01 Авг, 14 от lynch (100 баллов)
00 голосов
все, разобрался. просто вставить в arFilter нужное значение и все.. спасибо еще раз, я ваш должник)
ответил 04 Дек, 14 от lynch (100 баллов)
00 голосов
Код

$arFilter= array("IBLOCK_ID" => "6", "PROPERTY_field" => "1");
      $arOrder = array("SORT"=>"ASC");
     $arSelect = array("ID", "NAME", "PROPERTY_field");
      $res = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect);
     while($ob = $res->GetNextElement())
{
  $arFields = $ob->GetFields();
  print_r($arFields);
}
 
ответил 28 Март, 15 от Texnik (1,860 баллов)

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

0 голосов
1 ответ
0 голосов
0 ответов
спросил 07 Май, 14 от IRISH (100 баллов)
0 голосов
2 ответов
спросил 04 Май, 14 от Snezhka (2,240 баллов)
0 голосов
3 ответов
0 голосов
1 ответ
спросил 07 Фев, 15 от GoThGirL (160 баллов)