Налаштування валідації полів форм 1С-Бітрікс

Налаштування валідації полів форм 1С-Бітрікс Ми стикаємося з цим постійно. Клієнти приходять з уже готовим каталогом контактів, де кожен менеджер вводив дані як хотів. І в підсумку — жодне автоматичне вивантаження не працює. Рішення — налаштування валідації ще на етапі заповнення форми. Тут ми по
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування валідації полів форм 1С-Бітрікс
Простий
~1 день

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

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1461
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    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; // Мовчки відхилити } 

На одному з проєктів для мережі магазинів ми налаштували валідацію контактної форми з 8 полями. Після впровадження кількість помилкових записів знизилася з 30% до 1%, а кількість спам-заявок упала на 95% завдяки reCAPTCHA v3.

Як ми налаштовуємо валідацію під ключ?

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

Що входить в роботу

  • Аналіз поточних полів та вимог до даних
  • Розробка регулярних виразів та масок для кожного поля
  • Налаштування клієнтської валідації (JavaScript)
  • Написання серверних обробників нормалізації
  • Інтеграція reCAPTCHA v3 або іншого антиспаму
  • Тестування на граничні значення та прямі POST-запити
  • Надання документації та навчання адміністраторів

Скільки часу займає налаштування?

Терміни залежать від кількості полів та складності логіки. В середньому налаштування одного поля займає від 2 годин, комплексна валідація форми (до 10 полів) — від 2 до 5 днів. Оцінка проєкту виконується безкоштовно. Зв'яжіться з нами — обговоримо деталі та підберемо найкраще рішення для вашого бізнесу.