
Какие проблемы чаще всего ломают кастомизации Битрикс24 после перехода на ORM и PHP 8
disterveg только что Какие проблемы чаще всего ломают кастомизации Битрикс24 после перехода на ORM и PHP 8 Средний 16 мин 24 Блог компании Битрикс24 PHP * CRM-системы * Программирование * Веб-разработка * Туториал...
Значимый прорыв формирует отрасль ИИ: disterveg только что Какие проблемы чаще всего ломают кастомизации Битрикс24 после перехода на ORM и PHP 8 Средний 16 мин 24 Блог компании Битрикс24 PHP * CRM-системы * Программирование * Веб-разработка * Туториал Recognizing Anger Through Inside Out – What About Drinks? Вы обновляете PHP на сервере с 7. 0 — что может пойти не так?
Деплой проходит, страница обновляется, и вместо привычного портала вы видите белый экран с TypeError: array_search(): Argument #2 ($haystack) must be of type array, null given. Мессенджер разрывается от сообщений: «Ничего не работает». Меня зовут Дмитрий Черкашин, я разработчик в Битрикс24.
Технические детали
Проанализировав девчаты разработчиков и опираясь на личный опыт, я собрал самые распространённые ошибки в кастомизациях коробочной Битрикс24 в две главы:Первая — про ловушки ORM, в которые попадаешь, когда пытаешься написать код «по-современному». Вторая — про боли миграции. Это о том, как в PHP 8+ безжалостно выстреливает легаси-код, который годами работал «на честном слове».
Внутри — конкретные ошибки с кодом, цифры производительности и интерактивные задачки. Проверьте, сколько из этих грабель вы уже собрали. 1 — Ловушки ORM: производительность, память и сложные запросыORM был создан как более современный и безопасный способ работы с базой данных в Битрикс24.
В отличие от старого ядра, где работа велась в процедурном стиле через статические методы вроде CIBlockElement::GetList(), новое ядро основано на объектно-ориентированном подходе. Такой подход делает код более читаемым и удобным для поддержки. Хотя ORM помогает писать более структурированный и поддерживаемый код, легко споткнуться о некоторые особенности поведения.
Отраслевые последствия
Даже опытные разработчики сталкиваются с ситуациями, когда «красивый» код на ORM внезапно падает с исключением или возвращает неверные данные. Общая рекомендация: Используйте ::query() вместо GetList и старого стиля ORM. Новый API позволяет избежать неявных UPPER и LIKE, которые ломают индексы БД.
Как ORM строит запросы1. ORM больше не разрешает использовать SQL-выражения прямо в selectСовременное ядро ужесточило требования к безопасности запросов. В старых версиях Битрикс24 разработчики часто смешивали ORM и фрагменты SQL.
Например, можно было прямо внутри массива select написать SUM(PRICE) или COUNT(*), и ORM спокойно подставлял это в итоговый SQL-запрос. В новых версиях ядра это считается небезопасным. Попытка прокинуть массив с выражениями напрямую в секцию select метода getList теперь приводит к фатальному исключению Bitrix\Main\ArgumentException.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





