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

Доп. Свойства инфоблока

00 голосов
4
Мучаюсь уже 4 час. Перекопал весь поиск и весь мануал. Не подскажите, в чем проблема?
Код
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Каталог");
 
IncludeTemplateLangFile(__FILE__);
if (CModule::IncludeModule("iblock"))
/*
$arrPROPERTY_CODE = Array(
      "PROIZV",
      "KALL",
      "ASS",
      "KART",
      );
$arrPROPERTY_CODE = (is_array($arrPROPERTY_CODE)) ? $arrPROPERTY_CODE : array();
*/
{
 $arSelect = array(
               "ID",
               "NAME", 
               "PROPERTY_*"
            ); 
$arFilter = Array("IBLOCK_ID"=>"37", "ACTIVE"=>"Y", "PROPERTY_8"=>$pr);
$res = CIBlockElement::GetList(Array("id"=>"ASC"), $arFilter, false, false, $arrSelect);
while($ar_fields = $res->GetNext())
{
$arProp = $ar_fields->GetProperties();

echo $ar_fields['NAME'];
echo "<br>";
echo $arProp["KART"]["VALUE"];
echo "<br>";
/* echo '<pre>';
// print_r ($ar_fields);
// echo '</pre>';*/
}

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


на это действие выдаётся ошибка

Fatal error: Call to a member function on a non-object in /usr/home/itc/site/www.erimex-mebel.spb.ru/catalog/pp.php on line 26
спросил 17 Янв, 14 от Kania (5,180 баллов)

4 Ответы

00 голосов
$res->GetNext()

замените на

$res->GetNextElement()
ответил 06 Май, 14 от krivedko (500 баллов)
00 голосов
Если использовать $res->GetNextElement(), то (наверно) придётся использовать ещё и GetFields(), в добавок к GetProperties()
ответил 01 Сен, 14 от sickmind (4,660 баллов)
00 голосов
Andrey Miroshnichenko и Александр Черкасов правы.
И обратите внимание на параметр $arrSelect в CIBlockElement::GetList(), у Вас этот массив описан как $arSelect - это ошибку не вызовет, но будет выбирать не то, что Вы указали.

В результате получим:
Код
$res = CIBlockElement::GetList(Array("id"=>"asc"), $arFilter, false, false, $arSelect); 
while($ar_fields = $res->GetNextElement()) 
{ 
$arItem = $ar_fields->GetFields();
$arProp = $ar_fields->GetProperties(); 
echo $arItem['NAME']; 
echo "<br />"; 
echo $arProp["KART"]["VALUE"]; 
echo "<br />"; 
}
ответил 07 Янв, 15 от Delp (7,220 баллов)
00 голосов
Спасибо, сделал всё как вы сказали. Ошибки больше нет. Но и значение свойства не выдаёт. Почему так? Ещё заметил, что не в одном из масивов, нету полей "PROPERTY"
ответил 25 Апр, 15 от Kania (5,180 баллов)

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