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

Работа через реестр

Этот способ помогает не ошибиться в названии нужного метода при работе с сущностями интернет-магазина в редакции, объединяющей интернет-магазин и CRM (например, «1С-Битрикс24: Интернет-магазин+CRM»).


Примечание: если в таких редакциях использовать классы обычного интернет-магазина, то могут возникнуть проблемы с работой функционала, специфичного для CRM (например, с работой роботов).

\Bitrix\Main\Loader::includeModule(
	'sale'
);
$registry = \Bitrix\Sale\Registry::getInstance(
	\Bitrix\Sale\Registry::REGISTRY_TYPE_ORDER
);
$orderClassName = $registry->getOrderClassName();
$order = $orderClassName::load(...);

Суть описанного способа:

  • Загрузка модуля sale и получение объекта реестра.

    При загрузке объекта выполняется инициализация карты, которая описывает, какие классы отвечают за указанную сущность интернет-магазина (CRM в эту карту загружает свои классы, поэтому карта становится актуальной для продукта, содержащего CRM).

  • Теперь нужно не явно работать с названием класса, а запрашивать его из реестра с помощью метода типа getOrderClassName. Он вернет правильное название класса.
  • В завершении вместо явного указания класса используется переменная $orderClassName, которая содержит правильное название класса, и продолжается обычная работа с нужными методами заказа, например, load($id).

Для остальных сущностей интернет-магазина методы по получению правильного класса аналогичны (например, чтобы работать с оплатой, нужно вместо getOrderClassName() вызывать getPaymentClassName() ).





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