Пример кода для подключения модуля 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.