Формат числа 1С: без пробелов, ведущие нули, дробная часть

Дата: 06.10.2026 16:54:16
Встроенный язык
Формат
Строки
Печатные формы
Обмен данными
Комментарий:
0
Платформа:
8.3
Конфигурация:
Любая
Формы:
Любые

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

Задача встречается в трёх местах. В печатных формах суммы выводят с копейками, а нулевые строки — прочерком. В обменах число должно уйти с точкой и без разделителей групп, иначе принимающая сторона его не разберёт. В кодах и номерах нужны ведущие нули: «000042». Ниже — шпаргалка по параметрам и готовые функции для каждого случая. Результаты в комментариях даны для русской локали, платформа 1С 8.3.

Формат числа в 1С: параметры форматной строки

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

ПараметрЧто задаётПримерРезультат
ЧДЦ (NFD)знаков после запятой, с округлениемЧДЦ=21 234 567,89
ЧЦ (ND)всего цифр в целой и дробной части; без ЧДЦ дробь не выводитсяЧЦ=101 234 568
ЧГ (NG)группировка разрядов, 0 — без группЧГ=01234567,891
ЧРГ (NGS)разделитель групп разрядовЧРГ=.1.234.567,891
ЧРД (NDS)разделитель целой и дробной частиЧРД=.1 234 567.891
ЧН (NZ)строка вместо нуля; без параметра ноль — пустая строкаЧН=00
ЧВН (NLZ)ведущие нули до длины ЧЦ, значение параметра не важноЧЦ=6; ЧВН=; ЧГ=0000042
ЧО (NN)вид отрицательного числа, варианты 0–4ЧО=0(1 234,5)
ЧС (NS)сдвиг разрядов: 3 — деление на тысячуЧС=3; ЧДЦ=11 234,6
ЧФ (NF)шаблон, Ч — место числаЧФ="Ч руб."1 234 567,891 руб.
Л (L)язык и страна для стандартного видаЛ=en_US1,234,567.891

Примеры — на числе 1234567,891; для ЧН взят ноль, для ЧВН — 42, для ЧО — минус 1234,5. Варианты ЧО: 0 — «(1,1)», 1 — «-1,1», 2 — «- 1,1», 3 — «1,1-», 4 — «1,1 -». То же в коде:

&НаКлиенте
Процедура ПоказатьФорматыЧисла(Команда)

    Сумма = 1234567.891;

    // Без форматной строки: группы разрядов, запятая, все знаки дроби
    Сообщить(Формат(Сумма));                                // 1 234 567,891
    Сообщить(Формат(Сумма, "ЧДЦ=2"));                       // 1 234 567,89
    Сообщить(Формат(Сумма, "ЧДЦ=0"));                       // 1 234 568

    // Без разделителей групп и с точкой
    Сообщить(Формат(Сумма, "ЧДЦ=2; ЧГ=0"));                 // 1234567,89
    Сообщить(Формат(Сумма, "ЧДЦ=2; ЧГ=0; ЧРД=."));          // 1234567.89

    // Свои разделители: обычный пробел вместо неразрывного, точка в группах
    Сообщить(Формат(Сумма, "ЧДЦ=2; ЧРГ=' '"));              // 1 234 567,89
    Сообщить(Формат(Сумма, "ЧДЦ=2; ЧРГ=."));                // 1.234.567,89

    // ЧГ=3 группирует только три младших разряда, стандартный вид - ЧГ=3,0
    Сообщить(Формат(Сумма, "ЧГ=3"));                        // 1234 567,891

    // ЧЦ - всего цифр; без ЧДЦ дробная часть не выводится
    Сообщить(Формат(Сумма, "ЧЦ=10"));                       // 1 234 568
    Сообщить(Формат(Сумма, "ЧЦ=10; ЧДЦ=2"));                // 1 234 567,89

    // ЧС=3 - в тысячах, ЧО=0 - минус скобками
    Сообщить(Формат(Сумма, "ЧС=3; ЧДЦ=1"));                 // 1 234,6
    Сообщить(Формат(-1234.5, "ЧДЦ=2; ЧО=0"));               // (1 234,50)

    // Ноль: без ЧН получается пустая строка
    Сообщить("[" + Формат(0, "ЧДЦ=2") + "]");               // []
    Сообщить(Формат(0, "ЧН=0"));                            // 0
    Сообщить(Формат(0, "ЧДЦ=2; ЧН='0,00'"));                // 0,00
    Сообщить(Формат(0, "ЧДЦ=2; ЧН='—'"));                   // —

    // Ведущие нули: длину задаёт ЧЦ
    Сообщить(Формат(42, "ЧЦ=6; ЧВН=; ЧГ=0"));               // 000042

    // Шаблон ЧФ: двойные кавычки внутри литерала удваиваются
    Сообщить(Формат(1500, "ЧДЦ=2; ЧФ=""Ч руб."""));         // 1 500,00 руб.

    // Л - разделители по правилам другого языка и страны
    Сообщить(Формат(Сумма, "Л=en_US; ЧДЦ=2"));              // 1,234,567.89

