1 Вы зря начали изобретать велосипед для вывод крошек - есть же встроенный компонент.
2 Естественно не работает - код раздела, это код раздела, а id это id. У вас новигация по коду, вы пытаетесь использовать id на странице товара. Простое добавление кода обязательно пооможет если он у вас есть в $secion.
Но видимо его нет. А откуда вы на странице товара берете $secion никто кроме вас не знает.
В крайнем случае, раз у вас есть id раздела в $arResult['IBLOCK_SECTION_ID'] можно в лоб получить этот раздел с помощью CIBlockSection::GetList по id и из этих данных взять CODE.
Что-то такое примерно:
$arSelect = Array(
			'ID',
			'CODE'
		);
	$arFilter = Array(
			'IBLOCK_ID'=> $arResult['IBLOCK_ID'],
			'ID' => $arResult['IBLOCK_SECTION_ID']
		);
	$db_res = CIBlockSection::GetList(
			Array(),
			$arFilter,
			true,
			$arSelect
		);
	if ($ar_result = $db_res->GetNext()) {
		$CODE = $ar_result['CODE'];
	}
В $CODE  будет ваш код раздела.