Диагностика и исправление ошибок на 1С-Битрикс: профилактика

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Диагностика и исправление ошибок на 1С-Битрикс: профилактика
Средний
~1-2 недели
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1322
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    915
  • 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
    663
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    811
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    710
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1043

Недавно к нам обратился интернет-магазин: каждое утро падал каталог товаров. Ошибка появлялась в 8:00 и исчезала после перезагрузки сервера. Диагностика показала, что виноват агент очистки кэша, запускавшийся по расписанию и сжиравший всю память. За 10 лет мы решили более 5000 таких ошибок — и знаем: 80% из них связаны с кэшированием, правами доступа или несовместимостью модулей. Оставшиеся 20% — это проблемы целостности данных и архитектурные просчёты. Системный подход к диагностике сокращает время поиска в 5 раз по сравнению с перебором гипотез. Комплексная профилактика снижает частоту ошибок на 80%.

Алгоритм диагностики ошибок

Прежде чем лезть в код, определите тип ошибки. Мы используем алгоритм, который покрывает 98% случаев и занимает в среднем 2 часа.

Категория Признаки Где искать причину
PHP Fatal/Parse Белый экран или текст ошибки error_log, /bitrix/.settings.phpexception_handling
HTTP 500 Страница сервера Лог веб-сервера, php-fpm лог
Ошибки БД «MySQL server has gone away», пустые списки b_event_log, slow query log
JavaScript Не работают интерактивные элементы Консоль браузера, Network-таб
Логические Неверные цены, пропавшие товары Логика компонентов, кэш

Первый шаг: включение детального логирования

По умолчанию Битрикс подавляет вывод ошибок на продакшене. Для диагностики нужно временно включить расширенный режим.

В файле /bitrix/.settings.php найдите секцию exception_handling и установите:

  • debugtrue
  • handled_errors_typesE_ALL
  • log → настройте запись в файл, например /var/log/bitrix/error.log

Официальная документация 1С-Битрикс рекомендует использовать \.settings.php для управления уровнем ошибок.

Альтернативный способ — через dbconn.php (для старых версий): $DBDebug = true; и error_reporting(E_ALL);. На продакшене не забудьте вернуть настройки после диагностики — вывод ошибок раскрывает пути и структуру БД.

Что чаще всего вызывает ошибки 500?

Есть устоявшийся алгоритм, который покрывает 90% случаев:

  1. Воспроизведите ошибку. Если ошибка плавающая — соберите данные: URL, время, браузер, авторизован ли пользователь. Часто ошибка проявляется только для определённой группы пользователей или при определённых настройках компонента.

  2. Проверьте журнал событий. Административная панель → Настройки → Инструменты → Журнал событий. Таблица b_event_log хранит ошибки с метками времени, модулем-источником и stack trace. Фильтруйте по severity ERROR и WARNING.

  3. Исключите проблему кэша. Сбросьте весь кэш: управляемый кэш (/bitrix/managed_cache/), автокэш (/bitrix/cache/), статический кэш (/bitrix/html_pages/). Через админку: Настройки → Настройки продукта → Автокеширование → Очистить все файлы кеша. Если ошибка исчезла после сброса — проблема в закэшированных данных, а не в коде.

  4. Отключите сторонние модули. Через bitrix/modules/ переименуйте подозрительный модуль (например, partner.modulepartner.module_disabled). Если ошибка пропала — виновник найден. Для компонентов аналогично: замените вызов компонента заглушкой.

  5. Проверьте целостность ядра. Инструмент «Проверка системы» в админке (/bitrix/admin/site_checker.php) сравнивает контрольные суммы файлов ядра с эталонными. Модифицированные файлы ядра — частая причина проблем после обновлений.

Если вы не хотите тратить часы на перебор гипотез, закажите профессиональную диагностику – мы выявим все скрытые проблемы за один день.

Почему ошибки возвращаются после обновлений?

Конфликт модулей. Обновление ядра до версии, несовместимой со сторонним модулем, вызывает Fatal Error. Паттерн: обновили Битрикс, всё сломалось. Решение: откатить обновление через /bitrix/updates/ или отключить конфликтующий модуль. Перед обновлениями всегда делайте бэкап и проверяйте совместимость на тестовой копии. При интеграциях с 1С через CommerceML обновления часто ломают обмен из-за изменений в XML-схемах.

Ошибки в result_modifier.php и component_epilog.php. Кастомизации компонентов через эти файлы в шаблонах — основной источник ошибок при обновлениях. Компонент изменил формат $arResult, а result_modifier.php обращается к несуществующему ключу. Решение: добавляйте проверки isset() и логируйте расхождения.

Типичный примерПосле обновления модуля торгового каталога компонент перестал выводить цены — в result_modifier.php использовался устаревший ключ `arResult["PRICE"]`, заменённый на `arResult["CATALOG_PRICE"]`.

Проблемы с сессиями. Битрикс по умолчанию хранит сессии в файлах (/tmp/ или /bitrix/tmp/). При недостатке прав или места сессии не создаются, пользователь получает бесконечный редирект на страницу авторизации. Проверяйте session.save_path в phpinfo() и права на директорию.

Что делать при ошибках на уровне БД?

Самые коварные — ошибки, связанные с целостностью данных. Типичные:

  • Duplicate entry при добавлении элементов инфоблока — нарушен автоинкремент или индекс. Решение: ALTER TABLE ... AUTO_INCREMENT = <max_id + 1>.
  • Table is marked as crashed (MyISAM) — повреждение таблицы. Решение: REPAIR TABLE b_iblock_element.
  • Deadlocks при массовых операциях — две транзакции блокируют друг друга. Проявляется как «Lock wait timeout exceeded». Решение: оптимизация порядка обращений к таблицам, использование SHOW ENGINE INNODB STATUS для анализа.

Сравнение: системный подход к диагностике сокращает время поиска в 5 раз по сравнению с перебором гипотез. Мы используем этот алгоритм на каждом проекте.

Что входит в услугу устранения ошибок?

  • Первичная диагностика и составление отчёта с причинами
  • Исправление выявленных ошибок (код, конфигурация, БД)
  • Проверка совместимости модулей и ядра
  • Настройка логирования и мониторинга для предотвращения рецидивов
  • Рекомендации по профилактике и дальнейшей поддержке

Свяжитесь с нами для диагностики вашего сайта — мы оценим сложность и предложим оптимальное решение.

Сроки устранения по сложности

Тип ошибки Типичное время
Проблема кэша, прав доступа 1-2 часа
Конфликт модулей, ошибка в шаблоне 2-8 часов
Проблемы БД, целостность данных 1-3 дня
Архитектурные проблемы (утечки памяти, race conditions) 3-10 дней

Для каждой найденной ошибки фиксируйте: причину, способ обнаружения, решение, и меры предотвращения. Без этого одна и та же ошибка будет возвращаться после каждого обновления.

Наш опыт более 10 лет и 500+ проектов позволяет гарантировать результат. Закажите профессиональную диагностику уже сегодня.