КонецПроцедуры

Что видно из листинга:

  • Разделитель групп — неразрывный пробел (Символы.НПП, код 160). СтрЗаменить(Текст, " ", "") его не уберёт, а обычный пробел задают явно: ЧРГ=' '.
  • Ноль по умолчанию — пустая строка. Строка(0) вернёт «0», Формат(0) — пустую строку, пока не задан ЧН.
  • ЧЦ и ЧДЦ округляют по правилу Окр15как20, но только представление: значение в переменной не меняется.
  • ЧГ=3 — не стандартная группировка. Без второго числа группируются только три младших разряда; стандартный вид — ЧГ=3,0 или параметр не задан.

Стандартный вид зависит от региональных установок информационной базы (в конфигураторе: «Администрирование» → «Региональные установки информационной базы») и языка сеанса. Параметр Л фиксирует язык и страну, например для инвойса иностранному покупателю. Округлить само значение, а не строку, — задача Окр(), режимы разобраны в статье про округление в 1С.

Форматную строку можно не набирать вручную: кнопка «...» у свойства «Формат» в палитре свойств и пункт «Конструктор форматной строки...» в контекстном меню модуля открывают конструктор, который разбирает и готовую строку.

Число в строку без пробелов: коды, файлы и обмен

Когда число склеивают со строкой ("limit=" + 1000) или передают в СтрШаблон(), платформа берёт стандартное представление с разделителями групп. Человеку «1 000» читать удобно, а адресу запроса, строке CSV или коду для внешней системы нужно число без разделителей и с предсказуемым знаком дробной части. Способы перевести число в строку:

Способ1234567,8910-1500
Строка(Ч), "" + Ч, СтрШаблон()1 234 567,8910-1 500
Формат(Ч)1 234 567,891пустая строка-1 500
Формат(Ч, "ЧГ=0")1234567,891пустая строка-1500
Формат(Ч, "ЧН=0; ЧГ=0")1234567,8910-1500
Формат(Ч, "ЧДЦ=2; ЧРД=.; ЧН=0; ЧГ=0")1234567.890-1500.00
XMLСтрока(Ч)1234567.8910-1500

Для XML подходит XMLСтрока(): это представление decimal из схемы XML, оно не зависит от настроек базы, а обратно строку читает XMLЗначение(Тип("Число"), Строка). Обе функции есть на сервере и в тонком клиенте, но не в веб-клиенте. Фиксированного числа знаков XMLСтрока() не держит: 1500,50 станет «1500.5». В JSON число строкой не превращают — ЗаписатьJSON() запишет его сам, см. статью про JSON в 1С. Для CSV, банковских файлов, адресов и кодов — функции общего модуля:

// Общий модуль ФорматЧислаКлиентСервер:
// флажки «Клиент (управляемое приложение)» и «Сервер».
// XMLСтрока() в веб-клиенте недоступна, поэтому числа в строки переводит Формат().

// Число для CSV, TXT и банковских файлов: точка, без разделителей групп.
// ЧислоДляФайла(1234567.891) = "1234567.89", ЧислоДляФайла(-15) = "-15.00",
// ЧислоДляФайла(0) = "0.00".
Функция ЧислоДляФайла(Знач Число, Знач Знаков = 2) Экспорт

    // Ноль в том же виде, что и остальные числа
    Ноль = ?(Знаков > 0, "0." + Лев("0000000000", Знаков), "0");

    // Разделители и минус заданы явно: вид не зависит от настроек базы
    ФорматнаяСтрока = "ЧДЦ=" + Формат(Знаков, "ЧН=0; ЧГ=0")
        + "; ЧРД=.; ЧГ=0; ЧО=1; ЧН='" + Ноль + "'";
    Возврат Формат(Число, ФорматнаяСтрока);

