К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как убрать разделитель разрядов в 1С

Как убрать пробел-разделитель разрядов в числах 1С: через форматирование, функцию Формат(), настройки отчётов и кода. Причины появления и способы исправления.

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

Убрать разделитель можно несколькими способами: через форматную строку конкретного поля, через функцию Формат() в коде, через региональные настройки информационной базы или через настройки самой операционной системы. Выбор зависит от того, где именно появляется нежелательный пробел — в отчёте, в печатной форме, в выгружаемом файле или во всех числах базы сразу.

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

Откуда берётся разделитель разрядов в 1С

Платформа 1С при выводе числа применяет форматную строку. Если она не задана явно, используются региональные установки: сначала настройки информационной базы (Администрирование → Региональные установки), а если они не переопределены — настройки операционной системы пользователя. В русской локали Windows разделителем групп разрядов обычно служит неразрывный пробел, поэтому числа и выводятся с пробелами.

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

Как убрать разделитель через свойство «Формат» поля

Если пробелы мешают в конкретной форме, отчёте или печатном макете, правильнее всего задать формат точечно. Откройте в конфигураторе нужную форму или макет, выделите поле ввода, ячейку табличного документа или элемент формы и найдите свойство «Формат» в палитре свойств.

Нажмите кнопку выбора в строке свойства — откроется конструктор форматной строки. На закладке «Число» найдите параметр «Разделитель групп разрядов» (в коде это параметр ЧГ). Установите значение «Без группировки» или 0. После сохранения число в этом поле будет выводиться слитно: 1234567,89 вместо 1 234 567,89.

Тот же приём работает для ячеек табличного документа в макетах печатных форм: выделите ячейку с параметром суммы, откройте свойства и задайте формат с нулевой группировкой. Изменение коснётся только этой ячейки, остальные формы не пострадают.

Настройка формата поля в конфигураторе
  1. 1
    Откройте форму, макет или отчёт в конфигураторе
  2. 2
    Выделите поле или ячейку с числом и откройте палитру свойств
  3. 3
    Найдите свойство «Формат» и откройте конструктор форматной строки
  4. 4
    Для параметра «Разделитель групп разрядов» установите «Без группировки» (ЧГ=0)
  5. 5
    Сохраните конфигурацию и проверьте вывод числа в режиме предприятия

Как убрать разделитель в коде через функцию Формат()

При программном формировании строк — для файлов обмена, печатных форм, сообщений — используйте функцию Формат() с явным указанием параметров. Параметр ЧГ отвечает за группировку разрядов: значение 0 отключает разделитель полностью.

bsl
Сумма = 1234567.89;
СтрокаСРазделителем = Строка(Сумма);              // "1 234 567,89"
СтрокаБезРазделителя = Формат(Сумма, "ЧГ=0");     // "1234567,89"
СтрокаДляФайла = Формат(Сумма, "ЧРД=.; ЧГ=0");    // "1234567.89"

Обратите внимание на третий пример: при выгрузке в файлы обмена (XML, CSV, JSON) часто требуется не только убрать разделитель разрядов, но и заменить десятичный разделитель с запятой на точку. Параметр ЧРД задаёт символ дробной части. Комбинация «ЧРД=.; ЧГ=0» — стандартный вариант для машиночитаемых форматов.

Если форматная строка не задана, а преобразование делается через Строка(), замените вызов на Формат() с явными параметрами. Это надёжнее, чем постобработка строки функциями СтрЗаменить(), потому что не зависит от локали сервера и клиента.

Как убрать разделитель глобально для всей базы

Когда пробелы мешают везде — во всех отчётах и формах конкретной базы — измените региональные установки информационной базы. В режиме предприятия откройте раздел «Администрирование» → «Региональные установки информационной базы» (в некоторых конфигурациях путь: НСИ и администрирование → Общие настройки). Найдите поле «Разделитель групп разрядов» и очистите его либо замените на пустую строку.

После сохранения настройки применятся ко всем пользователям этой базы, у которых формат не переопределён явно. Поля с индивидуальной форматной строкой продолжат работать по своим правилам — это позволяет сочетать глобальную и точечную настройку.

Альтернатива — изменить региональные стандарты в самой операционной системе (Панель управления → Регион → Дополнительные параметры → Разделитель групп разрядов). Этот способ затронет все программы пользователя, включая Excel и другие приложения, поэтому применяйте его осознанно и только на своём рабочем месте.

Способы убрать разделитель

Формат поля или ячейки

Подходит для точечного исправления одной формы или печатного макета. Требует доступа к конфигуратору и обновления конфигурации.

Функция Формат() в коде

Лучший вариант для файлов обмена и программно формируемых строк. Полный контроль над результатом, независимость от локали.

Региональные установки базы

Решает проблему сразу для всей базы без доработки конфигурации. Не действует на поля с явно заданным форматом.

Настройки ОС

Меняет поведение всех программ пользователя. Не подходит для серверных регламентных заданий и других рабочих мест.

Разделитель в отчётах на СКД и при выгрузке в Excel

В отчётах на системе компоновки данных формат задаётся в настройках поля. Откройте схему компоновки, перейдите на закладку «Наборы данных» или «Настройки», выберите числовое поле и в свойстве «Оформление» найдите параметр «Формат». Укажите строку с ЧГ=0 — отчёт перестанет группировать разряды.

