Форматная строка 1С: ЧДЦ, ЧГ, ДФ и другие параметры на примерах
Содержание
Формат данных в 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; ЧДЦ=2 | 1 234,50 |
ЧДЦ | Знаков после запятой, с округлением | ЧДЦ=0 | 1 235 |
ЧРД | Разделитель дробной части | ЧРД=. | 1 234.5 |
ЧРГ | Разделитель групп разрядов | ЧРГ=' ' | 1 234,5 |
ЧГ | Группировка разрядов, 0 — без групп | ЧГ=0 | 1234,5 |
ЧН | Текст для нулевого значения | ЧН=— | для нуля: — |
ЧВН | Выводить ведущие нули | ЧЦ=6; ЧВН=; ЧГ=0 | для 42: 000042 |
ЧС | Сдвиг разрядов (деление на 10ⁿ) | ЧС=3; ЧДЦ=1 | 1,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". Для колонки динамического списка формат задают так же — свойствами колонки-элемента.
Отчёт на системе компоновки данных
В схеме компоновки формат задают тремя способами:
- 📋 На вкладке «Наборы данных» — в колонке
Оформлениеу поля откройте параметрФормат. Действует во всех вариантах отчёта. - 🎨 В условном оформлении варианта — на вкладке «Настройки» добавьте условное оформление, выберите поля и в оформлении задайте
Формат. Удобно для «отрицательные — в скобках» или «нули — прочерком». - 👤 Пользователем — в режиме Предприятия через настройки отчёта, раздел условного оформления. Пользователь поменяет формат без программиста.
Если цифры ресурса в отчёте выводятся с лишними знаками после запятой, проверьте оба места: оформление поля в наборе и формат ресурса. Условное оформление варианта имеет приоритет над оформлением поля.
Частые ошибки при изменении формата
Самая массовая ошибка — неявное преобразование числа в строку. Выражение "Документ № " + 1500 даст "Документ № 1 500": платформа вызывает Строка() с региональным форматом, а он группирует разряды. В кодах, номерах, путях к файлам и запросах к внешним сервисам всегда явно пишите Формат(Число, "ЧГ=0").
Вторая по частоте — ожидание, что ЧДЦ изменит само значение. Формат только округляет отображение. Если дальше считать по строке, получится расхождение в копейках. Для вычислений округляйте число функцией Окр(Число, 2), а Формат применяйте в последний момент, при выводе.
Ещё несколько ловушек:
- ❌ Двойные кавычки внутри строки формата. В строковом литерале 1С кавычку удваивают:
"ДФ='к ""кв."" гггг'". Одинарная кавычка внутри — это граница значения параметра. - ❌ Формат вместо типа. Если в документе нужны три знака после запятой, а у реквизита тип
Число(15, 2), форматная строкаЧДЦ=3покажет ноль в третьем разряде. Третий знак не сохранится — менять нужно точность типа. - ❌ Разный вид у разных пользователей. Если у одного дата
15.01.2026, а у другого1/15/2026, сравните язык пользователя и параметр/VLв ярлыке запуска.