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

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

1С: как задать формат числа

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

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

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

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

Где в 1С настраивается формат числа

Первое место — свойства реквизита объекта метаданных (документа, справочника, регистра). В конфигураторе откройте свойства реквизита с типом «Число»: там задаются «Длина» и «Точность». Это не формат вывода, а ограничение хранения: сколько всего цифр и сколько после запятой допустимо в базе. Если в поле ввести больше знаков, значение округлится или будет отклонено.

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

Третий вариант — программный вызов функции Формат() или подстановка форматной строки в метод СтрШаблон(). Это подходит для сообщений пользователю, текстов печатных форм, выгрузки в файлы и любых мест, где число превращается в строку в коде.

Синтаксис форматной строки: параметры ЧЦ, ЧДЦ, ЧГ, ЧН

Форматная строка состоит из пар «параметр=значение», разделённых точкой с запятой. Порядок параметров не важен, регистр букв тоже. Основные параметры для чисел:

  • ЧЦ — общее количество выводимых знаков, включая целую и дробную часть. Если не задано, длина определяется автоматически;
  • ЧДЦ — количество знаков после запятой. Лишние цифры округляются по арифметическим правилам, недостающие дополняются нулями;
  • ЧГ — группировка разрядов целой части. Значение ЧГ=3,0 означает группировку по три цифры с разделителем по умолчанию (неразрывный пробел). ЧГ=0 отключает группировку;
  • ЧН — строка, выводимая вместо нуля, например ЧН=- покажет прочерк вместо «0,00»;
  • ЧО — представление отрицательных чисел: ЧО=0 — с минусом, ЧО=1 — без минуса, ЧО=2 — в скобках;
  • ЧРД и ЧРГ — явные символы разделителя дробной части и групп разрядов, если нужно переопределить региональные настройки.

Параметры можно комбинировать в одной строке. Например, ЧЦ=17; ЧДЦ=2; ЧГ=3,0; ЧН=0,00 — типовой формат для денежных сумм: два знака после запятой, разряды разделены, ноль выводится как «0,00».

Задание формата через свойства поля без программирования

Если нужно изменить отображение числа в форме документа или списка, править код не обязательно. Порядок действий в конфигураторе:

Порядок действий
  1. 1
    Откройте форму объекта в конфигураторе и выделите нужное поле ввода или колонку таблицы.
  2. 2
    В палитре свойств найдите строку «Формат» и нажмите кнопку выбора.
  3. 3
    В конструкторе форматной строки задайте длину, точность, разделитель групп и представление нуля.
  4. 4
    Сохраните конфигурацию, обновите базу и откройте форму в режиме 1С:Предприятие.
  5. 5
    Проверьте вывод на нулевом, отрицательном и крупном значении.

Конструктор форматной строки удобен тем, что показывает пример результата сразу при изменении параметров. Это позволяет подобрать сочетание без запоминания синтаксиса. Обратите внимание: если у поля включено свойство «Редактирование текста» или задана маска ввода, формат может применяться только в режиме отображения, а не редактирования.

В отчётах на СКД формат задаётся на закладке «Наборы данных» — в свойствах поля, либо на закладке «Настройки» через «Условное оформление» → «Оформление» → «Формат». Это позволяет выводить одну и ту же колонку по-разному в разных вариантах отчёта.

Форматирование числа в коде: функция Формат()

Функция Формат(Значение; ФорматнаяСтрока) возвращает строку с представлением значения. Типовые примеры:

Сумма = 1234567.8;

СтрокаСуммы = Формат(Сумма; "ЧЦ=15; ЧДЦ=2; ЧГ=3,0");

// Результат: "1 234 567,80"

Количество = 0;

Текст = Формат(Количество; "ЧЦ=10; ЧДЦ=3; ЧН=-");

// Результат: "-"

Цена = -1500.5;

Текст = Формат(Цена; "ЧДЦ=2; ЧО=2");

// Результат: "(1 500,50)" — в зависимости от ЧО

Второй способ — встроенная подстановка в СтрШаблон() и текстовые литералы: СтрШаблон("Итого: %1", Формат(Сумма; "ЧДЦ=2")). В управляемых формах форматную строку можно указать прямо в пути к данным нельзя, поэтому для вычисляемых строковых представлений создают реквизит формы типа «Строка» и заполняют его функцией Формат().

При выгрузке в файлы (CSV, XML, обмен с банком) обычно требуется число без разделителей групп и с точкой как разделителем дробной части. Используйте строку вида ЧРД=.; ЧРГ=; ЧГ=0 и проверяйте требования конкретного формата обмена — лишний пробел в числе часто ломает загрузку на принимающей стороне.

Типовые сценарии: деньги, количество, проценты

Денежные суммы