При выгрузке табличного документа в Excel ситуация двоякая. Если ячейка содержит число, Excel получает число и применяет собственный формат — пробелы из 1С не переносятся. Если же ячейка содержит строку (например, при выводе через Строка()), Excel получит текст с пробелами, и суммирование по столбцу работать не будет. Решение — выводить в табличный документ числовые значения, а не строки, либо задавать формат без группировки до преобразования.

Контрольные точки

Как проверить результат

Вывод числа в форме или отчёте
Норма

Число отображается слитно: 1234567,89

Тревожный признак

Пробелы остались — формат задан не для того поля или переопределён выше

Выгрузка в Excel
Норма

Столбец суммируется формулами, значения выравнены вправо как числа

Тревожный признак

Значения слева, сумма не считается — выгружен текст, а не число

Файл обмена
Норма

Числа в файле без пробелов, с точкой или запятой по требованиям формата

Тревожный признак

Внешняя система отклоняет файл или читает значения как строки

Типичные ошибки и ограничения

Самая частая ошибка — попытка убрать пробелы постобработкой, например СтрЗаменить(Строка(Сумма), " ", ""). Это опасно: в русской локали разделителем может быть неразрывный пробел (символ с кодом 160), а не обычный, и замена не сработает. Кроме того, такой подход ломается при смене региональных настроек сервера.

Вторая ошибка — изменение настроек ОС вместо настроек базы. Регламентные задания на сервере выполняются под учётной записью службы агента 1С, у которой свои региональные параметры. Выгрузка, сформированная сервером, может содержать разделители, даже если у пользователя всё настроено правильно.

Третья ошибка — забыть про десятичный разделитель. Убрав пробелы, но оставив запятую в файле, где ожидается точка, вы получите отказ при загрузке во внешнюю систему. Всегда проверяйте требования целевого формата целиком.

Типичные ошибки
01
Удаление пробелов через СтрЗаменить — не срабатывает с неразрывным пробелом и ломается при смене локали
02
Настройка только клиентской ОС — серверные регламентные задания продолжают выводить разделители
03
Исправление формата не в том месте — поле в отчёте СКД переопределяет формат, заданный в запросе
04
Игнорирование десятичного разделителя — файл без пробелов, но с запятой вместо точки отклоняется внешней системой

Что выбрать в вашей ситуации

Для разового исправления печатной формы или отчёта достаточно форматной строки конкретного поля — это минимальное вмешательство. Для обменов с внешними системами всегда используйте Формат() с явными параметрами ЧГ и ЧРД: такой код не зависит от окружения и предсказуем на любом сервере.

Глобальную настройку базы применяйте, когда требование «без разделителей» касается всех форм и отчётов, а дорабатывать каждое поле по отдельности нерационально. Комбинировать способы можно и нужно: глобальная настройка задаёт общее правило, а точечные форматы — исключения.

Маршрут решения

Как выбрать действие

Пробелы мешают в одной печатной форме или отчётеЗадайте формат с ЧГ=0 в свойствах конкретного поля или ячейки
Формируется файл обмена для внешней системыИспользуйте Формат(Значение, "ЧРД=.; ЧГ=0") в коде выгрузки
Разделители нежелательны во всей базеОчистите разделитель групп разрядов в региональных установках информационной базы
Проблема только у одного пользователя во всех программахПроверьте региональные настройки его операционной системы
Итог

Что важно запомнить

Разделитель разрядов в 1С — это правило форматирования, а не часть данных. Убирается он параметром ЧГ=0 в форматной строке поля, функции Формат() или очисткой разделителя в региональных установках базы. Для файлов обмена дополнительно контролируйте десятичный разделитель через параметр ЧРД.

Частые вопросы

Почему после СтрЗаменить пробелы в числе остались?

1С использует неразрывный пробел (код символа 160) в качестве разделителя разрядов, а обычная замена ищет стандартный пробел с кодом 32. Используйте Символ(160) в поиске или, что надёжнее, формируйте строку сразу через Формат(Значение, "ЧГ=0") без постобработки.

Уберётся ли разделитель в уже сохранённых документах?

Да, потому что в базе хранится само число, а не его текстовое представление. После изменения формата все документы — и старые, и новые — будут отображаться и печататься по новым правилам без какого-либо перепроведения.

Как убрать разделитель в отчёте, если нет доступа к конфигуратору?

Попробуйте региональные установки информационной базы в разделе администрирования — это не требует изменения конфигурации. Если отчёт внешний, его можно открыть в конфигураторе как файл и поправить формат поля. Для типового отчёта без прав на доработку остаётся вариант выгрузки в Excel с последующей заменой пробелов уже там.

Влияет ли настройка сервера 1С на разделитель разрядов?

Да, для кода, выполняемого на сервере: регламентных заданий, фоновой выгрузки, веб-сервисов. Сервер использует региональные параметры учётной записи службы агента, которые могут отличаться от настроек пользователей. Поэтому в серверном коде всегда задавайте формат явно через Формат().

Как вывести число без разделителей и без дробной части?

Используйте форматную строку вида Формат(Значение, "ЧДЦ=0; ЧГ=0"). Параметр ЧДЦ задаёт число знаков после запятой, ЧГ отключает группировку разрядов. Результат для 1234567,89 будет «1234568» — с округлением по стандартным правилам.

Почему в Excel после выгрузки числа стали текстом с пробелами?

Значит, в табличный документ выводилась строка, а не число: Excel получил текст «1 234,56» и не может его суммировать. Исправьте отчёт или обработку так, чтобы в ячейки помещались числовые значения, либо задайте формат без группировки до преобразования в строку.