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

setupDefaultRestrictions

public static function \Bitrix\Sale\Services\Base\RestrictionManager::setupDefaultRestrictions(
	RestrictableService $service
);

Метод применяет для сервиса все дефолтные ограничения, которые должны быть применены при его добавлении. Т.е. если мы добавляем платёжную систему, которая работает только в рублях, то при вызове метода setupDefaultRestrictions к этой платежной системе добавится ограничение по валюте "Рубль". Метод статический.


Примечание: На текущий момент данный метод работает только с одним видом сервисов – с платёжными системами.

Параметры

ПараметрОписаниеВерсия
$serviceСервис, который нужно ограничить (например, платёжная система). Должен реализовывать интерфейс \Bitrix\Sale\Services\Base\RestrictableService.

Менеджер ограничений RestrictionManager и сервис $service, который передаётся в метод этого менеджера, должны бать одного типа (в нашем случае в менеджер ограничений платёжных систем передаётся сервис платёжной системы).

Метод setupDefaultRestrictions вызывается для платёжной системы после добавления её в базу данных. Метод вызывается во всех местах, где происходит добавление платёжной системы (в публичной и административной частях сайта).

Примеры

public static function setupDefaultRestrictions(RestrictableService $service): Result
{
	$result = new Result();
	// Далее идёт получение коллекций ограничений, которые изначально прописаны для сервиса. Коллекция ограничений – это класс Bitrix\Sale\Services\Base\RestrictionInfoCollection
	$startupRestrictions = $service->getStartupRestrictions();
	// Далее сторонние разработчики могут подписаться на событие применения стандартных ограничений, отследить по SERVICE_ID что это за сервис, а также убрать/добавить в коллекцию ограничений STARTUP_RESTRICTIONS_COLLECTION те ограничения, которые нужно в итоге применить к сервису. На текущий момент это применимо только для платёжных систем
	(new Event(
		moduleId: 'sale',
		type: static::ON_STARTUP_SERVICE_RESTRICTIONS_EVENT_NAME,
		[
			'STARTUP_RESTRICTIONS_COLLECTION' => $startupRestrictions,
			'SERVICE_ID' => $service->getServiceId(),
		]
	))->send();
	self::clearAlreadyUsedByServiceRestrictions($service->getserviceId(), $startupRestrictions);
	/** @var RestrictionInfo $restrictionInfo */
	// Ниже – итоговый список ограничений. Каждое ограничение из коллекции применяется к платёжной системе
	foreach ($startupRestrictions as $restrictionInfo)
	{
		$applyResult = static::applyRestriction($service->getServiceId(), $restrictionInfo);
		$result->addErrors($applyResult->getErrors());
	}
	// Ограничения от разработчиков должны приходить в виде класса Bitrix\Sale\Services\Base\RestrictionInfo. В этом же виде они хранятся в коллекции. 
	return $result;
}


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