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

getRestrictedIds

array public static
\Bitrix\Sale\Delivery\Restrictions\Manager::getRestrictedIds(
	?\Bitrix\Sale\Shipment $shipment = null,
	$restrictionMode
);

Метод возвращает идентификаторы активных служб доставки с ограничениями, которые прошли проверку для отгрузки. Для административного режима метод также возвращает службы с мягкими ограничениями. Статический метод.

Параметры

Параметр Описание
$shipment Объект отгрузки, для которого нужно проверить ограничения. Значение по умолчанию — null
$restrictionMode Режим проверки:
  • Manager::MODE_CLIENT — для публичной части
  • Manager::MODE_MANAGER — для административной части

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

Метод возвращает ассоциативный массив. Ключ массива — идентификатор службы доставки, значение — уровень ограничения:

  • 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;
}


Была ли эта страница полезна?

Пользовательские комментарии

Помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2026, «1С-Битрикс», 2026
Наверх