Ваша проблема с тем, что `DETAIL_PAGE_URL` равно `NULL`, может быть связана с несколькими моментами в настройках Битрикс и с тем, как вы работаете с корзиной. Вот несколько шагов, которые могут помочь вам решить эту проблему:
1. **Проверьте настройки инфоблока**:
Убедитесь, что у вас правильно настроен шаблон URL в настройках инфоблока. Проверьте, что вы используете правильный символьный код товара или свойства, которые должны заменяться в URL.
2. **Проверьте свойства товара**:
Убедитесь, что у каждого товара, добавленного в корзину, установлено соответствующее значение для поля "Ссылка на детальную страницу" (или аналогичного поля). Это свойство должно быть указано в настройках самого инфоблока, и у каждого товара оно должно быть заполнено.
3. **Получение URL через `getField`**:
Вместо того чтобы пытаться получить `DETAIL_PAGE_URL` напрямую, вы можете попытаться получить URL через метод `getField` для каждого элемента. Попробуйте следующий пример:
```php
foreach ($basketItemsOrderable as $item) {
$productId = $item->getProductId(); // получаем ID товара
$product = \Bitrix\Iblock\ElementTable::getList([
'filter' => ['ID' => $productId],
'select' => ['DETAIL_PAGE_URL']
])->fetch();
$detailPageUrl = $product['DETAIL_PAGE_URL'];
// Либо формирование URL с использованием остальных доступных свойств
}
```
4. **Кэширование**:
Иногда данные могут быть закэшированы. Убедитесь, что после изменения свойств инфоблока и товаров вы очистили кэш.
5. **Проверка на наличие предложений**:
Если у вас товары с торговыми предложениями, то нужно убедиться, что для каждого торгового предложения также указаны значения полей, от которых зависит URL.
Если все вышеперечисленные действия не помогли, попробуйте сделать отладку кода и посмотрите, какие данные вы получаете из базы данных для `DETAIL_PAGE_URL`. Это поможет сузить круг поиска проблемы.