Получение служб доставки и дополнительных услуг
Всё просто: сначала через Bitrix\Sale\Delivery\Services\Table::getList получаем все доставки. Затем, зная ID доставки, получаем дополнительно её дополнительные услуги.
$deliveries = Bitrix\Sale\Delivery\Services\Table::getList(
[
// Стандартные параметры getList
// Фильтры отборы итд
// Предположим нам нужно все
'select' => ['*']
]
)->fetchAll();
// Можно и while но доставок обычно не тысячи - ничего страшного
// что все сразу в памяти
foreach($deliveries as $delivery)
{
print_r($delivery); // Тут все поля доставки
// Получаем дополнительно доп. услуги этой доставки по её ID
// Опять таки избежать проблему N+1 можно отдельным запросом, если доставок реально много
$extraServicesManager = new \Bitrix\Sale\Delivery\ExtraServices\Manager($delivery['ID']);
$services = $extraServicesManager->getItems();
if (is_array($services)) {
foreach ($services as $service) {
echo $service->getId(); // ID доп. услуги
echo $service->getCode(); // Код доп. услуги
echo $service->getName(); // Название
echo $service->getDescription(); // Описание
$params = $service->getParams(); // Параметры (цена, условия применения и т.д.)
echo $params['PRICE']; // Только цена, для единичной
}
}
}
Объяснение кода
Код выполняет две основные задачи: получение служб доставки и извлечение их дополнительных услуг.
Получение служб доставки:
- Используется класс
Bitrix\Sale\Delivery\Services\Table::getList()для получения всех служб доставки - Параметр
'select' => ['*']указывает на выборку всех полей - Метод
fetchAll()возвращает массив со всеми найденными службами
Обработка дополнительных услуг:
- Для каждой службы доставки создаётся экземпляр
ExtraServices\Managerс передачей ID службы - Метод
getItems()возвращает массив объектов дополнительных услуг - Каждая услуга предоставляет методы для получения ID, кода, названия и описания
- Через
getParams()можно получить дополнительные параметры, включая цену
Результат выполнения — полная информация о службах доставки и всех связанных с ними дополнительных услугах, включая их стоимость и условия применения.