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

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

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

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

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

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

Где именно появляется разделитель и почему он мешает

По умолчанию платформа 1С при выводе чисел группирует разряды по три и разделяет группы символом, заданным в региональных настройках. Чаще всего это неразрывный пробел (код символа 160), реже — обычный пробел или другой знак, если настройки базы изменены. Важно понимать: само число в базе хранится без разделителя, он добавляется только при преобразовании числа в строку для отображения или вывода.

Проблемы возникают именно при таком преобразовании. Типичные ситуации: выгрузка суммы в текстовый файл или XML, где «1 500,00» не парсится как число; формирование строки для банковского формата; передача числа в COM-объект или веб-сервис; склейка числа с текстом через оператор конкатенации, когда платформа неявно преобразует число в строку с разделителем.

Разделитель виден только на экранеНастройка формата поля

Проверьте свойство «Формат» у поля ввода или колонки таблицы

Разделитель в печатной формеФормат ячейки макета

Откройте макет и проверьте параметр формата в свойствах ячейки

Разделитель в выгружаемом файлеНеявное преобразование в коде

Ищите места, где число присваивается строковой переменной без Формат()

Разделитель везде, во всех документахРегиональные настройки базы

Проверьте региональные установки информационной базы в конфигураторе

Способ 1. Убрать разделитель через функцию Формат() в коде

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

Число = 1234567.89;

СтрокаБезРазделителя = Формат(Число, "ЧГ=0");

// Результат: "1234567,89"

СуммаСтрокой = Формат(СуммаДокумента, "ЧДЦ=2; ЧГ=0");

// Результат: "1234567,89" — два знака после запятой, без пробелов

Полезные сочетания параметров: ЧДЦ=2 фиксирует два десятичных знака, ЧРД=. задаёт точку как разделитель дробной части (часто требуется для обмена данными), ЧН=0 выводит ноль вместо пустой строки для незаполненного значения. Например, для выгрузки в формат, где разделитель дробной части — точка: Формат(Сумма, "ЧДЦ=2; ЧРД=.; ЧГ=0").

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

bsl
Формат(СуммаДокумента, "ЧДЦ=2; ЧРД=.; ЧГ=0") // "1234567.89" без разделителя разрядов

Способ 2. Настроить формат поля в форме или таблице

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

В конструкторе на вкладке «Число» снимите флаг или выберите в поле «Группировка» значение «0» — это эквивалентно ЧГ=0. После сохранения конфигурации числа в этом поле будут отображаться слитно. Аналогичная настройка есть в запросах и СКД: для поля отчёта на вкладке «Наборы данных» или в настройках поля можно задать формат через выражение Формат() либо в параметрах оформления.

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

Способ 3. Убрать разделитель в печатной форме и макете

В макетах табличных документов формат задаётся на уровне ячейки. Откройте макет, выделите ячейку с параметром суммы, откройте её свойства и в строке «Формат» укажите ЧГ=0 (при необходимости вместе с ЧДЦ=2). После этого при заполнении параметра числом оно выведется без разделителя разрядов.

Альтернатива без изменения макета — передавать в параметр уже отформатированную строку:

Область.Параметры.Сумма = Формат(Документ.Сумма, "ЧДЦ=2; ЧГ=0");

Второй вариант предпочтительнее, если один и тот же макет используется в разных местах с разными требованиями к выводу. Но помните: если в параметр передана строка, а не число, в табличном документе значение перестанет быть числовым — это может помешать дальнейшим расчётам в самом табличном документе или автоподбору ширины колонки.

Способ 4. Изменить региональные настройки информационной базы

Глобальный вариант — поменять разделитель групп разрядов для всей базы. В конфигураторе откройте «Администрирование → Региональные установки информационной базы». Здесь задаются разделитель групп разрядов и разделитель дробной части, которые платформа использует по умолчанию при всех преобразованиях числа в строку.

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

