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

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

Что такое форматная строка в 1С и как её использовать

Что такое форматная строка в 1С, как работает функция Формат(), какие параметры использовать для чисел, дат и булево. Примеры, ошибки и проверка результатов.

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

Чаще всего форматная строка применяется через встроенную функцию Формат(Значение, ФорматнаяСтрока), а также в свойствах элементов форм, полей отчётов СКД, макетов печатных форм и надписей. Понимание её синтаксиса нужно любому, кто настраивает печатные формы, отчёты или дорабатывает конфигурацию: без корректного форматирования цена может вывестись как «1234.5» вместо «1 234,50», а дата — в американском формате.

Материал дальше разбирает синтаксис функции Формат(), параметры для чисел, дат и булево, типичные ошибки и способы проверить результат до того, как он попадёт к пользователю или в печатный документ.

Как устроена функция Формат() и где задаётся форматная строка

Базовый синтаксис: Формат(Значение, ФорматнаяСтрока). Первый параметр — значение примитивного типа (число, дата, булево), второй — строка с параметрами, разделёнными точкой с запятой. Результат — строка, готовая к выводу в сообщение, макет или поле отчёта.

Пример: Формат(12345.678, "ЧЦ=12; ЧДЦ=2; ЧРД=.; ЧРГ=' '") вернёт строку вида «12 345.68». Если форматную строку не указать, платформа применит формат по умолчанию, зависящий от региональных настроек информационной базы или сеанса.

Кроме явного вызова в коде, форматная строка задаётся декларативно: в свойстве «Формат» поля ввода и надписи управляемой формы, в свойствах ресурсов и полей в схеме компоновки данных (закладка «Наборы данных» или «Настройки» → «Оформление»), в параметрах макетов табличных документов. Логика параметров везде одинаковая, поэтому освоив её один раз, вы примените знания в любом месте конфигурации.

Форматирование чисел: основные параметры

Для чисел чаще всего используются параметры ЧЦ (общая длина числа с учётом разделителей и знака), ЧДЦ (число знаков дробной части), ЧРД (разделитель дробной части), ЧРГ (разделитель групп разрядов) и ЧН (представление нуля). Параметры можно комбинировать, порядок значения не имеет.

Практический пример для вывода суммы: Формат(СуммаДокумента, "ЧЦ=15; ЧДЦ=2"). Если количество разрядов в значении превышает ЧЦ, платформа выведет строку из символов «#» — это сигнал, что ширины формата не хватает. Поэтому ЧЦ стоит задавать с запасом, особенно для сумм в валютах с крупными номиналами.

Параметр ЧН= удобен, когда ноль нужно скрыть: Формат(Остаток, "ЧЦ=10; ЧДЦ=3; ЧН=") выведет пустую строку вместо «0,000». Для отрицательных чисел есть параметр ЧО, управляющий представлением знака (минус, скобки). По умолчанию в русской локали разделитель групп — неразрывный пробел, что важно учитывать при сравнении строк: визуально «1 234» и «1234» отличаются.

Форматирование дат и времени

Для дат используются параметры ДФ (формат даты) и ДЛФ (локальный формат даты). Внутри ДФ задаётся шаблон из букв: д — день, М — месяц, г — год, ч — часы, м — минуты, с — секунды. Например, Формат(ТекущаяДатаСеанса(), "ДФ=dd.MM.yyyy") даёт привычный вид «05.03.2026», а "ДФ='дд ММММ гггг'" — дату с названием месяца.

Параметр ДЛФ принимает значения D (краткая дата), DD (полная дата), T (время), DT (дата и время) и опирается на региональные установки. Он удобен, когда формат должен автоматически подстраиваться под локаль пользователя, но менее предсказуем для печатных форм, где нужен строго фиксированный вид.

Отдельный частый случай — пустая дата. По умолчанию пустая дата выводится как «01.01.0001», что в отчёте выглядит ошибкой. Параметр ДП задаёт представление пустой даты: Формат(ДатаОплаты, "ДЛФ=D; ДП='не указана'") выведет понятный текст вместо нулевой даты.

