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