А мы вообще предпочитаем с инфоблоками вручную работать - так можно и вывод информации красивенько сделать, да и обработать на лету поля любые.
Код для этого не то, чтобы сложный, но и не очень простой. Например, в данном случае detail.php так может выглядеть:
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$IBLOCK_TYPE = "portfolio";
$IBLOCK_NAME = "works";
$ID = $_REQUEST["ID"];
$ID = intval($ID);
global $USER, $APPLICATION;
CModule::IncludeModule("iblock");
if($rsElement = GetIBlockElementListEx($IBLOCK_TYPE, $IBLOCK_NAME, Array(), Array(), 1, Array('ID' => $ID))) :
if($obElement = $rsElement->GetNextElement()) :
$arElement = $obElement->GetFields();
$arProperty = $obElement->GetProperties();
echo '
'.$arElement["DETAIL_TEXT"].'
<br>';
?>
<div align="center">
<?
$Image = $arElement["DETAIL_PICTURE"];
echo ShowImage($Image, 800, 800, "class=\"thinborderfloat\" border='0'", "", true, "");
?>
</div>
<? endif;
endif;
?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>