Код-ревью проекта на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Код-ревью проекта на 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Код-ревью проекта на 1С-Битрикс

Когда проект переходит к новой команде, накапливает кастомный код за несколько лет или готовится к масштабированию — нужен независимый взгляд на качество кода. Код-ревью Битрикс-проекта сложнее стандартного: нужно понимать и современные PHP-практики, и специфику ядра Битрикс — как работать с компонентами правильно, когда использовать D7 API вместо старого ядра, почему прямые запросы к b_iblock_element через CIBlockElement::GetList с полным перебором убивают базу.

Что проверяется при ревью

Архитектура и организация кода:

  • Наличие кастомных модулей (/local/modules/) вместо правок в /bitrix/modules/
  • Использование пространств имён и автозагрузки
  • Разделение логики: контроллеры не содержат SQL, шаблоны не содержат бизнес-логику
  • Кастомные таблицы реализованы через \Bitrix\Main\ORM\Data\DataManager, а не голыми запросами

Работа с базой данных:

Типичные проблемы, которые ищем:

// ПЛОХО: N+1, выборка всех элементов без лимита
while ($arItem = $rsItems->Fetch()) {
    $price = \CPrice::GetList([], ['PRODUCT_ID' => $arItem['ID']])->Fetch();
}

// ХОРОШО: предварительная выборка цен пакетом
$productIds = array_column($items, 'ID');
$prices = \Bitrix\Catalog\PriceTable::getList([
    'filter' => ['=PRODUCT_ID' => $productIds],
])->fetchAll();
$priceMap = array_column($prices, 'PRICE', 'PRODUCT_ID');

Безопасность:

  • SQL-инъекции через конкатенацию запросов без экранирования
  • XSS — вывод $_GET/$_POST без htmlspecialchars()
  • Прямой доступ к файлам без проверки B_PROLOG_INCLUDED
  • Хранение API-ключей в коде вместо настроек модуля

Использование кеша:

  • Компоненты с тяжёлыми запросами без кеширования
  • Неправильное управление тегами кеша (инвалидация не срабатывает при изменении элемента)
  • Отсутствие кеша на AJAX-эндпоинтах каталога

D7 vs старое ядро:

Что использовать Старое ядро D7 API
Работа с пользователями CUser::GetByID() \Bitrix\Main\UserTable::getById()
Инфоблоки CIBlockElement::GetList() \Bitrix\Iblock\ElementTable::getList()
Отправка почты CEvent::Send() \Bitrix\Main\Mail\Event::send()
Работа с датами ConvertTimeStamp() \Bitrix\Main\Type\DateTime

Процесс ревью

  1. Статический анализ — прогоняем PHPStan (level 5–6) и PHP_CodeSniffer с правилами PSR-12. Автоматически выявляет ~40% проблем.

  2. Ручной анализ — проверяем ключевые подсистемы: компоненты каталога, оформление заказа, интеграция с 1С, модули авторизации.

  3. Профилирование запросов — включаем define('BX_DEBUG', true) на dev-стенде, проверяем количество SQL-запросов на страницах каталога и карточке товара. Норма — до 30 запросов. Больше 100 — системная проблема.

  4. Отчёт — структурированный документ с классификацией проблем по критичности (Critical / High / Medium / Low), примером проблемного кода и рекомендацией по исправлению.

Кейс: маркетплейс на Битрикс, 5 лет разработки

Ситуация: проект разрабатывался 5 лет разными командами, текущий подрядчик сообщает о невозможности добавить новый функционал «из-за кривой архитектуры».

Что нашли при ревью:

  • 847 прямых обращений к $DB->Query() с конкатенацией без экранирования — 12 потенциальных SQL-инъекций
  • N+1 в компоненте листинга: 1 запрос на список + N запросов на цены (при N=50 — 51 запрос вместо 2)
  • 3 места с хранением паролей в MD5 без соли
  • Бизнес-логика в файлах template.php компонентов — невозможно переиспользовать и тестировать
  • 40% кастомного кода в /bitrix/ — обновление ядра гарантированно ломает сайт

Результат ревью: приоритизированный план рефакторинга на 6 месяцев, разбитый по эпикам. Критические уязвимости устранены за 2 недели.

Категория Найдено проблем Критических
Безопасность 18 3
Производительность (N+1, отсутствие кеша) 24 5
Архитектура и организация кода 31 0
Устаревшие API (старое ядро) 67 0

Что входит в код-ревью

  • Статический анализ PHPStan + PHPCS с отчётом по нарушениям
  • Ручная проверка ключевых подсистем: каталог, заказы, интеграции, авторизация
  • Профилирование SQL-запросов на dev-стенде
  • Аудит безопасности: SQL-инъекции, XSS, хранение секретов
  • Итоговый отчёт с классификацией по критичности и рекомендациями
  • Консультация по плану рефакторинга