Форматная строка 1С: ЧДЦ, ЧГ, ДФ и другие параметры на примерах

· 10 мин

Содержание

Формат данных в 1С меняют форматной строкой: в коде — функцией Формат(Значение, "ЧДЦ=2; ЧГ=0"), в конфигураторе — свойствами Формат и Формат редактирования у реквизита или поля формы, в макете — свойством ячейки Формат, в отчёте на СКД — параметром оформления Формат. Синтаксис строки везде один и тот же, поэтому, разобравшись с ним один раз, вы измените формат отображения данных в любом месте 1С 8.3.

Тема общая для платформы: всё ниже одинаково работает в Бухгалтерии, ЗУП, УТ и любой самописной конфигурации. Отдельно разберём то, что форматом изменить нельзя, — формат хранения, — и ошибки, на которых спотыкаются чаще всего: пробел внутри числа, пустая строка вместо нуля, перепутанные М и м в дате.

Где задаётся формат: от свойств реквизита до региональных установок

Формат в 1С живёт на четырёх уровнях. Нижний уровень переопределяется верхним.

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

Хранение и отображение — разные вещи

Форматная строка меняет только представление. Значение в базе остаётся прежним. Если у реквизита тип Число(15, 2), то ЧДЦ=0 покажет 1 235, но в базе так и останется 1234,56.

Формат хранения задаёт тип реквизита в конфигураторе:

  • 🔢 Число — длина и точность. Число(15, 2) — 15 знаков всего, 2 после запятой. Значение 1234,567 при записи округлится до 1234,57.
  • 📅 Дата — квалификатор «Состав даты»: Дата, Время или Дата и время.
  • 🔤 Строка — длина и признак фиксированной или переменной длины.

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

Региональные установки базы

Если во всей базе даты выводятся «не так», дело обычно в региональных установках, а не в коде. Их открывают в конфигураторе через Администрирование → Региональные установки информационной базы. Там выбирают язык (страну) и при необходимости переопределяют разделители и форматы даты и времени.

На отдельный сеанс влияют язык пользователя и параметр запуска /VL, например /VLru_RU. В коде локаль можно задать прямо в форматной строке параметром Л: Формат(Дата, "Л=en_US; ДЛФ=ДД").

Функция Формат в коде и в запросах

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

Сумма = 1234567.891;
Текст = Формат(Сумма, "ЧДЦ=2");              // "1 234 567,89"
Текст = Формат(Сумма, "ЧДЦ=2; ЧГ=0");        // "1234567,89"
Текст = Формат(Сумма, "ЧДЦ=2; ЧРД=.; ЧГ=0"); // "1234567.89"

Удобнее не писать строку вручную, а вызвать конструктор форматной строки: в модуле наберите Формат(Сумма, ""), поставьте курсор внутрь кавычек и выберите в контекстном меню пункт конструктора форматной строки. Он покажет вкладки «Число», «Дата», «Булево» и пример результата.

Чем заменить Формат в языке запросов

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

  • ВЫРАЗИТЬ(Поле КАК ЧИСЛО(15, 0)) — отбросить дробную часть при приведении;
  • ГОД(Дата), МЕСЯЦ(Дата), ДЕНЬ(Дата) — разобрать дату на части;
  • НАЧАЛОПЕРИОДА(Дата, МЕСЯЦ) — свести даты к месяцу для группировки.

Строку вида "2026-01" собирать прямо в запросе неудобно и медленно. Получите НАЧАЛОПЕРИОДА в выборку, а представление сделайте через Формат(Выборка.Период, "ДФ=yyyy-MM").

Подстановка значений в текст: СтрШаблон

Для сборки фраз из значений служит СтрШаблон() (платформа 8.3.6 и новее). Функции с названием «СтрФормат» во встроенном языке нет. Числа внутри шаблона лучше заранее пропустить через Формат, иначе в них попадут разделители групп:

Текст = СтрШаблон("Счёт № %1 от %2 на сумму %3 руб.",
    Формат(НомерСчета, "ЧГ=0"),
    Формат(ДатаСчета, "ДЛФ=Д"),
    Формат(Сумма, "ЧДЦ=2; ЧН=0,00"));

Как изменить формат числа и денежной суммы

Все числовые параметры начинаются с буквы «Ч». Ниже — полный рабочий набор.

ПараметрЧто делаетПримерРезультат для 1234,5
ЧЦВсего знаков в числеЧЦ=10; ЧДЦ=21 234,50
ЧДЦЗнаков после запятой, с округлениемЧДЦ=01 235
ЧРДРазделитель дробной частиЧРД=.1 234.5
ЧРГРазделитель групп разрядовЧРГ=' '1 234,5
ЧГГруппировка разрядов, 0 — без группЧГ=01234,5
ЧНТекст для нулевого значенияЧН=—для нуля: —
ЧВНВыводить ведущие нулиЧЦ=6; ЧВН=; ЧГ=0для 42: 000042
ЧССдвиг разрядов (деление на 10ⁿ)ЧС=3; ЧДЦ=11,2
ЧОВид отрицательных чиселЧО=0для −1234,5: (1 234,5)
ЧФШаблон вывода, Ч — место числаЧФ='Ч руб.'1 234,5 руб.

