Если вы пишете свой в компонент (что вряд ли), то делайте так:
$res = CIBlockElement::GetList(
array(),
array(
'IBLOCK_ID' = 1, // Идентификатор ИБ статей
),
false,
false,
array(
'PROPERTY_FILES.PROPERTY_DOC', // Коды свойств с файлами
'PROPERTY_FILES.PROPERTY_PDF'
)
);
while($arFields = $res->GetNext()){
// Смотрите, что тут находится в $arFields, и доставайте файлы по идентификатору, с помощью метода CFile::GetByID либо CFile::GetPath
}
Ссылки на документацию:
https://dev.1c-bitrix.ru/api_help/iblock/classes/c...
https://dev.1c-bitrix.ru/api_help/main/reference/c...
https://dev.1c-bitrix.ru/api_help/main/reference/c...
Если вы хотите отобразить в шаблоне стандартного компонента, (news.detail, судя по всему), тогда используйте файл result_modifier.php шаблона компонента, доставайте ссылки на файлы там и записывайте в $arResult (
дока). Примерно так:
result_modifier.php:
if(!empty($arResult['PROPERTIES']['FILES']['VALUE'])){
$res = CIBlockElement::GetList(
array(),
array(
'IBLOCK_ID' => $arResult['PROPERTIES']['FILES']['IBLOCK_ID'],
'ID' => $arResult['PROPERTIES']['FILES']['VALUE'],
'ACTIVE' => 'Y'
),
false,
false,
array(
'PROPERTY_DOC', // Коды свойств с файлами
'PROPERTY_PDF'
)
);
$files = array();
while($arFields = $res->GetNext()){
foreach(array('PDF', 'DOC') as $code){
$fullCode = "PROPERTY_$code_VALUE";
if($filePath = CFile::GetPath($arFields[$fullCode])){
$files[] = $filePath;
}
}
}
$arResult['PROPERTIES']['FILES']['LINKS'] = $files;
}
Работоспособность кода не гарантирую, писал по памяти, но идея, я думаю, ясна.