Дополнительно разделитель может наследоваться из региональных настроек операционной системы пользователя, если в базе параметры не заданы явно. В таком случае у разных пользователей одно и то же число может выглядеть по-разному. Явная установка параметров в базе устраняет эту неоднозначность.

Как убрать разделитель из уже существующей строки

Иногда число с разделителем уже пришло извне — из файла, буфера обмена или результата неявного преобразования — и его нужно «очистить». Проблема в том, что разделителем обычно является неразрывный пробел (символ с кодом 160), а не обычный пробел, поэтому СтрЗаменить(Строка, " ", "") может не сработать.

Надёжная конструкция — удалить оба варианта пробела и при необходимости заменить запятую на точку перед преобразованием в число:

Строка = "1 234 567,89";

Строка = СтрЗаменить(Строка, Символ(160), ""); // неразрывный пробел

Строка = СтрЗаменить(Строка, " ", ""); // обычный пробел

Строка = СтрЗаменить(Строка, ",", "."); // если нужна точка

Число = Число(Строка);

Если строка может содержать и другие посторонние символы (знаки валют, буквы), используйте ОписаниеТипа с методом ПривестиЗначение() — он мягче обрабатывает некорректные значения и возвращает 0 или значение по умолчанию вместо исключения.

Типичные ошибки
01
Замена только обычного пробела — неразрывный пробел (символ 160) остаётся, и Число() выдаёт ошибку преобразования
02
Использование Число() на строке с разделителем без очистки — платформа вызывает исключение и прерывает обработку
03
Изменение региональных настроек рабочей базы без проверки на копии — ломаются выгрузки, зависящие от прежнего формата
04
Передача в макет строки вместо числа — теряется возможность числовых операций в табличном документе
05
Попытка убрать разделитель в самих данных — число в базе хранится без разделителя, менять нужно только формат вывода

Как проверить результат и выбрать подходящий способ

Признак правильного результата — число выводится слитно («1234567,89»), корректно воспринимается целевой системой и при необходимости обратно преобразуется в число без ошибок. Проверять стоит на краевых значениях: ноль, числа меньше тысячи, крупные суммы с миллионами, отрицательные значения и значения без дробной части.

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

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

Вывод в целевой файл или форму
Норма

Число слитное, без пробелов, с нужным десятичным разделителем

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

Остались пробелы или появился лишний символ валюты

Обратное преобразование Число()
Норма

Преобразование проходит без исключения, значение совпадает с исходным

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

Ошибка преобразования или округлённое значение

Отображение у других пользователей
Норма

У всех одинаковый вид чисел

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

У части пользователей разделитель остался — формат берётся из ОС

Печатная форма
Норма

Сумма без разделителя, колонки не разъезжаются

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

Строка обрезана или выровнена не так, как число

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

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

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

Разделитель мешает при выгрузке или обменеИспользуйте Формат(Число, "ЧГ=0") в месте формирования строки
Разделитель мешает в одной форме или колонкеЗадайте формат с группировкой 0 в свойствах поля
Разделитель мешает в печатной формеНастройте формат ячейки макета или передавайте отформатированную строку в параметр
Разделитель мешает везде и у всехОчистите разделитель групп разрядов в региональных установках базы, предварительно проверив на копии
Нужно прочитать строку с разделителем как числоУдалите символы 160 и 32 через СтрЗаменить, затем примените Число()
Итог

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

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

Часто задаваемые вопросы

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

Потому что 1С по умолчанию использует неразрывный пробел — символ с кодом 160, который отличается от обычного пробела (код 32). Заменяйте Символ(160), а для надёжности — оба символа подряд.

Можно ли убрать разделитель без изменения конфигурации?

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

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

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

Повлияет ли ЧГ=0 на хранимые в базе данные?

Нет. Формат влияет только на преобразование числа в строку при выводе. В базе число хранится в числовом виде без каких-либо разделителей, и никакие настройки формата данные не изменяют.

Почему у разных пользователей числа выглядят по-разному?

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

Как убрать разделитель в отчёте на СКД?

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