По умолчанию платформа 1С:Предприятие при отображении числовых значений автоматически разбивает их на триады разрядов (тысячи, миллионы и т. д.), разделяя их пробелом. В большинстве случаев для финансовых отчетов и документов это удобно, однако при работе с кодами, артикулами, штрихкодами или номенклатурными номерами такое отображение только мешает. Разберем подробнее, почему так происходит и какими способами можно отключить деление на разряды — как глобально для всей базы, так и точечно в коде или формах.
При выводе чисел в интерфейсе или их преобразовании в строку платформа 1С использует региональные настройки. При этом в качестве разделителя групп используется не обычный символ пробела (ASCII 32), а символ неразрывного пробела (Символы.НПП, ASCII 160). По этой причине стандартная попытка заменить обычный пробел в строке через СтрЗаменить(Текст, " ", "") часто не дает никакого результата.
Если вам требуется отключить разделение разрядов сразу для всей конфигурации, проанализируем системные настройки информационной базы.
Важное предупреждение: применение данного метода изменит отображение чисел во всей информационной базе. Из-за этого финансовые суммы в документах и печатных формах перестанут разделяться на тысячи, что сделает их менее читаемыми для бухгалтеров и пользователей. Поэтому рекомендуется применять точечные методы настройки.
Для управления представлением чисел в коде 1С используется функция Формат(). Разберем по шагам, как правильно составить форматную строку.
Чтобы полностью отключить группировку разрядов, необходимо передать параметр ЧГ=0 (Число Групп равно нулю). Рассмотрим пример кода:
КодБезРазделителей = Формат(ЧисловоеЗначение, "ЧГ=0");
Обратите внимание: если попытаться просто очистить разделитель с помощью параметра ЧРГ=, платформа не отключит группировку, а вернет стандартный неразрывный пробел. Настоятельно рекомендуется применять именно ЧГ=0.
Посмотрим на альтернативный способ программной конвертации чисел, который идеально подходит при формировании текстовых выгрузок, файлов JSON или XML. Функция XMLСтрока() преобразует числовое значение в стандартный текстовый вид без разделителей разрядов, независимо от настроек операционной системы или информационной базы:
ТекстовыйКод = XMLСтрока(ЧисловоеЗначение);
Рассмотрим ситуацию, когда число уже было преобразовано в строковое представление по умолчанию, и нам нужно очистить его от разделителей. В этом случае воспользуемся функцией замены с указанием системной константы Символы.НПП:
СтрокаБезПробелов = СтрЗаменить(СтрокаСЧислом, Символы.НПП, "");
Проанализируем, как убрать разделители разрядов в интерфейсных элементах без написания программного кода:
Формат (или Формат редактирования) и укажем значение ЧГ=0. Можно также воспользоваться встроенным Конструктором форматной строки.ЧГ=0.Формат зададим выражение ЧГ=0.Если реквизит предназначен для хранения кодов, артикулов, номеров приборов или других идентификаторов, над которыми не выполняются арифметические операции, наиболее правильным решением будет изменить тип реквизита в конфигураторе с Число на Строка. В этом случае платформа перестанет применять к нему числовое форматирование.