КонецФункции

// Код фиксированной длины с ведущими нулями: КодСНулями(42, 6) = "000042".
Функция КодСНулями(Знач Число, Знач Длина) Экспорт

    Если Число <= 0 Или Число <> Цел(Число) Тогда
        // Ноль Формат() превратит в пустую строку, дробь в коде не нужна
        ВызватьИсключение "Код должен быть целым положительным числом";
    КонецЕсли;

    Если Число >= Pow(10, Длина) Тогда
        ВызватьИсключение СтрШаблон("Число %1 не помещается в %2 знаков",
            Формат(Число, "ЧГ=0"), Формат(Длина, "ЧГ=0"));
    КонецЕсли;

    Возврат Формат(Число, "ЧЦ=" + Формат(Длина, "ЧГ=0") + "; ЧВН=; ЧГ=0");

КонецФункции

// Сумма в копейках для платёжных API: СуммаВКопейках(1500.5) = "150050".
Функция СуммаВКопейках(Знач Сумма) Экспорт

    Возврат Формат(Окр(Сумма * 100), "ЧН=0; ЧГ=0");

КонецФункции

// Адрес постраничной выгрузки:
// АдресСтраницы("orders", 12, 1000) = "orders?page=12&limit=1000".
// Склейка "&limit=" + 1000 дала бы "&limit=1 000".
Функция АдресСтраницы(Знач Ресурс, Знач НомерСтраницы, Знач РазмерСтраницы) Экспорт

    Возврат Ресурс + "?page=" + Формат(НомерСтраницы, "ЧН=0; ЧГ=0")
        + "&limit=" + Формат(РазмерСтраницы, "ЧН=0; ЧГ=0");

КонецФункции

// Убирает разделители из готового представления: "1 234 567,89" -> "1234567,89".
// Нужна, когда число пришло строкой, например из текста ячейки.
Функция БезПробелов(Знач Текст) Экспорт

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

КонецФункции

Разбор ключевых строк:

  • ЧН задан везде, где строка уходит в файл или адрес, иначе ноль станет пустым полем, а адрес — «page=&limit=». В ЧислоДляФайла ноль выводится в том же виде, что и остальные числа: «0.00».
  • ЧРД=., ЧГ=0 и ЧО=1 задают разделитель, отсутствие групп и минус слева явно — результат одинаков на любой базе. Числа внутри форматной строки и текста исключения тоже идут через Формат(): модуль клиент-серверный, а XMLСтрока() в веб-клиенте нет.
  • КодСНулями проверяет число до форматирования: ноль без ЧН станет пустой строкой, а число длиннее ЧЦ не выведется целиком. Для кода-строки в БСП есть СтроковыеФункцииКлиентСервер.ДополнитьСтроку(Строка, Длина) — она дополняет нулями слева и не обрезает длинную строку.
  • БезПробелов убирает Символы.НПП и обычный пробел из готового представления, например из текста ячейки.

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

Денежный формат для печатных форм

В макете печатной формы формат задают у ячейки с параметром: выделите ячейку и в палитре свойств заполните «Формат», например ЧДЦ=2; ЧН='—'. В модуле остаётся передать число в Область.Параметры. В УТ 11.4 и КА 2.5 есть типовые функции модуля ФормированиеПечатныхФорм: ФорматСумм(Сумма, Валюта, ЧН, ЧРГ) — сумма с ЧДЦ=2 и валютой (в УТ 11.4 без знака), СуммаПлатежногоДокумента() — вид «1500-00» для платёжки. Для своей конфигурации — независимый вариант:

// Денежный формат для печатных форм: модуль менеджера или серверный общий модуль.

// "1 234 567,89 руб.", для нуля "0,00 руб."
Функция СуммаСВалютой(Знач Сумма, Знач Валюта = "руб.") Экспорт

    // Валюту дописываем строкой: шаблон ЧФ к нулю не применяется
    Возврат Формат(Сумма, "ЧДЦ=2; ЧН='0,00'") + " " + Валюта;

КонецФункции

