Надо обработчик писать в init.php
Так навскидку накидал, может есть лучше способ, а то в моем примере на каждый элемент ИБ приходится запрос делать (это как минимум время переиндексации увеличивает)
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('search', 'BeforeIndex', array('MySearch', 'BeforeIndex'));
class MySearch {
public static function BeforeIndex($arFields) {
if(intval($arFields['PARAM2']) > 0 && intval($arFields['ITEM_ID']) > 0 && isset($arFields['BODY'])) {
\Bitrix\Main\Loader::includeModule('iblock');
$dbRes = CIBlockElement::GetList(array(), array('IBLOCK_ID' => $arFields['PARAM2'], 'ID' => $arFields['ITEM_ID']), false, false, array('PROPERTY_FILE'));
while($arRes = $dbRes->Fetch()) {
$arFile = CFile::GetFileArray($arRes['PROPERTY_FILE_VALUE']);
$arFields['BODY'] .= PHP_EOL.$arFile['ORIGINAL_NAME'];
}
return $arFields;
}
}
}
В проверке
intval($arFields['PARAM2']) > 0
можно вместо > 0 указать == ID инфоблока, если для конкретного ИБ надо
Вместо
array('PROPERTY_FILE')
соответственно
array('PROPERTY_свое ID свойства')