Часто перед разработчиками 1С встает задача переноса логики проверки данных, написанной на JavaScript, непосредственно в среду 1С. В данной статье мы разберем, как эффективно проверить корректность введенного пользователем номера телефона, используя инструменты платформы 1С.
Начиная с версии платформы 8.3.23, в языке 1С появилась встроенная поддержка регулярных выражений. Это самый «чистый» и современный способ, который позволяет перенести логику из JS почти без изменений.
Разберем пример реализации такой проверки:
// Пример использования регулярного выражения для проверки номера
Перем СтрокаДляПроверки, Регулярка, Результат;
СтрокаДляПроверки = "+7(999)000-00-00";
Регулярка = "^[\d\+][\d\(\)\ -]{4,14}\d$";
Результат = СтрПодобнаПоРегулярномуВыражению(СтрокаДляПроверки, Регулярка);
Если Результат Тогда
Сообщить("Номер телефона введен правильно!");
Иначе
Сообщить("Ошибка: формат номера не соответствует шаблону!");
КонецЕсли;
Обратите внимание, что метод СтрПодобнаПоРегулярномуВыражению возвращает логическое значение Истина или Ложь. Это прямой аналог метода test() из JavaScript.
Если вы работаете на версии платформы ниже 8.3.23, либо хотите минимизировать зависимости от сложных движков, мы можем реализовать алгоритм посимвольной проверки. Этот способ требует больше кода, но он универсален и работает на любом релизе платформы.
Давайте проанализируем логику такой проверки по шагам:
Пример программной реализации:
Функция ВалидныйТелефон(Телефон)
Перем valid, firstChar, lastChar, i;
valid = Ложь;
Если НЕ ПустаяСтрока(Телефон) Тогда
firstChar = Сред(Телефон, 1, 1);
lastChar = Сред(Телефон, СтрДлина(Телефон), 1);
Если (СтрНайти("0123456789", firstChar) > 0 ИЛИ firstChar = "+")
И СтрНайти("0123456789", lastChar) > 0 Тогда
valid = Истина;
Для i = 2 По (СтрДлина(Телефон) - 1) Цикл
Если НЕ (СтрНайти("0123456789()- ", Сред(Телефон, i, 1)) > 0) Тогда
valid = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Возврат valid;
КонецФункции
Помимо программной проверки, не забывайте о возможностях интерфейса 1С:
Маска. Это позволит ограничить ввод пользователя еще на этапе нажатия клавиш, запрещая ввод букв или лишних спецсимволов. Это самый надежный способ защиты от «кривых» данных.HTML-документа, вы можете оставить проверку на JavaScript внутри этого поля. Это позволит получать мгновенную обратную связь в браузере, не обращаясь к серверу 1С до момента окончательной записи данных.Подводя итог: для новых конфигураций мы рекомендуем использовать встроенные методы регулярных выражений. Для старых систем — классическую посимвольную проверку. Оба этих подхода позволят вам надежно отсеивать некорректно введенные номера телефонов.