Как проверить, является ли значение числом в 1С:Предприятие 8?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Проверка типа значения через ТипЗнч

Если наша переменная уже содержит какое-то значение и нам нужно просто подтвердить, что это именно число, самым надежным, быстрым и правильным способом является использование функции ТипЗнч. Этот метод напрямую обращается к метаданным значения.

Рассмотрим, как это выглядит в коде:


Если ТипЗнч(Значение) = Тип("Число") Тогда
    Сообщить("Это число!");
Иначе
    Сообщить("Это не число.");
КонецЕсли;

Данный способ является стандартом для восьмой версии платформы. Он работает максимально эффективно и не требует затратных преобразований типов.

Проверка строки на содержание числа

Ситуация усложняется, когда мы получаем данные из внешних источников (например, из текстового файла, Excel или ввода пользователя). В этом случае значение изначально имеет тип Строка, и нам необходимо понять, можно ли эту строку конвертировать в Число без возникновения ошибки.

Попытки проверять каждый символ строки в цикле на «циферичность» (сравнение с "0123456789") являются не самыми надежными. Такой подход не учитывает знаки отрицательных чисел, разделители дробной части (точки или запятые) и экспоненциальную запись.

Для корректной проверки мы рекомендуем использовать блок Попытка...Исключение. Это самый безопасный способ «на лету» проверить возможность преобразования:


Попытка
    Результат = Число(ВходящаяСтрока);
    Сообщить("Преобразование успешно: " + Результат);
Исключение
    Сообщить("Строка не является числом");
КонецПопытки;

Использование стандартных библиотек

В современных конфигурациях, построенных на базе БСП (Библиотеки стандартных подсистем), разработчики имеют доступ к общим модулям, таким как СтроковыеФункцииКлиентСервер. Это предпочтительный путь для профессиональной разработки.

Почему стоит использовать стандартные функции:

  1. Корректная обработка разделителей: Типовые функции учитывают региональные настройки пользователя (запятая или точка в качестве разделителя дробной части).
  2. Учет форматов: Они лучше справляются с пробелами и форматами отображения чисел, которые часто встречаются при экспорте данных.
  3. Поддержка кода: Использование стандартных методов облегчает чтение вашего кода другими программистами, так как они привыкли к библиотечным функциям.

Чего стоит избегать при проверке чисел

Мы часто видим «прикольные» способы, которые кажутся элегантными, но несут в себе скрытые угрозы. Например, сравнение строковых представлений: Строка(Число(Знач)) = Строка(Знач).

Разберем, почему это плохая практика:

Подводя итог, при работе с типами данных в 1С всегда следуйте принципу: используйте ТипЗнч для проверки типа, и обработку исключений Попытка...Исключение для проверки возможности приведения типов в строках. Это обеспечит стабильность и предсказуемость вашего кода в любых ситуациях.

← На главную