Документация для разработчиков
Темная тема

calculateDelivery

\Bitrix\Sale\Shipment::calculateDelivery();

Метод рассчитывает стоимость доставки для отгрузки и возвращает результат расчета. Метод не записывает рассчитанную стоимость в поля отгрузки. Нестатический метод.

Без параметров.

Как работает

При вызове для системной отгрузки calculateDelivery() выбрасывает исключение \Bitrix\Main\NotSupportedException.

Если служба доставки не выбрана и getDeliveryId() возвращает 0, метод возвращает новый объект \Bitrix\Sale\Delivery\CalculationResult без вызова службы доставки.

Если служба доставки выбрана, метод передает текущую отгрузку в \Bitrix\Sale\Delivery\Services\Manager::calculateDeliveryPrice($this) и возвращает результат расчета.

Возвращаемое значение

Возвращает объект \Bitrix\Sale\Delivery\CalculationResult.

Стоимость доставки с учетом дополнительных услуг можно получить через $result->getPrice(). Метод getPrice() складывает стоимость доставки и стоимость дополнительных услуг.

Пример

/** @var \Bitrix\Sale\Shipment $shipment */

try
{
    $result = $shipment->calculateDelivery();
}
catch (\Bitrix\Main\NotSupportedException $exception)
{
    throw new \RuntimeException('Нельзя рассчитать доставку для системной отгрузки');
}

if (!$result->isSuccess())
{
    throw new \RuntimeException(implode('; ', $result->getErrorMessages()));
}

if ($shipment->getDeliveryId() === 0)
{
    throw new \RuntimeException('Служба доставки не выбрана');
}

$deliveryPrice = $result->getPrice();


© «Битрикс», 2001-2026, «1С-Битрикс», 2026