Как убрать пробел в представлении чисел в 1С:Предприятие

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе в системе 1С программисты и пользователи часто сталкиваются с тем, что большие числа (тысячи, миллионы) автоматически разделяются пробелом. Например, число 15000 превращается в 15 000. Это стандартное поведение платформы, обусловленное региональными настройками, призванное облегчить чтение данных. Однако в ряде случаев — например, при выгрузке данных в сторонние системы, формировании артикулов или штрихкодов — этот пробел становится помехой. Рассмотрим подробнее, какими способами можно избавиться от группировки разрядов.

Использование функции Формат() в программном коде

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

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


// Пример преобразования числа в строку без пробелов
ЧислоДляОбработки = 1500000;
СтрокаБезПробелов = Формат(ЧислоДляОбработки, "ЧГ=0");
// Результат: "1500000"

Обратите внимание, что форматная строка пишется в кавычках. Если вам нужно передать пустую группировку, можно также использовать конструкцию "ЧГ=" без указания нуля — результат будет аналогичным. Это решение идеально подходит для формирования сообщений пользователю или подготовки строк для записи в текстовые файлы.

Работа с неразрывным пробелом (Символы.НПП)

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

Дело в том, что 1С использует для разделения разрядов не обычный пробел (код 32), а специальный неразрывный пробел (код 160). Чтобы гарантированно удалить его, следует использовать системную константу Символы.НПП. Рассмотрим на примере:


// Удаление неразрывного пробела из уже готовой строки
ИсходнаяСтрока = "1 500 000"; // Здесь визуально пробелы, но программно это НПП
ЧистаяСтрока = СтрЗаменить(ИсходнаяСтрока, Символы.НПП, "");
// Результат: "1500000"

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

Настройка в свойствах конфигурации (Метаданные)

Если нам требуется, чтобы конкретный числовой реквизит (например, «НомерЗаказа» или «Артикул») всегда отображался без пробелов во всей системе, нам не обязательно прописывать код в каждом модуле. Мы можем задать это на уровне метаданных.

  1. Откроем конфигуратор и найдем нужный реквизит или ресурс.
  2. В окне свойств найдем пункт «Формат».
  3. Нажмем на кнопку выбора (три точки), откроется конструктор форматной строки.
  4. В конструкторе на вкладке «Число» найдем поле «Группировка» и выберем значение «0» или просто снимем галочку, отвечающую за разделение групп разрядов.
  5. Платформа автоматически сформирует строку ЧГ=0.

Этот метод хорош тем, что он применяется централизованно ко всем формам, спискам и стандартным отчетам, где задействован данный реквизит.

Форматирование в Системе компоновки данных (СКД)

При построении отчетов на базе СКД настройки из метаданных могут перекрываться настройками самого отчета. Чтобы убрать пробелы в конкретном поле отчета, выполним следующие действия:

Перейдем на вкладку «Наборы данных» или «Условное оформление» в схеме компоновки. Для выбранного поля в колонке «Оформление» найдем параметр «Формат». Там, аналогично конструктору в метаданных, установим значение ЧГ=0. Проанализируем ситуацию: если формат задан в СКД, он будет иметь приоритет над региональными настройками пользователя и системными настройками платформы. Это гарантирует, что при печати отчета или сохранении его в PDF числа будут выглядеть именно так, как задумал разработчик.

Нюансы полей ввода на управляемых формах

В современных интерфейсах (Управляемое приложение) есть важная деталь. Для элементов управления типа «Поле ввода» существует два похожих свойства: «Формат» и «Формат редактирования».

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

Влияние региональных установок и системных настроек

Иногда программисты сталкиваются с тем, что на сервере числа отображаются иначе, чем на локальном компьютере. Выясним причину этого явления. Если в коде используется метод ЧислоВСтроку() или пустая форматная строка, 1С обращается к региональным стандартам операционной системы (Windows или Linux).

Если в настройках ОС в качестве разделителя групп разрядов стоит любой символ (пробел, точка, запятая), 1С подставит его автоматически. Чтобы ваш код работал одинаково у всех пользователей, независимо от их личных настроек Windows, всегда используйте явное указание формата ЧГ=0. Это обеспечит стабильность работы программы в распределенных системах и клиент-серверном варианте работы.

Рекомендации для мобильной платформы

На мобильных устройствах под управлением Android и iOS локальные настройки интерфейса играют еще более значимую роль. Мобильный клиент 1С активно подстраивается под язык системы. Поэтому, если ваше приложение предполагает работу с серийными номерами или кодами, представленными в числовом виде, использование Формат(Значение, "ЧГ=0") является единственным надежным способом обеспечить единообразие отображения данных на разных гаджетах.

Подводя итог, можно сказать, что решение задачи по удалению пробелов в числах почти всегда сводится к правильному использованию параметра ЧГ=0. Будь то программный код, свойства метаданных или настройки отчетов СКД — этот параметр является универсальным ключом к управлению представлением числовой информации в системе 1С:Предприятие.

← На главную