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