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

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
Наверх