О разделе «API Битрикс»
API Битрикс в 1С-Битрикс: статьи, инструкции и примеры кода из базы знаний Bitrix-Help.
CIBlockElement, CIBlockSection, CUser и другие классы
51 материалов

CIBlockSection::GetByID и построение цепочки родительских разделов — базовая задача при выводе хлебных крошек, вложенных каталогов и любой структуры, где разделы образуют иерархию. Разберём метод и типичные способы получить полную цепочку от текущего раздела до корня. Получение одного раздела по ID <?php $section = CIBlockSection::GetByID($sectionId)->GetNext(); if ($section) { echo $section[‘NAME’]; echo $section[‘IBLOCK_SECTION_ID’]; // ID родительского раздела, если есть } Как и…

Отправка писем в 1С-Битрикс идёт через систему почтовых событий: старый класс CEvent и его современный аналог \Bitrix\Main\Mail\Event. Разберём оба варианта, чем они отличаются и как правильно передать переменные в шаблон письма. Отправка через CEvent (D6) <?php CEvent::Send(‘NEW_ORDER’, ‘s1’, [ ‘ORDER_ID’ => $orderId, ‘ORDER_SUM’ => $orderSum, ‘EMAIL’ => $userEmail, ]); Первый параметр — символьный код почтового события, заранее настроенного в разделе…

CFile::SaveFile — низкоуровневый способ сохранить файл в системе управления файлами Битрикса вручную, минуя стандартную форму загрузки. Разберём, когда он нужен и какие подводные камни есть у прямого сохранения файла из кода. Базовый вызов <?php $fileArray = [ ‘name’ => ‘report.pdf’, ‘type’ => ‘application/pdf’, ‘tmp_name’ => ‘/tmp/generated_report_123.pdf’, ‘size’ => filesize(‘/tmp/generated_report_123.pdf’), ]; $fileId = CFile::SaveFile($fileArray, ‘reports’); if ($fileId) { echo ‘Файл сохранён,…

CIBlockElement::GetList — самый частый источник тормозов на страницах с инфоблоками. Метод гибкий и прощает почти любой набор параметров, поэтому на нём легко написать код, который работает на тестовых 50 товарах и падает по таймауту на боевых 50 000. Разберём, какие параметры выборки решают проблему производительности. Базовый вызов и его цена <?php $result = CIBlockElement::GetList( [‘SORT’ => ‘ASC’], [‘IBLOCK_ID’ => 14,…

SetElementSection управляет привязкой элемента к разделам — добавляет, заменяет или удаляет связи, включая работу с множественной привязкой. Разберём, как метод соотносится с обычным обновлением элемента и когда без него не обойтись. Отличие от простого Update Основной раздел элемента можно сменить через обычный CIBlockElement::Update(), указав новое значение IBLOCK_SECTION_ID. Но если инфоблок использует множественную привязку и нужно управлять именно набором дополнительных разделов…

GetElementGroups возвращает СЃРїРёСЃРѕРє всех разделов, Рє которым привязан элемент инфоблока, включая случаи множественной РїСЂРёРІСЏР·РєРё — РєРѕРіРґР° РѕРґРёРЅ товар относится сразу Рє нескольким категориям. Разберём метод Рё типичный сценарий его использования. Базовый вызов <?php $sections = CIBlockElement::GetElementGroups($elementId, true); foreach ($sections as $section) { echo $section[‘ID’] . ‘ — ‘ . $section[‘NAME’] . PHP_EOL; } Второй параметр, true, указывает получать только активные…

CUser::SendPassword запускает штатный сценарий восстановления пароля: генерирует ссылку с ограниченным сроком действия и отправляет её на почту пользователя. Разберём, как вызвать его вручную, и какие настройки влияют на то, что получит пользователь. Базовый вызов <?php $user = new CUser; $result = $user->SendPassword([ ‘LOGIN’ => ‘ivan_petrov’, ‘EMAIL’ => », ]); if ($result) { echo ‘Письмо отправлено’; } else { echo ‘Ошибка:…

Группы пользователей — РѕСЃРЅРѕРІР° системы прав доступа РІ 1РЎ-Битрикс: РѕС‚ РЅРёС… зависит видимость инфоблоков, цена РІ каталоге, доступные разделы административной части. CUser::GetUserGroup Рё связанные методы дают программный доступ Рє этой структуре. Получение СЃРїРёСЃРєР° РіСЂСѓРїРї пользователя <?php $groups = CUser::GetUserGroup($userId); print_r($groups); // [1, 5, 8] Метод возвращает простой массив идентификаторов РіСЂСѓРїРї, РІ которые РІС…РѕРґРёС‚ пользователь. Для текущего авторизованного посетителя есть более…

IsAuthorized, GetID и IsAdmin — три метода класса CUser, которые чаще всего вызываются вместе для одной цели: понять, кто перед нами, и что ему разрешено. Разберём каждый и типичные ошибки в порядке их вызова. IsAuthorized: авторизован ли посетитель <?php global $USER; if ($USER->IsAuthorized()) { // посетитель вошёл под своим аккаунтом } else { // гость } Это первая проверка почти…

CUser::GetByID — самый частый способ получить данные конкретного пользователя, когда идентификатор уже известен: на странице профиля, в обработчике события, при выводе автора материала. Разберём метод и отдельно — работу с текущим авторизованным пользователем, которую с ним регулярно путают. Получение конкретного пользователя <?php $result = CUser::GetByID($userId); if ($user = $result->Fetch()) { echo $user[‘NAME’] . ‘ ‘ . $user[‘LAST_NAME’]; echo $user[‘EMAIL’]; }…
API Битрикс в 1С-Битрикс: статьи, инструкции и примеры кода из базы знаний Bitrix-Help.