1c
Формат(ДатаДокумента, "ДФ='дд ММММ гггг';
 ДП='—'"

Форматирование булево и использование в отчётах и формах

Для булевых значений параметр БЛ задаёт представление «Ложь», а БИ — «Истина»: Формат(Проведен, "БЛ=Нет; БИ=Да"). Это полезно в отчётах, где стандартные «Истина/Ложь» непонятны пользователю.

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

В запросах функция форматирования отсутствует: форматирование всегда выполняется на этапе вывода — в коде, в макете или в настройках отчёта. Попытка «отформатировать» значение в запросе через ПРЕДСТАВЛЕНИЕ() даёт строку, но лишает возможности сортировки и группировки по исходному значению, поэтому так делать не стоит.

Где задавать формат

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

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

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

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

Настройки оформления СКД

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

Как проверить результат и где искать ошибку

Самый быстрый способ проверить форматную строку — выполнить её в консоли кода или через «Вычислить выражение» (Shift+F9) в отладчике: подставьте реальное значение и посмотрите результат до вывода в макет. Это занимает секунды и исключает сюрпризы на печатной форме.

Проверяйте три класса проблем: обрезание числа (решётки вместо цифр), неправильная локаль (точка вместо запятой в дробной части) и непредусмотренные пустые значения (01.01.0001 или «0,00» там, где должно быть пусто). Каждая из них устраняется своим параметром: ЧЦ, ЧРД/Л, ДП/ЧН соответственно.

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

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

Вывод суммы
Норма

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

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

Строка из символов # или обрезанные копейки

Вывод даты
Норма

Формат соответствует шаблону, пустая дата заменена понятным текстом

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

01.01.0001 в отчёте или американский порядок месяц/день

Вывод нуля
Норма

Ноль скрыт или показан осознанно

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

Нули загромождают отчёт там, где значения нет

Типичные ошибки при работе с форматными строками

Главная ошибка — путать форматирование с округлением данных. Функция Формат() округляет только отображение: при ЧДЦ=2 значение 1.005 может вывестись как «1,00» из-за особенностей двоичного представления, но в базе останется прежним. Если нужно реальное округление для расчётов, используйте Окр() до форматирования.

Вторая частая проблема — сравнение отформатированных строк вместо исходных значений. Строки «1 234,50» и «1234,5» при сравнении не равны, хотя числа одинаковы. Всегда сравнивайте сами значения, а форматируйте только в момент вывода пользователю.

Третья ошибка — жёсткая привязка к разделителям при обмене данными. Форматная строка предназначена для человека, а не для машинного обмена: в XML, JSON и файлах выгрузки числа и даты передаются в каноническом виде, и применять к ним Формат() с локальными разделителями нельзя — принимающая система такое значение не распарсит.

Типичные ошибки
01
Недостаточный ЧЦ — число превращается в решётки на печатной форме
02
Форматирование вместо округления — копеечные расхождения в итогах из-за двоичного представления дробей
03
Сравнение отформатированных строк вместо исходных значений — ложные неравенства из-за разделителей
04
Формат() при выгрузке в XML/CSV — принимающая система не разбирает локализованные числа
05
Забытый параметр ДП — пустая дата выводится как 01.01.0001

Практические рекомендации и ограничения

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

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

Итог

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

Форматная строка управляет только отображением, не меняя данные. Числа настраиваются через ЧЦ/ЧДЦ/ЧРД/ЧН, даты — через ДФ/ДЛФ/ДП, булево — через БЛ/БИ. Проверяйте результат в отладчике, округляйте через Окр(), а для обмена данными формат не применяйте.

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

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

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

Почему Формат() с ЧДЦ=2 выводит 1,00 вместо 1,01 для значения 1.005?

Дробные числа хранятся в двоичном виде, и 1.005 фактически чуть меньше десятичного значения, поэтому округление при выводе идёт вниз. Если нужен предсказуемый результат, сначала примените Окр(Значение, 2), а затем форматируйте.

Можно ли использовать форматную строку в запросе?

Нет, в языке запросов функции форматирования нет. Форматирование выполняется на этапе вывода: в коде после выборки, в настройках СКД или в макете. Использование ПРЕДСТАВЛЕНИЕ() в запросе для этой цели ломает сортировку и группировку.

Как вывести пустую строку вместо нулевого числа?

Добавьте в форматную строку параметр ЧН= без значения: Формат(Количество, "ЧЦ=10; ЧДЦ=2; ЧН="). Нулевое значение тогда отобразится пустой строкой, а остальные числа — по заданным правилам.

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

При отсутствии явных параметров ЧРД и ЧРГ платформа использует региональные настройки сеанса, которые зависят от настроек операционной системы и информационной базы. Чтобы вид был одинаковым везде, задавайте разделители в форматной строке явно или используйте параметр Л с нужным кодом локализации.

Можно ли форматировать ссылку на документ через Формат()?

Нет, Формат() работает только с числами, датами и булево. Для изменения представления ссылочных объектов используются обработчики событий формирования представления в модуле менеджера объекта или поле «Представление» в настройках.