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

Ошибка 503 Service Unavailable означает, что сервер временно не может обработать запрос, — в отличие от 500-й ошибки, это не всегда указывает на баг в коде. Разберём основные причины 503 на сайтах 1С-Битрикс и порядок диагностики от самых частых причин к менее очевидным. Перегрузка PHP-FPM или недостаток воркеров Самая частая причина 503 на нагруженном сайте — исчерпание пула доступных PHP-воркеров:…

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

Собственная ORM-модель на D7 описывается классом-наследником Bitrix\Main\Entity\DataManager с явным перечислением полей таблицы и их типов. Разберём базовые типы полей, связи между сущностями и валидацию — то, ради чего вообще стоит писать ORM-модель, а не работать с таблицей через прямой SQL. Минимальная модель <?php namespace Vendor\Module; use Bitrix\Main\Entity\DataManager; use Bitrix\Main\Entity\IntegerField; use Bitrix\Main\Entity\StringField; use Bitrix\Main\Entity\DatetimeField; class TaskTable extends DataManager { public static…

Создание собственного модуля — способ оформить бизнес-логику проекта так, чтобы она не зависела от конкретного шаблона сайта и переживала его смену. Разберём минимальную структуру модуля, обязательные файлы установки и типичные ошибки при первом самостоятельном модуле. Минимальная структура каталога /local/modules/vendor.module/ ├── include.php ├── install/ │ ├── index.php │ └── db/ │ └── install.php └── lib/ └── TaskTable.php Имя модуля традиционно состоит…

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

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

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

Свойства заказа — это поля формы оформления: имя, телефон, адрес, комментарий, выбор точки самовывоза. В отличие от свойств инфоблока, которые описывают товар, свойства заказа описывают саму сделку и настраиваются отдельным разделом модуля продаж. Разберём типы свойств, логику видимости в зависимости от способа доставки и то, как не превратить форму оформления в длинную анкету. Где настраиваются Раздел Магазин → Настройки →…

Свойства элементов инфоблока — один из самых частых источников путаницы в API Битрикса: формат значения меняется в зависимости от типа свойства и множественности. Разберём CIBlockProperty, чтение и запись значений через PROPERTY_VALUES и типичные грабли с форматом данных. Получение списка свойств инфоблока <?php $result = CIBlockProperty::GetList( [‘SORT’ => ‘ASC’], [‘IBLOCK_ID’ => $iblockId] ); while ($property = $result->GetNext()) { echo $property[‘CODE’] ….

Завершение сессии пользователя выглядит как простая операция, но имеет несколько нюансов — от разницы между выходом текущего пользователя и принудительным завершением чужой сессии до того, что реально происходит с данными при вызове. Разберём CUser::Logout. Базовый вызов для текущего пользователя <?php global $USER; $USER->Logout(); LocalRedirect(‘/’); Logout() завершает сессию текущего авторизованного пользователя — удаляет данные авторизации из сессии и очищает связанные cookie….

Кеширование компонентов — та настройка, которая определяет, сколько запросов к базе делает страница при каждом обращении. Компонент, выводящий список товаров без кеша, пересчитывает выборку на каждом хите; тот же компонент с включённым кешем — только один раз за время жизни кеша. Три режима кеширования Режим Поведение Кешировать Компонент всегда использует кеш заданное время Не кешировать Данные пересчитываются на каждом обращении…

HTML-письмо ведёт себя совсем не как обычная веб-страница — почтовые клиенты поддерживают лишь малую часть CSS, и часть привычных приёмов вёрстки там просто не работает. Разберём, как сверстать шаблон почтового события в 1С-Битрикс так, чтобы он корректно отображался в разных почтовых клиентах. Табличная вёрстка вместо flexbox и grid Современные CSS-механизмы раскладки (flexbox, grid) не поддерживаются большинством почтовых клиентов надёжно —…