Разработка и Конфигурация · 12 мин
Как изменить формат числа в 1С
Как изменить формат числа в 1С: настройка форматной строки в конфигураторе, функция Формат(), форматирование в отчетах СКД, типичные ошибки и примеры кода.
Формат числа в 1С определяет, как значение выглядит для пользователя: сколько знаков после запятой отображается, разделяются ли тысячи пробелами, как выводится ноль и отрицательные значения. При этом само хранимое значение не меняется — формат влияет только на представление. Это важно понимать, чтобы не путать «округление при показе» с реальным округлением данных.
Изменить формат числа можно несколькими способами: через свойство «Формат» в конфигураторе, программно функцией Формат(), в настройках отчета на СКД, а также в макетах печатных форм. Выбор способа зависит от того, где именно нужно поменять отображение — в форме документа, в отчете или в печатном документе.
Ниже разобраны все основные варианты с примерами форматных строк, готовым кодом и типичными ошибками, которые приводят к неожиданному виду чисел.
Что такое форматная строка и как она устроена
Форматная строка — это набор параметров, записанных через точку с запятой, которые управляют отображением значения. Для чисел основные параметры:
- ЧЦ — общая длина числа (количество позиций, включая разделитель дробной части);
- ЧДЦ — количество знаков после запятой;
- ЧРГ — символ-разделитель групп разрядов (например, пробел для отображения «1 234 567»);
- ЧН — строка, которая выводится вместо нулевого значения;
- ЧО — смещение разрядов (деление числа на 1000, 1000000 и т.д. при отображении);
- ЧС — сдвиг разрядов (аналогично, но с другим поведением округления).
Пример форматной строки: ЧЦ=15; ЧДЦ=2; ЧРГ=" ". Она означает: общая длина 15 символов, два знака после запятой, группы разрядов разделяются пробелом. Число 1234567,8 будет показано как «1 234 567,80».
Важно: если фактическая длина числа превышает значение ЧЦ, 1С отобразит число полностью — ограничение не обрезает значение, а влияет в основном на выравнивание и дополнение. А вот ЧДЦ реально округляет отображаемое значение до указанного числа знаков.
Как изменить формат числа в конфигураторе
Если нужно настроить отображение числа в форме документа, справочника или в табличной части, формат задается в свойствах соответствующего элемента. Это самый простой способ, не требующий программирования.
- 1Откройте конфигуратор и найдите нужный объект (документ, справочник, отчет).
- 2Откройте форму объекта и выделите поле ввода или колонку таблицы, для которой меняется формат.
- 3В палитре свойств найдите свойство «Формат» и нажмите кнопку выбора.
- 4В конструкторе форматной строки задайте длину, точность и разделитель групп либо введите параметры вручную.
- 5Для реквизита объекта (а не элемента формы) аналогичное свойство «Формат» есть в палитре свойств самого реквизита.
- 6Обновите конфигурацию базы данных (F7) и проверьте отображение в режиме 1С:Предприятие.
Есть нюанс: свойство «Формат» у элемента формы имеет приоритет над форматом реквизита. Если вы задали формат и там, и там, сработает настройка элемента формы. Поэтому, когда изменение «не применяется», первым делом проверьте, не переопределен ли формат на уровне формы.
Также формат можно задать для реквизита в самом метаданном — тогда он будет действовать по умолчанию во всех формах, где реквизит выводится без собственной настройки формата. Это удобно для единообразия: например, чтобы цены во всех документах показывались с двумя знаками после запятой.
Как изменить формат числа программно
Когда формат нужно формировать динамически — например, подставлять число в текст письма, наименование документа или заголовок отчета — используется встроенная функция Формат(). Она принимает значение и форматную строку, а возвращает готовый текст.
Сумма = 1234567.891;
Результат = Формат(Сумма, "ЧЦ=15; ЧДЦ=2; ЧРГ=' '");
// Результат: "1 234 567,89"
БезНуля = Формат(0, "ЧН='-'");
// Результат: "-"
ВТысячах = Формат(1500000, "ЧС=3");
// Результат: "1500" (число показано в тысячах)
Обратите внимание на кавычки внутри строки: в коде на встроенном языке внутренние кавычки форматной строки удваиваются либо используются одинарные кавычки внутри двойных, как показано в примере. Ошибка в кавычках — самая частая причина, почему формат «не работает» при программной установке.
Функцию Формат() удобно применять и в запросах через представление, но чаще форматирование делается уже при выводе результата — в макете, в сообщении пользователю или в строковых реквизитах.
СуммаПрописью = Формат(ИтоговаяСумма, "ЧЦ=17; ЧДЦ=2; ЧРГ=' '; ЧН='0,00'");
Сообщить("Итого к оплате: " + СуммаПрописью + " руб.");Как изменить формат числа в отчете на СКД
В отчетах, построенных на системе компоновки данных, формат задается в нескольких местах, и у них разный приоритет. Первое место — закладка «Наборы данных» в схеме компоновки: у каждого поля есть свойство «Оформление», где можно задать формат для поля целиком.
Второе место — вкладка «Настройки» в самой схеме или уже в режиме 1С:Предприятие в настройках отчета. Там в разделе «Условное оформление» или через параметр «Формат» у выбранных полей пользователь с правами настройки может поменять отображение без доработки конфигурации.
Практический порядок такой: откройте схему компоновки данных отчета, выберите набор данных, найдите нужное числовое поле, в колонке «Оформление» откройте настройку и укажите формат, например ЧДЦ=2; ЧРГ=' '. После этого поле будет выводиться с заданным форматом во всех вариантах отчета, если вариант не переопределяет оформление.
Если отчет типовой и изменять его в конфигураторе нельзя (конфигурация на поддержке), воспользуйтесь пользовательскими настройками: «Ещё → Изменить вариант отчета», там в оформлении полей можно задать формат и сохранить вариант. Это безопасный путь без снятия конфигурации с поддержки.
Формат числа в макетах и печатных формах
В табличных макетах печатных форм у ячейки есть свойство «Формат», которое работает аналогично: если в ячейку выводится числовой параметр, платформа отформатирует его по заданной строке. Для этого в конфигураторе откройте макет, выделите ячейку, в палитре свойств найдите «Формат» и укажите нужные параметры.
Условие: свойство работает, когда в ячейке используется заполнение «Параметр» или «Шаблон» с числовым значением. Если число подставляется в шаблон как часть текста («Сумма: [Сумма] руб.»), формат ячейки к вложенному параметру может не примениться — тогда форматируйте значение заранее функцией Формат() в коде и передавайте уже строку.
Для сумм в печатных формах принято выводить два знака после запятой и разделитель разрядов: ЧЦ=17; ЧДЦ=2; ЧРГ=' '. Для количества обычно оставляют до трех знаков: ЧЦ=15; ЧДЦ=3.
Где задавать формат
Подходит для постоянного отображения в формах документов и справочников. Ограничение: переопределяется форматом элемента формы.
Подходит для строк, сообщений, печатных форм с шаблонами. Ограничение: результат — строка, с ней нельзя выполнять вычисления.
Подходит для отчетов, действует во всех вариантах. Ограничение: требует доступа к схеме компоновки.
Подходит для типовых отчетов без доработки конфигурации. Ограничение: действует только в рамках сохраненного варианта.
Типичные ошибки и как их избежать
Первая распространенная ситуация: пользователь ждет, что после установки ЧДЦ=2 число округлится и в данных. На деле округляется только отображение — в базе и в расчетах остается полное значение. Если нужно реальное округление, используйте функцию Окр(), а не формат.
Вторая ошибка — задание формата для реквизита с типом «Строка». Форматные параметры чисел не действуют на строки, даже если в строке записано число. Сначала приведите значение к числу через Число(), а затем форматируйте.
Третья проблема — конфликт настроек. Формат может быть задан на уровне реквизита, элемента формы, условного оформления и кода одновременно. При несоответствии проверяйте по цепочке от более приоритетного к менее приоритетному: элемент формы и условное оформление обычно перекрывают настройки реквизита.
Как проверить результат
После настройки формата проверьте отображение на нескольких контрольных значениях: ноль, большое число с разрядами, число с длинной дробной частью и отрицательное значение. Это покроет все параметры форматной строки.
Как проверить результат
Отображается как «1 234 567,89»
Выводится без разделителей или с большим числом знаков — формат не применился
Выводится заданная замена, например прочерк
Показывается «0» — параметр ЧН не сработал или не задан
Минус отображается корректно, разряды разделены
Минус «съедает» разряд или число выводится в скобках неожиданно
Итоги форматируются так же, как детальные записи
Итоги выглядят иначе — у итогового поля отдельное оформление
Если формат задан, но внешний вид не меняется, обновите форму (закройте и откройте заново), а при изменениях в конфигураторе — выполните обновление конфигурации базы данных. В тонком и веб-клиенте иногда помогает перезапуск сеанса, так как настройки форм могут кэшироваться.
Удобный прием: держите под рукой «эталонную» форматную строку для денежных сумм и количества и используйте ее во всех доработках. Это избавляет от ситуации, когда в одном отчете суммы с двумя знаками, в другом — с четырьмя, а пользователи воспринимают это как расхождение данных.
Частые вопросы
Как убрать копейки и показывать только целые рубли?
Установите в форматной строке ЧДЦ=0, например: ЧЦ=12; ЧДЦ=0; ЧРГ=' '. Число 1234,56 отобразится как «1 235» — произойдет округление при показе. Само значение в базе останется с копейками; если нужно округлить данные, примените функцию Окр(Значение, 0).
Почему формат, заданный в конфигураторе, не виден в режиме 1С:Предприятие?
Чаще всего не выполнено обновление конфигурации базы данных (клавиша F7 в конфигураторе) либо формат переопределен на уровне элемента формы или условного оформления. Проверьте свойство «Формат» у конкретного поля ввода в форме — оно имеет приоритет над форматом реквизита.
Можно ли изменить формат числа без доступа к конфигуратору?
Да, в отчетах на СКД пользователь с правами на изменение варианта может открыть настройки отчета («Ещё → Изменить вариант»), найти нужное поле в оформлении и задать формат. В формах документов без доработки конфигурации изменить формат обычно нельзя.
Как вывести число прописью, например для суммы в договоре?
Форматная строка этого не умеет. Используйте функцию ЧислоПрописью(Значение, "Л=ru_RU", "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2") — она формирует сумму прописью с учетом валюты и падежей.
Чем ЧС отличается от ЧО в форматной строке?
Оба параметра показывают число в тысячах или миллионах, деля его при отображении. ЧС (сдвиг) просто сдвигает разряды с округлением результата, ЧО (смещение) отбрасывает дробную часть после деления. Для отчетов «в тысячах рублей» чаще применяют ЧС=3, но поведение округления стоит проверить на контрольном значении.
Меняет ли формат числа значение при выгрузке в Excel?
Зависит от способа выгрузки. При выводе в табличный документ число сохраняется как число с форматом ячейки, и в Excel оно обычно уходит числом с тем же отображением. Если значение предварительно преобразовано функцией Формат() в строку, в Excel попадет текст, с которым нельзя выполнять вычисления.
Что важно запомнить
Формат числа в 1С меняет только отображение, а не данные. Задавайте его через свойство «Формат» в конфигураторе, функцию Формат() в коде или оформление полей в СКД. Ключевые параметры — ЧЦ, ЧДЦ, ЧРГ и ЧН. Для реального округления используйте Окр(), а типовые отчеты по возможности настраивайте через варианты без изменения конфигурации.