Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

1C_ERR_CAST_TO_NUMBER 1С:Предприятие и СУБД

Ошибка 1С: Преобразование значения к типу Число не может быть выполнено

Обновлено: 25.08.2026 · Официальная документация ↗
  • Аварийное прерывание расчетов, проведения документов или загрузки файлов (Excel, CSV, XML, JSON).
  • Текст ошибки: {Модуль(Строка)}: Преобразование значения к типу Число не может быть выполнено.
  • Сбой при вызове явной функции Число(Значение) или при выполнении арифметических операций (+, -, *, /).

1. Причины ошибки приведения типов

Платформа 1С:Предприятие вызывает исключение при конвертации в число, если:

  • Строка содержит неразрывные пробелы (символ Символы.НПП / ASCII 160), пробелы-разделители триад или буквы;
  • В качестве десятичного разделителя используется запятая вместо точки (или наоборот, в зависимости от локали);
  • Значение содержит Неопределено, Null, объект ссылки или пустую строку "" (в некоторых версиях/контекстах).

2. Практические методы решения

Метод 1: Очистка строки от мусора и разделителей

Функция СтрокуВЧислоБезопасно(ВходнаяСтрока) Экспорт
    // 1. Заменяем неразрывные пробелы и обычные пробелы на пустоту
    ОчищеннаяСтрока = СтрЗаменить(ВходнаяСтрока, Символы.НПП, "");
    ОчищеннаяСтрока = СтрЗаменить(ОчищеннаяСтрока, " ", "");
    
    // 2. Унифицируем разделитель дроби (запятую на точку)
    ОчищеннаяСтрока = СтрЗаменить(ОчищеннаяСтрока, ",", ".");
    
    // 3. Проверка через Попытку
    Попытка
        Возврат Число(ОчищеннаяСтрока);
    Исключение
        Возврат 0;
    КонецПопытки;
КонецФункции

Метод 2: Использование функции БСП

В типовых конфигурациях используйте готовый метод БСП:

// Безопасное извлечение числа из строки с любым форматированием:
ЧисловоеЗначение = ОбщегоНазначенияКлиентСервер.СтрокаВЧисло(ТекстовоеПоле);

Метод 3: Безопасное сложение чисел и строк

// СБОЙ (если Переменная2 оказалась строкой "10a" или Неопределено):
Итого = Переменная1 + Число(Переменная2);

// ИСПРАВЛЕНИЕ:
Итого = ?(ТипЗнч(Переменная1) = Тип("Число"), Переменная1, 0) 
      + ?(ТипЗнч(Переменная2) = Тип("Число"), Переменная2, 0);
💡 Практика специалистов: При загрузке прайс-листов из Excel/CSV всегда предварительно удаляйте символ Символы.НПП (код 160) через СтрЗаменить(), так как визуально в отладчике он неотличим от стандартного пробела (код 32).

Частые вопросы (FAQ)

Почему Число(' 100 ') с обычными пробелами работает, а Число('100 000') падает?

Встроенная функция Число() автоматически обрезает начальные и конечные пробелы, но внутренние пробелы (разделители групп разрядов) воспринимаются как недопустимые нечисловые символы.

Что такое неразрывный пробел (Символы.НПП) и откуда он берется?

Символ с кодом 160 (НПП) вставляется функцией Формат() по умолчанию для разделения триад чисел (например, '1 000.00'). При копировании такого текста назад в поле ввода парсер Число() падает.

Преобразует ли функция Число() значение Ложь и Истина?

Да, Число(Ложь) вернет 0, а Число(Истина) вернет 1.

Как преобразовать число из экспоненциального формата (1.5e+04)?

Штатная функция Число() не поддерживает экспоненциальную запись (научный формат). Для ее разбора используйте XML-сериализацию: XMLЗначение(Тип('Число'), '1.5e+04').

Полезные материалы
Рекомендуем