При настройке макетов ценников в 1С:Розница 2.3 многие пользователи сталкиваются с тем, что цена выводится с нежелательным пробелом между разрядами (например, 1 560 вместо 1560), несмотря на попытки использовать конструктор форматной строки и установку параметра ЧГ=0. Давайте разберем, почему это происходит и как исправить данную ситуацию.
Основная причина, по которой настройка ЧГ=0 (что означает отсутствие группировки разрядов числа) не приносит результата, заключается в типе передаваемых данных. Функция Формат() в платформе 1С:Предприятие работает по-разному в зависимости от того, что именно в нее передается:
ЧГ управляет отображением разрядов.ЧГ — это настройка для числового формата.В большинстве случаев в типовых конфигурациях при формировании макета ценника значение цены уже преобразуется в строку еще до того, как оно попадает в ячейку макета. Это происходит либо через стандартную функцию Строка(), либо через механизмы платформы, которые подготавливают данные для вывода. Если в ячейку попала строка "1 560", то попытка применить к ней ЧГ=0 не даст никакого эффекта — данные уже отформатированы как строка с пробелом.
Чтобы решить проблему, необходимо убедиться, что в ячейку макета передается именно тип данных Число. Рассмотрим шаги, которые помогут нам в этом:
Строка, то никакое изменение формата ячейки не поможет, так как исходное значение уже потеряло свою числовую природу.
// Пример очистки строки от пробелов
ЦенаСтрока = СтрЗаменить(ЦенаСтрока, " ", "");
// Правильный способ форматирования числа
ЦенаЧисло = 1560;
СтрокаДляВывода = Формат(ЦенаЧисло, "ЧГ=0");
Рассмотрим подробнее, почему конструктор форматной строки часто вводит в заблуждение. Когда вы открываете свойства ячейки в режиме редактирования макета, конструктор позволяет задать настройки формата. Однако важно помнить:
Строка, форматная строка будет бессильна.Символы.НПП), не удаляются стандартной форматной строкой, если она применяется к уже готовой строке.Подведем итог: если вы хотите убрать пробелы в цене, не пытайтесь бороться с форматом уже полученной строки. Сосредоточьтесь на том, чтобы источник данных передавал в макет исходное число. Если же данные в макет приходят уже строкой, используйте СтрЗаменить() для удаления лишних пробельных символов в модуле формирования ценника, либо приведите данные к числу, прежде чем вызывать функцию Формат() с параметром ЧГ=0.