Ошибка «Входная строка имела неверный формат» (в английской версии — Input string was not in a correct format) возникает, когда программа пытается преобразовать текст в число, дату или другой тип данных, но содержимое строки не соответствует ожидаемому формату. Чаще всего с ней сталкиваются пользователи 1С, разработчики на C#/.NET, а также пользователи приложений, обрабатывающих числовые данные из файлов или форм ввода.
Проблема почти всегда сводится к одному из трёх сценариев: строка содержит лишние символы (пробелы, буквы, неразрывные пробелы), используется неправильный разделитель дробной части (точка вместо запятой или наоборот), либо программа ожидает данные в одном региональном формате, а система настроена на другой. Ниже разберём каждую причину и способы устранения.
Что означает эта ошибка
Технически сообщение генерируется методами преобразования типов — например, int.Parse(), Convert.ToInt32(), double.Parse() в платформе .NET или аналогичными механизмами в других средах. Когда в метод передаётся строка "12,5", а текущая культура системы ожидает точку как разделитель, преобразование завершается исключением FormatException.
Для обычного пользователя это выглядит как внезапное окно с ошибкой при открытии отчёта, загрузке файла или нажатии кнопки в программе. Само сообщение не указывает, какая именно строка вызвала сбой, поэтому диагностику приходится начинать с контекста: что вы делали в момент появления ошибки.
Основные причины возникновения
Прежде чем что-то исправлять, определите источник проблемы. Наиболее частые причины:
- 🔢 В числовое поле введены буквы, пробелы или спецсимволы (например,
"1 000"с неразрывным пробелом); - ⚙️ Несовпадение региональных настроек: программа ждёт точку, а Windows использует запятую как разделитель;
- 📄 Импортируемый файл (CSV, Excel, XML) содержит пустые ячейки или текст в числовых колонках;
- 🗓️ Дата записана в формате, отличном от ожидаемого (например,
31/12/2026вместо12/31/2026); - 💾 Повреждённый файл настроек или кэш программы, где хранится некорректное значение.
Отдельный случай — неразрывный пробел (символ с кодом 160), который копируется из Excel или веб-страниц вместе с числом. Визуально он неотличим от обычного пробела, но для парсера строка становится нечитаемой. Это одна из самых коварных причин, потому что данные выглядят корректно.
Проверка и настройка региональных параметров Windows
Если ошибка появляется в программе при работе с дробными числами или датами, первым делом проверьте региональные настройки системы. Откройте Панель управления → Часы и регион → Регион → Дополнительные параметры и посмотрите, какой символ задан в поле «Разделитель целой и дробной части».
Для русской локали Windows по умолчанию используется запятая. Если программа, с которой вы работаете, написана под английский формат и ожидает точку, возможны два пути: поменять разделитель в системе на точку либо вводить данные в том формате, который требует приложение. Изменение системного разделителя — обратимая операция, но она затронет все программы, поэтому перед изменением запомните исходное значение.
⚠️ Внимание: менять региональные настройки стоит только после проверки остальных причин. Если ошибка вызвана данными в файле, смена разделителя не поможет, а другие приложения могут начать работать иначе.
Исправление ошибки в 1С
В продуктах 1С:Предприятие эта ошибка часто возникает при загрузке данных из внешних файлов, обмене между базами или при вводе чисел вручную. Порядок действий зависит от сценария.
Если сбой происходит при загрузке файла, откройте его в редакторе и проверьте числовые колонки: там не должно быть пустых значений, текста и лишних пробелов. При ручном вводе убедитесь, что используете разделитель, соответствующий настройкам системы. Также ошибку может вызывать повреждённый кэш метаданных — в этом случае помогает очистка кэша: удаление базы из списка в окне запуска и повторное добавление, либо очистка служебных папок профиля пользователя. Конкретный путь к кэшу зависит от версии платформы, поэтому сверяйтесь с документацией вашей конфигурации.
☑️ Диагностика ошибки в 1С
Если ошибка воспроизводится только у одного пользователя на одном компьютере — проблема почти наверняка локальная: кэш, настройки региона или профиль. Если у всех — ищите причину в данных или в коде конфигурации.
Решение для разработчиков на C# и .NET
Разработчику доступны более надёжные инструменты, чем прямой вызов int.Parse(). Главное правило: пользовательский ввод нельзя парсить без проверки. Используйте семейство методов TryParse, которое возвращает false вместо генерации исключения:
if (int.TryParse(input, out int result))
{
// преобразование успешно, работаем с result
}
else
{
// сообщаем пользователю о неверном формате
}
Если строка гарантированно содержит число в конкретном формате, укажите культуру явно через CultureInfo.InvariantCulture или нужную локаль:
double value = double.Parse("12.5", CultureInfo.InvariantCulture);
Дополнительно очищайте входные данные: метод Trim() убирает пробелы по краям, а Replace() помогает удалить неразрывные пробелы и лишние символы до начала парсинга. Для дат используйте DateTime.TryParseExact() с явным указанием шаблона формата.
Ошибка при импорте файлов и в других программах
При загрузке данных из Excel или CSV проверьте файл до импорта. Откройте его и убедитесь, что числовые столбцы не содержат текста, символов валют, процентов и пустых строк в середине диапазона. Ячейки, отформатированные как текст, но содержащие цифры, — тоже частый источник проблем: программа-импортёр может прочитать их иначе, чем вы ожидаете.
В играх и сторонних утилитах подобное сообщение иногда появляется из-за повреждённого конфигурационного файла, где хранится некорректное значение параметра. В таком случае помогает удаление или переименование файла настроек (программа создаст новый с значениями по умолчанию). Расположение конфига зависит от конкретного приложения — обычно это папка AppData или каталог «Документы».
⚠️ Внимание: перед удалением любых файлов настроек сделайте их копию. Если дело было не в конфиге, вы сможете вернуть прежние параметры без потери данных.
Как найти неразрывный пробел в данных
Откройте файл в текстовом редакторе с отображением служебных символов (например, Notepad++ с включённой опцией «Отображать все символы»). Обычный пробел показывается точкой, а неразрывный может отображаться иначе или не отображаться вовсе. Также можно использовать поиск по коду символа \xA0 в режиме регулярных выражений.
Что делать, если ничего не помогло
Когда стандартные проверки не дают результата, сузьте поиск. Попробуйте воспроизвести ошибку на другом компьютере с теми же данными: если там всё работает, проблема в локальной среде — региональных настройках, кэше или правах доступа. Если ошибка повторяется везде, ищите дефект в самих данных или в логике программы.
Для коммерческих программ имеет смысл обратиться к официальной документации или в поддержку разработчика, приложив точный текст ошибки и описание действий, которые к ней привели. Для собственного кода добавьте логирование: запишите фактическое значение строки перед парсингом — в большинстве случаев причина становится очевидной сразу после просмотра лога.
Часто задаваемые вопросы
Почему ошибка появляется, хотя число выглядит правильно?
Наиболее вероятная причина — скрытые символы: неразрывный пробел, табуляция или невидимый знак, скопированный вместе с числом из Excel или веб-страницы. Очистите строку с помощью Trim() и замены символа с кодом 160.
Как исправить ошибку в 1С без программиста?
Начните с безопасных шагов: проверьте данные в загружаемом файле, убедитесь, что разделитель дробной части соответствует настройкам Windows, и очистите кэш базы, переподключив её в списке информационных баз. Если не помогло — потребуется специалист по 1С.
Чем TryParse лучше Parse в C#?
Метод TryParse не генерирует исключение при неверном формате, а возвращает false. Это быстрее по производительности и позволяет корректно обработать ошибку ввода, не прерывая работу программы.
Может ли ошибка быть вызвана обновлением Windows?
Косвенно — да. Обновление иногда сбрасывает региональные настройки или меняет форматы по умолчанию. Если ошибка появилась сразу после обновления системы, проверьте разделитель дробной части и формат даты в параметрах региона.
Ошибка возникает при запуске игры или утилиты. Что делать?
Вероятная причина — повреждённый конфигурационный файл. Найдите папку с настройками программы (обычно в AppData или «Документах»), переименуйте файл конфигурации и запустите приложение заново — оно создаст файл с параметрами по умолчанию. Предварительно сделайте копию.