Для сумм стандартом является два знака после запятой и группировка разрядов: ЧЦ=17; ЧДЦ=2; ЧГ=3,0. В печатных формах иногда требуется убрать копейки у целых значений — это делается условным форматированием или проверкой в коде, а не одной форматной строкой.

Количество и вес

Для количества точность зависит от учётной политики: штуки — ЧДЦ=0, вес и объём — обычно ЧДЦ=3. Параметр ЧН полезен в табличных частях: прочерк вместо нуля делает таблицу читаемее.

Проценты и коэффициенты

Проценты выводят с нужной точностью, например ЧДЦ=1 для ставки 18,5. Символ «%» форматная строка не добавляет — его дописывают в текст вручную: Формат(Ставка; "ЧДЦ=1") + " %".

Сравнение вариантов

Свойство «Формат» у поля формы

Подходит для постоянного отображения в конкретной форме или отчёте; не работает при программной сборке строк и выгрузке в файлы.

Функция Формат() в коде

Универсальный способ для сообщений, печатных форм и обменов; требует изменения кода и аккуратного контроля форматной строки.

Длина и точность реквизита

Ограничивают хранимое значение на уровне базы; не управляют разделителями и представлением нуля.

Частые ошибки и как их проверить

Типичные ошибки
01
Путают точность реквизита и формат вывода: число обрезается при записи, а исправляют форматную строку — без результата.
02
Оставляют разделители групп при выгрузке в файл — принимающая система не распознаёт число.
03
Задают ЧЦ меньше реальной длины числа — значение выводится с потерей разрядов или знаков.
04
Ожидают, что формат добавит символ валюты или процента — форматная строка этого не делает, символ дописывают в текст.
05
Забывают про ЧН: ноль в отчёте выглядит как «0,00» там, где по смыслу нужен прочерк.

Отдельная группа проблем связана с региональными настройками. Если форматная строка не задаёт ЧРД и ЧРГ явно, разделители берутся из настроек информационной базы или операционной системы. На разных компьютерах одно и то же число может выводиться с запятой или точкой. Для печатных форм и обменов разделители лучше фиксировать явно.

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

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

Вывод нулевого значения
Норма

Показывается заданное представление (0,00 или прочерк)

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

Ноль отображается иначе, чем задано в ЧН

Крупное число с разрядами
Норма

Разряды сгруппированы по три, разделитель читаемый

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

Разделители отсутствуют или число обрезано

Дробная часть
Норма

Ровно столько знаков, сколько задано в ЧДЦ

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

Больше или меньше знаков, пропали нули

Строка для файла обмена
Норма

Нет пробелов, разделитель соответствует формату

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

В числе пробелы или неподходящий разделитель

Если формат не применяется, проверьте последовательно: задан ли он у того элемента, который реально выводится (в динамических списках и СКД поле может переопределяться настройками), не перекрывает ли его условное оформление, и не выводится ли значение уже как строка, сформированная ранее в коде.

Итог

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

Формат влияет только на отображение, а не на хранимое значение. Для форм и отчётов используйте свойство «Формат», для строк в коде — функцию Формат() с параметрами ЧЦ, ЧДЦ, ЧГ, ЧН. Для файлов обмена отключайте группировку и фиксируйте разделители явно.

Частые вопросы

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

Добавьте в форматную строку параметр ЧГ=0 — группировка разрядов отключится, и число выведется слитно. Если пробелы нужно убрать из уже готовой строки, используйте СтрЗаменить(Строка; " "; ""), учитывая, что 1С вставляет именно неразрывный пробел.

Почему число обрезается, хотя в формате задана большая длина?

Форматная строка не может вывести больше знаков, чем позволяет тип данных. Проверьте свойства «Длина» и «Точность» у реквизита в конфигураторе: если точность равна 0, дробная часть отбрасывается ещё при записи, и никакой формат её не вернёт.

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

Укажите явно параметр ЧРД=. в форматной строке. Без него разделитель берётся из региональных настроек базы, и результат может отличаться на разных рабочих местах.

Можно ли задать разный формат для одной колонки в разных строках отчёта?

Да, в отчётах на СКД это делается через условное оформление: создаётся элемент оформления с условием на поле и устанавливается параметр «Формат». В обычных формах потребуется программная обработка при выводе строки.

Как вывести отрицательное число в скобках без минуса?

Используйте параметр ЧО=2 в форматной строке. Значение ЧО=1 выводит модуль числа без знака, ЧО=0 — стандартный вывод с минусом. Проверяйте результат на тестовом отрицательном значении, так как поведение зависит от версии платформы.

Работает ли формат числа в мобильном клиенте и веб-клиенте?

Да, форматная строка обрабатывается платформой одинаково во всех клиентах. Различия возможны только в разделителях по умолчанию, если они не заданы явно — они зависят от региональных настроек сервера или клиентского окружения.