Веб-формы — штатный модуль 1С-Битрикс для сбора данных от посетителей: обратная связь, заявка на звонок, обратный вопрос. В отличие от ручной сборки формы и обработчика на PHP, модуль хранит заявки в базе, показывает их в административной части и умеет отправлять уведомления без единой строки кода.
Когда веб-форма уместнее самописной
| Ситуация | Что выбрать |
|---|---|
| Нужен простой сбор заявок с хранением в админке | Веб-форма |
| Форма должна выглядеть частью дизайна сайта | Своя форма с обработчиком |
| Нужны сложные условия видимости полей | Своя форма |
| Маркетолог сам меняет состав полей без разработчика | Веб-форма |
| Заявки должны сразу попадать в CRM другой системы | Своя форма с прямой отправкой по API |
Создание формы
Формы настраиваются в разделе Сервисы → Веб-формы.
- Создайте новую форму и задайте её название.
- Добавьте поля: текстовые, выпадающие списки, файлы, чекбоксы.
- Настройте почтовые уведомления — кому и что отправлять после заявки.
- Настройте права доступа: кто видит заявки в административной части.
- Получите код для вставки на страницу сайта.
Нужна помощь с Битрикс?
Вывод формы на странице
<$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, а не встраивается в шаблон формы,
что делает её независимой от последующих изменений оформления.
