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

Не выводятся свойства элементов

00 голосов
7
Подскажите изза-чего может выводится пустой массив свойств при выборке?

Пробовал так:
Код
<?

$yvalue = 20;
$res = CIBlockElement::GetByID($yvalue);
if($obRes = $res->GetNextElement())
{
  $ar_res = $obRes->GetProperty("GENDER");
  print_r($ar_res);
}
?>


И так:

Код
$yvalue = 20;
$arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM", $yvalue); 
$arFilter = Array("IBLOCK_ID"=>IntVal($yvalue), "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>10), $arSelect);
while($ob = $res->GetNextElement()){
$arFields = $ob->GetFields();
$arFields2 = $ob->GetProperty("GENDER");
echo $arFields['ID'].$arFields2;
$arFields3 = $ob->GetProperties();
echo $arFields3['GENDER'];


В обоих случаях выводит Array()...
Может где-то в настройках что включено?



}
спросил 19 Июнь, 13 от lCurtl (180 баллов)

7 Ответы

00 голосов
Код
$arFields2 = $ob->GetProperty("GENDER");
print_r($arFields2["VALUE"]); 
ответил 19 Июнь, 13 от NitroGeN (2,840 баллов)
00 голосов
Во втором случае вы пытаетесь вывести массив через echo, естественно он пишет array()
и тут явно лишнее $yvalue
Код
$arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM"[B], $yvalue[/B]);

В первом случае у вас $yvalue - это ID - элемента, во втором - это ID инфоблока. Явно ошибка
ответил 06 Июль, 13 от NitroGeN (2,840 баллов)
00 голосов
Спасибо, поправил, но массив все равно пуст. :(

Вот полный код в моем файле:

Код
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
if(CModule::IncludeModule("iblock")){

$yvalue = 20;


//$arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM","PROPERTY_GENDER");
$arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM"); 
$arFilter = Array("IBLOCK_ID"=>IntVal($yvalue), "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>10), $arSelect);
while($ob = $res->GetNextElement()){
$arFields2 = $ob->GetProperty("MODEL");
print_r($arFields2); 
$arFields3 = $ob->GetProperties();
print_r($arFields3["MODEL"]);
echo '<br>';



}

$res2 = CIBlockElement::GetProperty($yvalue, "7128", "sort", "asc", array("CODE" => "MODEL"));
    if ($ob = $res->GetNext())
    {
        $VALUE = $ob['VALUE'];
print_r($VALUE);
    } 



}
?>
ответил 10 Окт, 13 от lCurtl (180 баллов)
00 голосов
А как вот здесь показано пробовали?
http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockproperty/getlist.php
ответил 10 Янв, 14 от EDKA (980 баллов)
00 голосов
Дело в том что мне нужно получить значение одного свойства для каждого элемента в цикле.
CIBlockProperty::GetList возвращает просто список свойств инфоблока. Он вполне нормально отрабатывает -возвращает все свойства. А вот для элементов не получается вытянуть свойство(а)
Как только не пробовал уже выводить выдает пустой массив или просто пустое поле(при указании ["VALUE"])
GetFields() также хорошо выдает все поля.А вот со свойствами беда..
Смотрел разные примеры, не пойму в чем дело вообще.
ответил 27 Апр, 14 от lCurtl (180 баллов)
00 голосов
В случаи если у вас свойство GENDER типа строка - а не список.
Код
<?
$arSelect = Array("ID", "NAME", "PROPERTY_GENDER");
$arFilter = Array("IBLOCK_ID"=>IntVal($yvalue), "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
while($ob = $res->GetNextElement())
{
  $arFields = $ob->GetFields();
echo $arFields["ID"].' - '.$arFields["NAME"].' - '.$arFields["PROPERTY_GENDER_VALUE"].'<br/>';

}
?>
ответил 23 Авг, 14 от Grimmi (2,560 баллов)
00 голосов
Цитата
Николай Санников пишет:
В случаи если у вас свойство GENDER типа строка - а не список.

Код
<?

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

$arFilter = Array("IBLOCK_ID"=>IntVal($yvalue), "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");

$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);

while($ob = $res->GetNextElement())

{

&nbsp;&nbsp;$arFields = $ob->GetFields();

echo $arFields["ID"].' - '.$arFields["NAME"].' - '.$arFields["PROPERTY_GENDER_VALUE"].'<br/>';



}

?>


Получилось!!! Спасибо, Николай, не думал что битрикс еще разбирает строчку PROPERTY_GENDER_VALUE по частям :idea:

Теперь осталось доделать экспорт в я.маркет :D одно за другим..
ответил 28 Дек, 14 от lCurtl (180 баллов)

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

0 голосов
4 ответов
спросил 11 Окт, 13 от UGeen (140 баллов)
0 голосов
6 ответов
спросил 27 Сен, 13 от Homer (220 баллов)
0 голосов
1 ответ
0 голосов
1 ответ
спросил 19 Март, 13 от KacTop (140 баллов)