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

Как правильно добавить свойство HTML/текст в массив $arResult в функции result_modifier? У меня есть следующий код: 

```php
<?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'];) не добавляется вовсе. Можете подсказать, в чем может быть ошибка?
  • 18 октября 2024 г. 18:42
Ответы на вопрос 2
Проблема, с которой вы сталкиваетесь, связана с тем, как вы обращаетесь к свойствам инфоблока в методе `GetList`. Правильным способом извлечения свойств инфоблока будет использование их имени без суффиксов 'VALUE', так как это может вызывать проблемы.

Попробуйте изменить ваши `GetList` параметры и следующее обращение к собственным свойствам. Кроме того, чтобы получить доступ к свойствам, вам нужно убедиться, что вы правильно указали массив полей и свойств.

Вот исправленный вариант кода:

```php
<?if (CModule::IncludeModule("iblock")) {
    $it = CIBlockElement::GetList(
        [],
        ['IBLOCK_ID' => 16, 'ACTIVE' => 'Y'],
        false,
        false,
        ['ID', 'NAME', 'PROPERTY_JOB_TITLE'] // Указываем только PROPERTY_JOB_TITLE, без _VALUE
    );

    while($arLink = $it->GetNext()) {
        $res[] = $arLink['NAME'];
        $res[] = $arLink['PROPERTY_JOB_TITLE']; // Здесь добавляем только PROPERTY_JOB_TITLE, как есть
        $res[] = $arLink['ID'];
    }
}
$arResult['PROP'] = $res;

?>
```

Пояснения:
1. Когда вы запрашиваете свойство, используйте просто имя свойства (например, `PROPERTY_JOB_TITLE`). В результате этого свойство будет загружено, и вы сможете получить доступ к его значению, если оно задано.
2. Если у вас в инфоблоке настроено несколько типов свойства для одного и того же поля (например, текстовое поле, список и т.д.), возможно, вам нужно использовать более конкретное обращение к значениям. Но для традиционного текстового свойства `PROPERTY_JOB_TITLE` должно корректно работать.
3. Поля для множественных свойств обычно используют массивы, чтобы извлечь их значения, но это не относится к текстовым полям.

Проверьте, что в вашем инфоблоке действительно задано свойство с именем `JOB_TITLE`. Если оно настроено неверно или отсутствует, код также не сможет его извлечь.
Возможно, надо прописать так: 
$arLink['PROPERTY_JOB_TITLE_VALUE']['VALUE']['TEXT']


Здесь примеры подробней
Похожие вопросы