Все статьи
307 материалов

Bitrix\Main\Web\HttpClient — штатный класс D7 для запросов к внешним API: интеграции с CRM, платёжными системами, службами доставки. Разберём базовое использование, обработку ошибок и настройку таймаутов, без которых внешний запрос может подвесить весь сайт. Базовый GET-запрос <?php use Bitrix\Main\Web\HttpClient; $httpClient = new HttpClient(); $response = $httpClient->get(‘https://api.example.com/status’); if ($httpClient->getStatus() === 200) { echo $response; } else { echo ‘Ошибка: ‘ . $httpClient->getStatus();…

Ядро 1С-Битрикс поставляется с десятками готовых компонентов, и часть из них годами остаётся незамеченной разработчиками, которые привыкли писать похожую логику с нуля. Разберём наиболее полезные штатные компоненты по категориям задач — как справочник для быстрого поиска подходящего готового решения. Работа с инфоблоками bitrix:catalog.section — список товаров раздела каталога. bitrix:catalog.element — детальная страница товара. bitrix:news.list — универсальный список элементов произвольного инфоблока,…

Виртуальный хостинг перестаёт справляться примерно на том этапе, когда каталог вырастает до десятков тысяч товаров, а посещаемость — до нескольких тысяч человек в сутки. Дальше начинается VPS: собственный сервер, где вы сами решаете, как всё настроено. Разберём, какие ресурсы реально нужны сайту на 1С-Битрикс, из чего состоит настройка сервера и в каком порядке её делать, чтобы не собирать конфигурацию заново….

Статические ресурсы сайта — изображения, CSS, JS — можно отдавать не с собственного сервера, а через сеть распределённых серверов CDN, физически ближе к посетителю. Разберём, как подключить CDN к сайту на 1С-Битрикс и на что обратить внимание при настройке. Что реально ускоряет CDN CDN снижает задержку загрузки статики за счёт физической близости сервера CDN к посетителю (меньше времени на прохождение…

«Проверка системы» — встроенный диагностический инструмент 1С-Битрикс. Он проверяет окружение сервера, настройки продукта и целостность системы, а затем выдаёт список из нескольких десятков пунктов с отметками об успехе или проблеме. Проблема в том, что часть предупреждений критична, а часть — нет, и понять это по формулировке трудно. Разберём, что означают основные пункты и на какие стоит реагировать в первую очередь….

Вывод полного дерева разделов каталога — меню категорий, фильтр в боковой панели, карта сайта — требует рекурсивного обхода структуры разделов инфоблока. Разберём, как правильно построить такое дерево через GetList, избегая типичной ловушки N+1 запросов. Наивный рекурсивный подход (неэффективный) <?php function getSectionsTreeNaive(int $iblockId, int $parentId = 0): array { $tree = []; $result = CIBlockSection::GetList( [‘SORT’ => ‘ASC’], [‘IBLOCK_ID’ => $iblockId,…

Приём онлайн-оплаты картой — базовая потребность любого интернет-магазина, и Т-Банк (бывший Тинькофф) — один из самых распространённых эквайеров на российском рынке. Разберём подключение платёжной системы Т-Банка к модулю продаж 1С-Битрикс и типичные ошибки настройки. Готовый модуль в Маркетплейсе Для большинства проектов не требуется писать интеграцию с нуля — готовый платёжный модуль Т-Банка доступен через Маркетплейс Битрикса и устанавливается как обычное…

Прямой SQL через глобальный объект $DB остаётся в проектах на Битриксе там, где ORM или старый объектный API оказываются избыточными или недостаточно быстрыми. Разберём, как безопасно работать с $DB->Query, и почему прямой SQL — это осознанный компромисс, а не путь по умолчанию. Базовый запрос <?php global $DB; $result = $DB->Query(‘SELECT ID, NAME FROM b_iblock_element WHERE IBLOCK_ID = 14 AND ACTIVE…

Для чтения одного свойства одного элемента инфоблока в API есть несколько путей — и не все они одинаково эффективны. Разберём CIBlockElement::GetProperty в сравнении с GetList, и когда использование каждого из них оправдано. CIBlockElement::GetProperty <?php $result = CIBlockElement::GetProperty( $iblockId, $elementId, [‘sort’ => ‘asc’], [‘CODE’ => ‘COLOR’] ); while ($property = $result->Fetch()) { echo $property[‘VALUE’]; } Этот метод специализирован именно на получении…

CIBlockElement::GetByID — самый частый способ получить один конкретный элемент инфоблока, когда его идентификатор уже известен: на странице детального просмотра товара, при обработке AJAX-запроса с ID в параметрах, при работе с элементом внутри обработчика события. Базовый вызов <?php $result = CIBlockElement::GetByID($elementId); if ($element = $result->GetNext()) { echo $element[‘NAME’]; echo $element[‘DETAIL_TEXT’]; } Метод возвращает объект результата даже для одного элемента — обращение…

Highload-блок — это отдельная таблица в базе данных, у которой есть настраиваемые поля и полноценный ORM-интерфейс. Внешне похоже на инфоблок, но устроено принципиально иначе: все данные лежат в одной таблице, а не размазаны по служебным таблицам свойств. Отсюда и назначение: highload-блоки создавались для больших объёмов однотипных записей, где инфоблоки начинают тормозить. Разберём, когда они нужны, как создать блок и работать…

«Не удаётся загрузить список обновлений» или обновление, зависшее на середине, — неприятная ситуация: сайт может остаться в промежуточном состоянии между версиями. Разберём типичные причины сбоя обновления 1С-Битрикс и как действовать, если процесс уже начался и застрял. Проверка доступа к серверам обновлений Модуль обновления обращается к внешним серверам разработчика за списком доступных патчей — если сервер или файрвол блокирует исходящие соединения…