Задать вопрос
@AndreyKuz
Интеграция сайта с 1с

Почему нет свойства в $arResult?

Не получается добавить свойство html/текст в $arResult в result_modifier
такой код
<?if (CModule::IncludeModule("iblock")) {
    $it = CIBlockElement::GetList(
        [],
        ['IBLOCK_ID' => 16, 'ACTIVE' => 'Y'],
        false,
        false,
        ['ID', 'NAME', 'PROPERTY_JOB_TITLE_VALUE']
    );

    while($arLink = $it->GetNext()) {
        $res[] = $arLink['NAME'];
        $res[] = $arLink['PROPERTY_JOB_TITLE_VALUE'];
        $res[] = $arLink['ID'];
    }

}
$arResult['PROP'] = $res;
?>

поля $res[] = $arLink['NAME']; и $res[] = $arLink['ID'];
заходят нормально а это свойство инфоблока никак $res[] = $arLink['PROPERTY_JOB_TITLE_VALUE'];
или $res[] = $arLink['PROPERTY_JOB_TITLE'];
Подскажите где ошибка?
  • Вопрос задан
  • 64 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
потому что в аргументах CIBlockElement::GetList() надо указывать не 'PROPERTY_JOB_TITLE_VALUE' , а 'PROPERTY_JOB_TITLE'. А вот в результате будет 'PROPERTY_JOB_TITLE_VALUE' и ещё пачка мусора
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Возможно, надо прописать так:
$arLink['PROPERTY_JOB_TITLE_VALUE']['VALUE']['TEXT']


Здесь примеры подробней
Ответ написан
Комментировать
mbezvodinskikh
@mbezvodinskikh
Рекомендую переходить на d7 (Но перед этим прописать API код для инфоблока):
\Bitrix\Main\Loader::includeModule('iblock');
$class = \Bitrix\Iblock\Iblock::wakeUp(16)->getEntityDataClass();
$rows = 
    $class::query()
    ->setSelect(['ID', 'NAME', 'JOB_TITLE.VALUE'])
    ->where('ACTIVE', true)
    ->fetchCollection()
;

/**
  * @var \Bitrix\Main\ORM\Objectify\Collection $rows
  * @var \Bitrix\Main\ORM\Objectify\EntityObject $row
 */
foreach ($rows as $row) {
    $data = $row->collectValues(
            \Bitrix\Main\ORM\Objectify\Values::ALL, 
            \Bitrix\Main\ORM\Fields\FieldTypeMask::ALL,
        true
    );

    /**
     * Не очень понятно для чего собирать все значения подряд
     */
    $res[] = $data['ID'];
    $res[] = $data['NAME'];
    $res[] = $data['JOB_TITLE']['VALUE'];
    
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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