Настройка валидации полей форм 1С-Битрикс

Настройка валидации полей форм 1С-Битрикс Мы сталкиваемся с этим постоянно. Клиенты приходят с готовым каталогом контактов, где каждый менеджер вводил данные как хотел. И в итоге — ни одна автоматическая выгрузка не работает. Решение — настройка валидации ещё на этапе заполнения формы. Здесь мы п
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка валидации полей форм 1С-Битрикс
Простой
~1 день

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

Часто задаваемые вопросы

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

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1461
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1019
  • Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    764
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    882
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    810
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1166

Настройка валидации полей форм 1С-Битрикс

Мы сталкиваемся с этим постоянно. Клиенты приходят с готовым каталогом контактов, где каждый менеджер вводил данные как хотел. И в итоге — ни одна автоматическая выгрузка не работает. Решение — настройка валидации ещё на этапе заполнения формы. Здесь мы покажем, как навести порядок в данных с помощью инструментов 1С-Битрикс: от маски ввода до серверных обработчиков. Наш опыт — более 50 проектов по настройке валидации, и каждая работа выполняется под ключ с гарантией результата.

Форма принимает номер телефона в любом формате: «80291234567», «+375-29-123-45-67», «029 123 45 67» — всё это попадает в базу как есть. Через три месяца менеджер смотрит на 2000 записей с номерами в десяти разных форматах и не может выгрузить их в CRM. Если бы валидация была настроена заранее, данные пришли бы уже нормализованными. Разберём инструменты, которые это обеспечивают.

Почему стандартной валидации недостаточно?

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

Встроенная валидация модуля form

Модуль form поддерживает базовую валидацию на уровне полей через параметры в b_form_field: поле REQUIRED (Y/N), поле CHECK_FILTER — регулярное выражение для проверки значения, поле FILTER_MEMO — сообщение об ошибке.

Редактирование через API:

\CFormField::Update($fieldId, $formId, [ 'REQUIRED' => 'Y', 'CHECK_FILTER' => '^\\+375[0-9]{9}$', 'FILTER_MEMO' => 'Введите номер в формате +375XXXXXXXXX', ]); 

CHECK_FILTER проверяется на сервере при сохранении результата. Клиентская валидация встроенным модулем не поддерживается — только серверная.

Сравнение подходов к валидации

Метод Где выполняется Время отклика Защита от прямых POST Процент ошибочных записей
Маска ввода Клиент Мгновенно Нет <5 %
JavaScript-валидация Клиент <100 мс Нет <10 %
Серверная валидация Сервер 500–1000 мс Да <1 %
reCAPTCHA Сервер 200–500 мс Да (боты) -

Маска ввода выявляет опечатки в 5 раз быстрее, чем серверная проверка после отправки. Однако только серверная валидация гарантирует защиту от прямых POST-запросов.

Клиентская валидация через JavaScript

Для немедленной обратной связи клиентская валидация добавляется в шаблон компонента bitrix:form.result.new. Обработчик подписывается на событие submit формы:

document.getElementById('form_<?= $arResult['FORM']['SID'] ?>').addEventListener('submit', function (e) { var errors = []; // Телефон var phone = document.getElementById('field_PHONE').value.replace(/\D/g, ''); if (!/^375\d{9}$/.test(phone)) { errors.push('Телефон: введите номер в формате +375XXXXXXXXX'); document.getElementById('field_PHONE').classList.add('error'); } // Email var email = document.getElementById('field_EMAIL').value; if (email && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) { errors.push('Email: неверный формат адреса'); document.getElementById('field_EMAIL').classList.add('error'); } if (errors.length > 0) { e.preventDefault(); document.getElementById('form_errors').innerHTML = errors.join('<br>'); } }); 

Нормализация перед сохранением

Валидация без нормализации — половинчатое решение. Телефон нужно не только проверить, но и привести к единому виду. Обработчик события OnBeforeResultAdd:

AddEventHandler('form', 'OnBeforeResultAdd', function($formId, &$arFields) { if (isset($arFields['form_field_PHONE'])) { $phone = preg_replace('/\D/', '', $arFields['form_field_PHONE']); // Нормализовать: 80291234567 → 375291234567 if (strlen($phone) === 11 && $phone[0] === '8') { $phone = '375' . substr($phone, 2); } if (strlen($phone) === 9) { $phone = '375' . $phone; } if (strlen($phone) === 12 && str_starts_with($phone, '375')) { $arFields['form_field_PHONE'] = '+' . $phone; } else { global $APPLICATION; $APPLICATION->ThrowException('Неверный формат телефона'); return false; } } }); 

Валидация с помощью маски ввода

Маска ввода предотвращает некорректный формат ещё во время набора. Библиотека IMask.js интегрируется в шаблон компонента:

IMask(document.getElementById('field_PHONE'), { mask: '+{375} (00) 000-00-00', }); 

После маски пользователь физически не может ввести букву в поле телефона. Это снимает часть нагрузки с серверной валидации, но не заменяет её — данные могут прийти через прямой POST-запрос минуя форму.

Защита от спама

Стандартная CAPTCHA Битрикса подключается через параметр компонента USE_CAPTCHA. Для Web-форм — поле типа captcha в b_form_field. Альтернатива — Google reCAPTCHA v3 через обработчик OnBeforeResultAdd: при низком скоре рекапчи форма отклоняется без показа ошибки пользователю (honeypot-подход для ботов).

Серверная проверка reCAPTCHA v3:

$token = $_POST['g-recaptcha-response']; $response = file_get_contents( 'https://www.google.com/recaptcha/api/siteverify?secret=SECRET&response=' . $token ); $data = json_decode($response, true); if ($data['score'] < 0.5) { return false; // Молча отклонить } 

Как мы настраиваем валидацию под ключ?

Наши специалисты с более чем 10-летним опытом работы с 1С-Битрикс проводят полный анализ формы, разрабатывают регулярные выражения и маски, настраивают серверные обработчики и защиту от спама. Всё тестируется на реальных сценариях. По завершении вы получаете документацию и инструкцию для администратора. Мы гарантируем, что данные будут приходить в едином формате, а ошибочные записи сведутся к минимуму.

Что входит в работу

  • Анализ текущих полей и требований к данным
  • Разработка регулярных выражений и масок для каждого поля
  • Настройка клиентской валидации (JavaScript)
  • Написание серверных обработчиков нормализации
  • Интеграция reCAPTCHA v3 или другого антиспама
  • Тестирование на граничные значения и прямые POST-запросы
  • Предоставление документации и обучение администраторов

Сколько времени занимает настройка?

Сроки зависят от количества полей и сложности логики. В среднем настройка одного поля занимает от 2 часов, комплексная валидация формы (до 10 полей) — от 2 до 5 дней. Оценка проекта выполняется бесплатно. Свяжитесь с нами — обсудим детали и подберём лучшее решение для вашего бизнеса.