// Сумма для платёжного поручения: "1500-50", целые рубли - "1500=".
Функция СуммаДляПлатежки(Знач Сумма) Экспорт

    Если Сумма = Цел(Сумма) Тогда
        Возврат Формат(Сумма, "ЧН=0; ЧГ=0") + "=";
    КонецЕсли;
    Возврат Формат(Сумма, "ЧДЦ=2; ЧРД='-'; ЧГ=0");

КонецФункции

// Управленческий отчёт в тысячах: 1234567.891 -> "1 234,6", ноль - прочерк.
Функция СуммаВТысячах(Знач Сумма) Экспорт

    Возврат Формат(Сумма, "ЧС=3; ЧДЦ=1; ЧН='—'");

КонецФункции

// Табличный документ: в ячейке хранится число, формат отвечает только за вид.
// Товары - табличная часть или таблица значений с колонками
// Номенклатура, Количество, Сумма.
Функция ТаблицаСумм(Товары) Экспорт

    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Область(1, 1, 1, 1).Текст = "Товар";
    ТабДок.Область(1, 2, 1, 2).Текст = "Количество";
    ТабДок.Область(1, 3, 1, 3).Текст = "Сумма";

    НомерСтроки = 1;
    Итого = 0;
    Для Каждого СтрокаТоваров Из Товары Цикл
        НомерСтроки = НомерСтроки + 1;
        СуммаСтроки = Окр(СтрокаТоваров.Сумма, 2);
        ТабДок.Область(НомерСтроки, 1, НомерСтроки, 1).Текст = Строка(СтрокаТоваров.Номенклатура);
        ВывестиЧисло(ТабДок.Область(НомерСтроки, 2, НомерСтроки, 2), СтрокаТоваров.Количество, "ЧДЦ=3; ЧН='—'");
        ВывестиЧисло(ТабДок.Область(НомерСтроки, 3, НомерСтроки, 3), СуммаСтроки, "ЧДЦ=2; ЧН='—'");
        // Итог - по тем же округлённым суммам, что напечатаны в строках
        Итого = Итого + СуммаСтроки;
    КонецЦикла;

    СтрокаИтога = НомерСтроки + 1;
    ТабДок.Область(СтрокаИтога, 1, СтрокаИтога, 1).Текст = "Итого";
    ВывестиЧисло(ТабДок.Область(СтрокаИтога, 3, СтрокаИтога, 3), Итого, "ЧДЦ=2; ЧН='0,00'");
    ТабДок.Область(СтрокаИтога + 1, 1, СтрокаИтога + 1, 1).Текст = "Всего к оплате: " + СуммаСВалютой(Итого);

    Возврат ТабДок;

КонецФункции

Процедура ВывестиЧисло(Область, Значение, ФорматнаяСтрока)

    Область.СодержитЗначение = Истина;
    Область.ТипЗначения = Новый ОписаниеТипов("Число");
    Область.Значение = Значение;
    Область.Формат = ФорматнаяСтрока;
    Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право;

КонецПроцедуры
  • Валюта дописана строкой, а не шаблоном ЧФ: по синтаксис-помощнику шаблон к нулю не применяется, и у нулевой суммы «руб.» пропало бы.
  • ЧРД='-' — разделитель рублей и копеек в платёжном поручении; сумма в целых рублях заканчивается знаком «=», как в типовой функции с флагом ВыводитьСуммуБезКопеек.
  • ЧС=3 делит только представление: «тыс. руб.» напишите в заголовке колонки.
  • ВывестиЧисло кладёт в ячейку само число (СодержитЗначение, ТипЗначения, Значение), а Формат отвечает только за вид. Итог считается по тем же округлённым суммам, что напечатаны в строках.

Формат в реквизите, поле формы и СКД

Задать формат числа можно и без кода. У реквизита в конфигураторе есть свойства «Формат» и «Формат редактирования» — их подхватывают поля форм, где реквизит выводится. Красный минус задаёт свойство «Выделять отрицательные», а не форматная строка. Если формат нужен только в одной форме, его меняют у элемента:

