getRestrictedIds
array public static \Bitrix\Sale\Delivery\Restrictions\Manager::getRestrictedIds( ?\Bitrix\Sale\Shipment $shipment = null, $restrictionMode );
Метод возвращает идентификаторы активных служб доставки с ограничениями, которые прошли проверку для отгрузки. Для административного режима метод также возвращает службы с мягкими ограничениями. Статический метод.
Параметры
| Параметр | Описание |
|---|---|
$shipment |
Объект отгрузки, для которого нужно проверить ограничения. Значение по умолчанию — null |
$restrictionMode |
Режим проверки:
|
Возвращаемое значение
Метод возвращает ассоциативный массив. Ключ массива — идентификатор службы доставки, значение — уровень ограничения:
Manager::SEVERITY_NONE— ограничения пройдены,Manager::SEVERITY_SOFT— служба доступна в административной части с мягким ограничением.
Метод не включает в результат службы со строгим ограничением. В режиме Manager::MODE_CLIENT метод также исключает службы с мягким ограничением.
Исключения
Метод может передать исключения \Bitrix\Main\ArgumentException и \Bitrix\Main\SystemException при получении и проверке ограничений.
Особенности
Метод обрабатывает только активные службы, для которых сохранены ограничения. Данные ограничений и результаты подготовки классов кешируются до конца текущего запроса.
Если передать null вместо объекта отгрузки, метод не вызывает checkByEntity для ограничений без групповой фильтрации.
Пример
<?php
use Bitrix\Main\Loader;
use Bitrix\Sale\Delivery\Restrictions\Manager;
use Bitrix\Sale\Order;
if (!Loader::includeModule('sale'))
{
throw new RuntimeException('Не удалось подключить модуль sale');
}
// Идентификатор существующего заказа с отгрузкой
$orderId = 123;
try
{
$order = Order::load($orderId);
if ($order === null)
{
throw new RuntimeException('Заказ не найден');
}
$shipment = null;
foreach ($order->getShipmentCollection()->getNotSystemItems() as $orderShipment)
{
$shipment = $orderShipment;
break;
}
if ($shipment === null)
{
throw new RuntimeException('В заказе нет отгрузки');
}
$services = Manager::getRestrictedIds($shipment, Manager::MODE_CLIENT);
if ($services === [])
{
echo 'Подходящие службы с ограничениями не найдены' . PHP_EOL;
return;
}
foreach ($services as $serviceId => $severity)
{
echo 'Служба ' . $serviceId . ': уровень ограничения ' . $severity . PHP_EOL;
}
}
catch (\Throwable $exception)
{
echo 'Ошибка: ' . $exception->getMessage() . PHP_EOL;
}