Почему в CSV-файле при выгрузке из 1С появляются запятые в числах?

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

Часто при работе с 1С:Предприятие разработчики сталкиваются с ситуацией, когда код, годами работавший корректно, вдруг начинает «портить» данные при выгрузке. Одной из наиболее типичных проблем является внезапное появление разделителей групп разрядов (например, запятых или пробелов) в числах при записи их в CSV-файл. Рассмотрим, почему это происходит и как раз и навсегда застраховать свои интеграции от подобных «сюрпризов».

Разберемся в причинах проблемы

Когда вы формируете текстовый файл в 1С, например, через ЗаписьТекста, платформа выполняет преобразование типов данных. Если вы передаете число в метод записи без явного указания формата, 1С обращается к региональным настройкам операционной системы, под которой запущена сессия 1С или служба сервера.

На разных серверах могут быть установлены разные локали. Если на новом сервере в настройках Windows («Региональные стандарты») включено использование разделителя групп разрядов, то при автоматическом приведении числа к строке 1С добавит эти самые разделители. В итоге число 1784.04 превращается в 1,784.04, что часто приводит к ошибкам при последующем чтении такого файла сторонними программами.

Решение проблемы через функцию Формат()

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

Рассмотрим, как это работает на практике. Вместо того чтобы просто передавать число, оберните его в функцию:


// Пример использования функции Формат
СтрокаЧисла = Формат(ЧислоДляВыгрузки, "ЧГ=0; ЧДР=.");

Разберем детально параметры, которые мы использовали:

  1. ЧГ=0 — этот параметр отключает группировку разрядов. Именно он предотвращает появление запятых или пробелов между тысячами. Установив значение 0, мы гарантируем, что число будет выведено «цельным» потоком цифр.
  2. ЧДР=. — этот параметр задает символ разделителя дробной части. Установка точки является стандартом для большинства форматов обмена данными (CSV, XML, JSON), поэтому рекомендуется всегда фиксировать её принудительно.

Почему не стоит полагаться на настройки сервера

Вы можете попробовать изменить региональные настройки в «Панели управления» на сервере, однако это не всегда дает результат. Причины тому следующие:

Поэтому лучшая практика — это «программируемая независимость». Когда вы сами описываете формат строки в коде, вы становитесь независимыми от конфигурации ОС.

Заключение: чек-лист для надежной выгрузки

Для того чтобы ваши выгрузки в CSV были стабильными и предсказуемыми, придерживайтесь этих простых правил:

  1. Всегда используйте функцию Формат() для преобразования чисел в строку перед записью в файл.
  2. Всегда явно прописывайте параметр ЧГ=0, чтобы избежать нежелательного форматирования разрядов.
  3. Принудительно устанавливайте разделитель дробной части через ЧДР, чтобы избежать разночтений в разных системах.
  4. Помните, что CSV — это текстовый формат. Если вы открываете его программой (например, Excel), она может автоматически применять свое собственное форматирование к ячейкам. Всегда проверяйте содержимое файла с помощью обычного «Блокнота» или любого другого редактора чистого текста, чтобы увидеть реальную структуру данных.

Используя этот подход, вы навсегда забудете о проблеме «волшебного» появления лишних символов в ваших файлах выгрузки!

← На главную