// Модуль формы документа: формат полей задаём при создании формы.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    // Колонки табличной части: Формат действует, пока ячейка не редактируется
    Элементы.ТоварыСумма.Формат = "ЧДЦ=2";
    Элементы.ТоварыКоличество.Формат = "ЧДЦ=3";

    // Отдельное поле ввода показывает значение по формату редактирования
    Элементы.СуммаДокумента.ФорматРедактирования = "ЧДЦ=2";

    // Поле надписи с итогом: ноль прочерком, минус красным
    Элементы.ИтогоСкидка.Формат = "ЧДЦ=2; ЧН='—'";
    Элементы.ИтогоСкидка.ВыделятьОтрицательные = Истина;

КонецПроцедуры

У поля ввода два свойства. Формат, по синтаксис-помощнику, используется при отображении текста в колонке таблицы, ФорматРедактирования — при редактировании. Отдельное поле ввода показывает значение по формату редактирования, поэтому Формат на нём ничего не меняет. ЧН в числовых полях ввода не используется: ноль прочерком выводите в поле надписи.

В отчёте на СКД формат задают в конструкторе схемы: вкладка «Наборы данных», колонка «Оформление» у поля, параметр «Формат». Для одного варианта отчёта — вкладка «Настройки», «Условное оформление», тот же параметр. Программная установка через Оформление.УстановитьЗначениеПараметра("Формат", …) показана в статье о полях СКД. В языке запросов функции Формат() нет: ВЫРАЗИТЬ(Сумма КАК ЧИСЛО(15, 2)) меняет точность значения, но не его вид.

Типичные ошибки

  • «limit=1 000» в адресе или «1 234,5» в CSV. Число склеено со строкой или передано в СтрШаблон(). Нужен Формат(Число, "ЧН=0; ЧГ=0") или XMLСтрока().
  • «Преобразование значения к типу Число не может быть выполнено» на принимающей стороне: в строке разделители групп или чужой знак дробной части. Выгружайте через XMLСтрока(), читайте через XMLЗначение().
  • СтрЗаменить(Текст, " ", "") не убрал пробелы. Это неразрывный пробел, заменяйте и Символы.НПП.
  • «Остаток: шт.» вместо «Остаток: 0 шт.». Формат(0) возвращает пустую строку, добавьте ЧН=0.
  • «1 235» вместо «1 234,56». Задан ЧЦ без ЧДЦ: дробь не выводится, число округлено.
  • «999999» вместо кода 1234567. Число длиннее ЧЦ целиком не выводится — проверяйте длину заранее, как в КодСНулями.
  • «000 042» вместо «000042». К ЧВН забыли ЧГ=0, и нули разбились на группы.
  • Формат у поля ввода «не работает». Вне таблицы поле показывает значение по ФорматРедактирования.
  • Итог печатной формы не равен сумме строк на копейку. Формат округляет только вид: округлите суммы строк через Окр() и считайте итог по ним.

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

Как вывести число без пробелов?

Формат(Число, "ЧГ=0") убирает разделители групп разрядов: «1234567,891». Чтобы ноль не превратился в пустую строку, добавьте ЧН=0. Для XML и других обменов берите XMLСтрока(Число) — там и точка вместо запятой.

Как добавить ведущие нули к числу?

Задайте общую длину и включите нули: Формат(42, "ЧЦ=6; ЧВН=; ЧГ=0") вернёт «000042». Если код уже строка, подойдёт СтроковыеФункцииКлиентСервер.ДополнитьСтроку(Код, 6) из БСП.

Как заменить запятую на точку?

Параметр ЧРД=.: Формат(12.5, "ЧДЦ=2; ЧРД=.; ЧГ=0") даёт «12.50». Если нужен английский вид целиком, с запятыми между группами, задайте Л=en_US.

Как вывести сумму в тысячах или миллионах?

Сдвигом разрядов: ЧС=3 делит на тысячу, ЧС=6 — на миллион. Формат(1234567.891, "ЧС=6; ЧДЦ=2") даёт «1,23». Подпись «млн руб.» вынесите в заголовок колонки.

Можно ли отформатировать число прямо в запросе?

Нет, в языке запросов нет Формат(). Получите число запросом, а вид задайте в коде, в макете или в оформлении поля СКД.

Когда проще заказать

Если нужно поправить суммы в типовых печатных формах или вид чисел в выгрузке для банка, а разбираться с макетами и расширениями некогда, поручите это программисту: доработка печатных форм 1С. Разместите задание с образцом нужного вида числа — оценка бесплатная, ответ в течение рабочего дня.

По теме

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

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


1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.