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

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