Варианты отрицательных чисел (ЧО)

  • ЧО=0 — (1,1), бухгалтерская запись в скобках;
  • ЧО=1 — -1,1;
  • ЧО=2 — - 1,1;
  • ЧО=3 — 1,1-;
  • ЧО=4 — 1,1 -.

Готовые строки для частых задач

// Сумма в рублях с копейками, ноль показывается как 0,00
Формат(Сумма, "ЧДЦ=2; ЧН=0,00")

// ИНН, штрихкод, номер для выгрузки — без пробелов
Формат(Код, "ЧГ=0")

// Отчёт в тысячах рублей с одним знаком: 1 234 567 → "1 234,6"
Формат(Сумма, "ЧС=3; ЧДЦ=1")

// Процент с одним знаком
Формат(Доля * 100, "ЧДЦ=1; ЧФ='Ч %'")

Сумма прописью

Для «Тысяча двести тридцать четыре рубля 50 копеек» служит отдельная функция ЧислоПрописью(). Третий параметр — предмет исчисления: формы слова для 1, 2 и 5, род, затем то же для дробной части и число знаков дробной части.

Пропись = ЧислоПрописью(1234.5, "Л=ru_RU; ДП=Истина",
    "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2");

Параметр ДП=Истина выводит дробную часть цифрами («50 копеек»), а не словами.

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

Даты форматируют двумя параметрами. ДЛФ берёт готовый локальный формат, ДФ позволяет собрать свой из символов.

Готовые форматы ДЛФ

СтрокаРезультат для 15.01.2026 14:05:09
ДЛФ=Д15.01.2026
ДЛФ=ДД15 января 2026 г.
ДЛФ=В14:05:09
ДЛФ=ДВ15.01.2026 14:05:09

Символы ДФ

  • 📅 дд — день с ведущим нулём, д — без него; ддд и дддд — краткое и полное название дня недели;
  • 📅 ММ — месяц числом, МММ — сокращённое название, ММММ — полное;
  • 📅 гг и гггг — год двумя и четырьмя цифрами; к — номер квартала;
  • ⏰ ЧЧ — часы 0–23, чч — часы 1–12, мм — минуты, сс — секунды.

Латинские символы тоже работают: dd.MM.yyyy HH:mm:ss.

Регистр решает всё. Большая М — месяц, маленькая м — минуты. Строка ДФ=дд.мм.гггг выдаст 15.05.2026 для даты 15 января в 14:05: вместо месяца подставятся минуты.

Формат(ТекущаяДата(), "ДФ=yyyyMMdd")              // "20260115" — для имени файла
Формат(ТекущаяДата(), "ДФ='гггг-ММ-дд ЧЧ:мм'")      // "2026-01-15 14:05"
Формат(ТекущаяДата(), "ДФ='к ""квартал"" гггг'")     // "1 квартал 2026"
Формат(ДатаДокумента, "ДЛФ=Д; ДП='не указана'")     // для пустой даты

Параметр ДП задаёт текст для пустой даты 01.01.0001. Без него Формат вернёт пустую строку, и в печатной форме останется пустое место вместо «не указана».

Обратное преобразование: строка в дату

Функция Дата() понимает строку только вида ГГГГММДДччммсс или ГГГГММДД. Строку "15.01.2026" придётся разобрать:

Стр = "15.01.2026";
Д = Дата(Число(Сред(Стр, 7, 4)), Число(Сред(Стр, 4, 2)), Число(Лев(Стр, 2)));

Сред(Стр, 7, 4) берёт символы с седьмого по десятый — год. Позиции считаются с единицы.

Формат строк, булевых значений и спецсимволов

У строк форматной строки нет: их «форматируют» функциями.

ЗадачаФункция
Убрать пробелы по краямСокрЛП(Стр)
РегистрВРег(), НРег(), ТРег() (каждое слово с большой буквы)
Заменить фрагментСтрЗаменить(Стр, "старое", "новое")
Дополнить нулями слеваФормат(Число, "ЧЦ=6; ЧВН=; ЧГ=0") или цикл с "0" + Стр
Разбить по разделителюСтрРазделить(Стр, ";")
Перевод строки и табуляцияСимволы.ПС, Символы.Таб
Неразрывный пробелСимволы.НПП

Булево значение форматируют параметрами БЛ (для Ложь) и БИ (для Истина):

