Пример кода для подключения модуля sale
:
\Bitrix\Main\Loader::includeModule('sale');
// Или вариант для старого ядра:
\CModule::IncludeModule("sale");
Оба метода вернут true
если удалось подключить модуль или false
если модуль не удалось подключить (скорее всего он не установлен).
Зачем это нужно?
Это нужно чтобы можно было работать с классами модуля так как по-умолчанию подключены (активны) только самые необходимые модули ядра, например модуль main
.
Так же лучше проверять подключится модуль или нет, так как возможно, что нужный модуль не установлен или не предусмотрен в текущей редакции сайта. Например модуль sale
есть только в интернет магазинах. Поэтому лучше писать таким образом:
if(\Bitrix\Main\Loader::includeModule('sale')) {
// что нужно сделать
}
Чтобы выбрать элемент инфоблока нужно вызвать \CIBlockElement::GetList()
, но класс \CIBlockElement
находится в модуле iblock
, поэтому если перед вызовом метода \CIBlockElement::GetList()
не подключить модуль iblock
, получим ошибку, что класс \CIBlockElement
не найден.
Частые ошибки
Class 'CIBlockElement' not found
Не подключен модуль iblock
.
Class 'CIBlockSection' not found
Не подключен модуль iblock
.
Class 'Bitrix\Sale\Order' not found
Не подключен модуль sale
.
Class 'CCatalogProduct' not found
Не подключен модуль catalog
.
Class 'CCrmDeal' not found
Не подключен модуль crm
.
Class '\Bitrix\Crm\DealTable' not found
Не подключен модуль crm
.
Class 'CCrmCompany' not found
Не подключен модуль crm
.
Class 'CCrmContact' not found
Не подключен модуль crm
.
Class 'CFormResult' not found
Не подключен модуль form
.