Главная » Разработка Битрикс » Компоненты » Веб-формы в Битрикс: создание и вывод формы обратной связи

Веб-формы в Битрикс: создание и вывод формы обратной связи

Схема веб-формы в Битрикс: заявка хранится в модуле, отправляет уведомление и запускает событие OnAfterResultAdd

Веб-формы — штатный модуль 1С-Битрикс для сбора данных от посетителей: обратная связь, заявка на звонок, обратный вопрос. В отличие от ручной сборки формы и обработчика на PHP, модуль хранит заявки в базе, показывает их в административной части и умеет отправлять уведомления без единой строки кода.

Когда веб-форма уместнее самописной

СитуацияЧто выбрать
Нужен простой сбор заявок с хранением в админке Веб-форма
Форма должна выглядеть частью дизайна сайта Своя форма с обработчиком
Нужны сложные условия видимости полей Своя форма
Маркетолог сам меняет состав полей без разработчика Веб-форма
Заявки должны сразу попадать в CRM другой системы Своя форма с прямой отправкой по API

Создание формы

Формы настраиваются в разделе Сервисы → Веб-формы.

  1. Создайте новую форму и задайте её название.
  2. Добавьте поля: текстовые, выпадающие списки, файлы, чекбоксы.
  3. Настройте почтовые уведомления — кому и что отправлять после заявки.
  4. Настройте права доступа: кто видит заявки в административной части.
  5. Получите код для вставки на страницу сайта.

Нужна помощь с Битрикс?





    Вывод формы на странице

    <$APPLICATION->IncludeComponent(
        'bitrix:form.result.new',
        'main',
        [
            'WEB_FORM_ID'      => 3,
            'RESULT_ID'        => null,
            'SEF_MODE'         => 'N',
            'CACHE_TYPE'       => 'N',
            'IGNORE_CUSTOM_TEMPLATE' => 'N',
            'VARIABLE_ALIASES' => [],
        ]
    );?>

    Параметр CACHE_TYPE для формы почти всегда должен быть N — форма содержит токен защиты от повторной отправки и должна формироваться заново на каждый показ, а не браться из кеша.

    Обработка после отправки

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

    Своя логика после отправки формы

    Если помимо стандартной отправки нужна дополнительная обработка — например, передача заявки во внешнюю CRM, — используется событие модуля веб-форм:

    <?php // /local/php_interface/init.php
    
    AddEventHandler('form', 'OnAfterResultAdd', 'onFormResultAdd');
    
    function onFormResultAdd($formId, $resultId)
    {
        if ($formId != 3) {
            return;
        }
    
        // получить данные заявки и передать во внешнюю систему
        $result = new CFormResult();
        $arResult = $result->GetByID($resultId, $formId);
    
        // ... отправка во внешний сервис ...
    }

    Такой обработчик срабатывает независимо от способа вывода формы на странице — стандартным компонентом или через AJAX-вызов — и не требует правок в самой форме при последующих изменениях.

    Кастомизация внешнего вида

    Компонент вывода формы, как и любой другой, поддерживает копирование шаблона в структуру сайта для полного контроля над вёрсткой полей. Более лёгкий способ для точечных правок — параметры компонента, управляющие оформлением стандартных элементов без замены всего шаблона.

    Множественные формы на одной странице

    Если на странице выводится несколько форм — например, форма подписки в шапке и форма обратной связи в подвале, — у каждой должен быть свой уникальный WEB_FORM_ID, а параметр VARIABLE_ALIASES помогает избежать конфликта GET-параметров между несколькими экземплярами компонента на одной странице.

    Частые ошибки

    • Кеширование формы включено. Токен защиты устаревает, повторная отправка не проходит или проходит некорректно.
    • Нет отдельной страницы благодарности. Сложнее отследить конверсию форм в системах аналитики.
    • Логика интеграции встроена в шаблон формы. Правильное место — обработчик события OnAfterResultAdd, а не сам шаблон вывода.
    • Несколько форм на странице с одинаковым VARIABLE_ALIASES или без него — конфликт параметров между экземплярами.

    Итог

    Модуль веб-форм закрывает типовую задачу сбора заявок без написания своего обработчика: хранение в базе, просмотр в административной части, почтовые уведомления. Дополнительная логика — например, передача заявки во внешнюю систему — правильно оформляется через событие OnAfterResultAdd, а не встраивается в шаблон формы, что делает её независимой от последующих изменений оформления.

    Нужна помощь с Битрикс?

    Исправим ошибку, доработаем сайт, ускорим Битрикс или поможем разобраться с проблемой.

    Услуги
    Инструменты
    База знаний