Как из объекта заказа (Bitrix\Sale\Order) получить выбранную для него систему доставки? Хоть в каком-нибудь виде.
Во всех мануалах что гуглятся авторы стыдливо обходят этот вопрос. Только здесь
https://verstaem.com/lessons/making-sale-order-aja... нашел:
$shipment = false;
/** @var \Bitrix\Sale\Shipment $shipmentItem */
foreach ($component->order->getShipmentCollection() as $shipmentItem) {
if (!$shipmentItem->isSystem()) {
$shipment = $shipmentItem;
break;
}
}
Но это похоже не так, потому что у меня isSystem == true всегда только для системной доставки "без доставки" , вне зависимости от того, какая из служб доставки выбрана. Т.е. этот код всегда возвращает отгрузку у которой система доставки Bitrix\Sale\Delivery\Services\EmptyDeliveryService
При этом, что интересно, некоторые службы доставки вообще не находятся в ShipmentCollection, причем даже когда они выбраны. Например службы доставки модуля boxberry.
На случай, если у меня проблема молотка: задача в том, чтобы определить что выбрана служба доставки на основе моего модуля. Для этого я хочу найти выбранную службу (или отгрузку, а потом получить из нее службу) и проверить имя класса службы.