Разработка и Конфигурация · 11 мин
Как убрать разделитель разрядов в 1С
Как убрать пробел-разделитель разрядов в числах 1С: через форматирование, функцию Формат(), настройки отчётов и кода. Причины появления и способы исправления.
Числа вида «1 234 567,89» с пробелами между разрядами — стандартное поведение 1С, унаследованное из региональных настроек операционной системы или параметров информационной базы. В большинстве экранных форм такое отображение удобно, но при выгрузке в Excel, обмене данными с внешними системами или формировании печатных документов разделитель часто мешает: внешняя программа воспринимает значение как текст, формулы не считаются, а обменные файлы не проходят проверку.
Убрать разделитель можно несколькими способами: через форматную строку конкретного поля, через функцию Формат() в коде, через региональные настройки информационной базы или через настройки самой операционной системы. Выбор зависит от того, где именно появляется нежелательный пробел — в отчёте, в печатной форме, в выгружаемом файле или во всех числах базы сразу.
Важно понимать: разделитель разрядов не хранится в данных. В базе число хранится как число, а пробелы добавляются только при отображении или преобразовании в строку. Поэтому исправление всегда сводится к изменению правил форматирования, а не к «чистке» данных.
Откуда берётся разделитель разрядов в 1С
Платформа 1С при выводе числа применяет форматную строку. Если она не задана явно, используются региональные установки: сначала настройки информационной базы (Администрирование → Региональные установки), а если они не переопределены — настройки операционной системы пользователя. В русской локали Windows разделителем групп разрядов обычно служит неразрывный пробел, поэтому числа и выводятся с пробелами.
Тот же механизм работает при преобразовании числа в строку в коде. Вызов Строка(Число) или неявное преобразование в строковом выражении использует формат по умолчанию, и результат тоже содержит разделители. Именно это чаще всего становится причиной «лишних пробелов» в файлах обмена и печатных формах.
Как убрать разделитель через свойство «Формат» поля
Если пробелы мешают в конкретной форме, отчёте или печатном макете, правильнее всего задать формат точечно. Откройте в конфигураторе нужную форму или макет, выделите поле ввода, ячейку табличного документа или элемент формы и найдите свойство «Формат» в палитре свойств.
Нажмите кнопку выбора в строке свойства — откроется конструктор форматной строки. На закладке «Число» найдите параметр «Разделитель групп разрядов» (в коде это параметр ЧГ). Установите значение «Без группировки» или 0. После сохранения число в этом поле будет выводиться слитно: 1234567,89 вместо 1 234 567,89.
Тот же приём работает для ячеек табличного документа в макетах печатных форм: выделите ячейку с параметром суммы, откройте свойства и задайте формат с нулевой группировкой. Изменение коснётся только этой ячейки, остальные формы не пострадают.
- 1Откройте форму, макет или отчёт в конфигураторе
- 2Выделите поле или ячейку с числом и откройте палитру свойств
- 3Найдите свойство «Формат» и откройте конструктор форматной строки
- 4Для параметра «Разделитель групп разрядов» установите «Без группировки» (ЧГ=0)
- 5Сохраните конфигурацию и проверьте вывод числа в режиме предприятия
Как убрать разделитель в коде через функцию Формат()
При программном формировании строк — для файлов обмена, печатных форм, сообщений — используйте функцию Формат() с явным указанием параметров. Параметр ЧГ отвечает за группировку разрядов: значение 0 отключает разделитель полностью.
Сумма = 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
Пробелы остались — формат задан не для того поля или переопределён выше
Столбец суммируется формулами, значения выравнены вправо как числа
Значения слева, сумма не считается — выгружен текст, а не число
Числа в файле без пробелов, с точкой или запятой по требованиям формата
Внешняя система отклоняет файл или читает значения как строки
Типичные ошибки и ограничения
Самая частая ошибка — попытка убрать пробелы постобработкой, например СтрЗаменить(Строка(Сумма), " ", ""). Это опасно: в русской локали разделителем может быть неразрывный пробел (символ с кодом 160), а не обычный, и замена не сработает. Кроме того, такой подход ломается при смене региональных настроек сервера.
Вторая ошибка — изменение настроек ОС вместо настроек базы. Регламентные задания на сервере выполняются под учётной записью службы агента 1С, у которой свои региональные параметры. Выгрузка, сформированная сервером, может содержать разделители, даже если у пользователя всё настроено правильно.
Третья ошибка — забыть про десятичный разделитель. Убрав пробелы, но оставив запятую в файле, где ожидается точка, вы получите отказ при загрузке во внешнюю систему. Всегда проверяйте требования целевого формата целиком.
Что выбрать в вашей ситуации
Для разового исправления печатной формы или отчёта достаточно форматной строки конкретного поля — это минимальное вмешательство. Для обменов с внешними системами всегда используйте Формат() с явными параметрами ЧГ и ЧРД: такой код не зависит от окружения и предсказуем на любом сервере.
Глобальную настройку базы применяйте, когда требование «без разделителей» касается всех форм и отчётов, а дорабатывать каждое поле по отдельности нерационально. Комбинировать способы можно и нужно: глобальная настройка задаёт общее правило, а точечные форматы — исключения.
Как выбрать действие
Что важно запомнить
Разделитель разрядов в 1С — это правило форматирования, а не часть данных. Убирается он параметром ЧГ=0 в форматной строке поля, функции Формат() или очисткой разделителя в региональных установках базы. Для файлов обмена дополнительно контролируйте десятичный разделитель через параметр ЧРД.
Частые вопросы
Почему после СтрЗаменить пробелы в числе остались?
1С использует неразрывный пробел (код символа 160) в качестве разделителя разрядов, а обычная замена ищет стандартный пробел с кодом 32. Используйте Символ(160) в поиске или, что надёжнее, формируйте строку сразу через Формат(Значение, "ЧГ=0") без постобработки.
Уберётся ли разделитель в уже сохранённых документах?
Да, потому что в базе хранится само число, а не его текстовое представление. После изменения формата все документы — и старые, и новые — будут отображаться и печататься по новым правилам без какого-либо перепроведения.
Как убрать разделитель в отчёте, если нет доступа к конфигуратору?
Попробуйте региональные установки информационной базы в разделе администрирования — это не требует изменения конфигурации. Если отчёт внешний, его можно открыть в конфигураторе как файл и поправить формат поля. Для типового отчёта без прав на доработку остаётся вариант выгрузки в Excel с последующей заменой пробелов уже там.
Влияет ли настройка сервера 1С на разделитель разрядов?
Да, для кода, выполняемого на сервере: регламентных заданий, фоновой выгрузки, веб-сервисов. Сервер использует региональные параметры учётной записи службы агента, которые могут отличаться от настроек пользователей. Поэтому в серверном коде всегда задавайте формат явно через Формат().
Как вывести число без разделителей и без дробной части?
Используйте форматную строку вида Формат(Значение, "ЧДЦ=0; ЧГ=0"). Параметр ЧДЦ задаёт число знаков после запятой, ЧГ отключает группировку разрядов. Результат для 1234567,89 будет «1234568» — с округлением по стандартным правилам.
Почему в Excel после выгрузки числа стали текстом с пробелами?
Значит, в табличный документ выводилась строка, а не число: Excel получил текст «1 234,56» и не может его суммировать. Исправьте отчёт или обработку так, чтобы в ячейки помещались числовые значения, либо задайте формат без группировки до преобразования в строку.