Формат(Документ.Проведен, "БЛ=Нет; БИ=Да")   // "Да"

Строка в число без ошибок

Число("1 234,50") вызовет ошибку преобразования. Разделитель групп в 1С — неразрывный пробел, поэтому обычный СтрЗаменить(Стр, " ", "") его не уберёт. Чистите оба:

Стр = СтрЗаменить(Стр, Символы.НПП, "");
Стр = СтрЗаменить(Стр, " ", "");
Стр = СтрЗаменить(Стр, ",", ".");
Значение = Число(Стр);

Для обмена с внешними системами надёжнее XMLСтрока(Число) и XMLЗначение(Тип("Число"), Стр): этот формат не зависит от региональных настроек — без групп, с точкой.

Формат в макетах, формах и отчётах на СКД

Ячейка табличного документа

В макете печатной формы выделите ячейку с параметром, откройте палитру свойств и заполните свойство Формат. Кнопка с многоточием в поле вызывает тот же конструктор форматной строки.

Из кода формат ячейки задают так:

Область = Макет.ПолучитьОбласть("Строка");
Область.Параметры.Сумма = Выборка.Сумма;
Область.Области.Сумма.Формат = "ЧДЦ=2; ЧН=0,00";

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

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

Поле на управляемой форме

У элемента формы есть два свойства:

  • Формат — как значение выглядит, когда поле не редактируется;
  • ФорматРедактирования — как оно выглядит в момент ввода.

Типичный пример — поле суммы, где при вводе нужно видеть все четыре знака, а в остальное время два. Из кода: Элементы.Сумма.Формат = "ЧДЦ=2". Для колонки динамического списка формат задают так же — свойствами колонки-элемента.

Отчёт на системе компоновки данных

В схеме компоновки формат задают тремя способами:

  1. 📋 На вкладке «Наборы данных» — в колонке Оформление у поля откройте параметр Формат. Действует во всех вариантах отчёта.
  2. 🎨 В условном оформлении варианта — на вкладке «Настройки» добавьте условное оформление, выберите поля и в оформлении задайте Формат. Удобно для «отрицательные — в скобках» или «нули — прочерком».
  3. 👤 Пользователем — в режиме Предприятия через настройки отчёта, раздел условного оформления. Пользователь поменяет формат без программиста.

Если цифры ресурса в отчёте выводятся с лишними знаками после запятой, проверьте оба места: оформление поля в наборе и формат ресурса. Условное оформление варианта имеет приоритет над оформлением поля.

Диагностика: выберите симптом

Частые ошибки при изменении формата

Самая массовая ошибка — неявное преобразование числа в строку. Выражение "Документ № " + 1500 даст "Документ № 1 500": платформа вызывает Строка() с региональным форматом, а он группирует разряды. В кодах, номерах, путях к файлам и запросах к внешним сервисам всегда явно пишите Формат(Число, "ЧГ=0").

Вторая по частоте — ожидание, что ЧДЦ изменит само значение. Формат только округляет отображение. Если дальше считать по строке, получится расхождение в копейках. Для вычислений округляйте число функцией Окр(Число, 2), а Формат применяйте в последний момент, при выводе.

Ещё несколько ловушек:

  • ❌ Двойные кавычки внутри строки формата. В строковом литерале 1С кавычку удваивают: "ДФ='к ""кв."" гггг'". Одинарная кавычка внутри — это граница значения параметра.
  • ❌ Формат вместо типа. Если в документе нужны три знака после запятой, а у реквизита тип Число(15, 2), форматная строка ЧДЦ=3 покажет ноль в третьем разряде. Третий знак не сохранится — менять нужно точность типа.
  • ❌ Разный вид у разных пользователей. Если у одного дата 15.01.2026, а у другого 1/15/2026, сравните язык пользователя и параметр /VL в ярлыке запуска.
Как убрать пробелы между разрядами числа в 1С?
Используйте Формат(Число, “ЧГ=0”). Параметр отключает группировку разрядов, и 1234567 выводится без пробелов.
Почему Формат() возвращает пустую строку для нуля?
Так задумано: по умолчанию ноль представляется пустой строкой. Чтобы выводился ноль, добавьте параметр ЧН, например “ЧДЦ=2; ЧН=0,00”.
Как вывести название месяца в родительном падеже?
Проще всего через ДЛФ=ДД: результат вида «15 января 2026 г.». Для названия месяца отдельно используйте ДФ=ММММ.
Можно ли задать формат прямо в тексте запроса?
Нет, функции Формат в языке запросов нет. Получите значение в выборку и отформатируйте в коде, макете или в оформлении СКД.
Как сделать формат даты на английском?
Добавьте в форматную строку параметр локали: Формат(Дата, “Л=en_US; ДЛФ=ДД”). Названия месяцев и порядок частей даты возьмутся из английской локали.