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

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

Как добавить нули после запятой в 1С

Как увеличить количество знаков после запятой в 1С: настройка точности в конфигураторе, форматирование в формах, отчётах и печатных формах, типичные ошибки.

Задача «добавить нули после запятой» в 1С возникает в трёх разных ситуациях, и способ решения зависит от того, где именно не хватает знаков. Первый случай — реквизит в базе данных хранит число с недостаточной точностью, и при вводе 12,345 программа обрезает значение до 12,34. Второй — данные в базе хранятся правильно, но на форме, в отчёте или печатной форме число выводится округлённым. Третий — нужно просто красиво отобразить число с фиксированным количеством знаков, например показывать цену как 150,00 вместо 150.

Ключевой принцип: количество хранимых знаков после запятой определяется типом данных реквизита в конфигураторе, а количество отображаемых знаков — настройками формата. Это независимые вещи. Можно хранить четыре знака, а показывать два, и наоборот — но если в базе хранится два знака, никакая настройка формата не «добавит» реальной точности, она лишь допишет нули к уже округлённому значению.

Прежде чем что-то менять, определите, какая именно из трёх ситуаций у вас. Введите в поле число с большим количеством знаков, запишите объект и посмотрите, что сохранилось. Если значение обрезалось — проблема в типе данных, и без изменения конфигурации не обойтись. Если сохранилось полностью, но выводится округлённо — достаточно настроить формат отображения.

Определяем, где теряются знаки после запятой

Простейшая диагностика занимает минуту. Откройте объект в пользовательском режиме, введите в нужное поле значение с большим количеством знаков, например 1,2345, запишите и закройте объект, затем откройте заново. Если после перезаписи осталось 1,23 или 1,234 — значит, точность ограничена на уровне реквизита, и отображение тут ни при чём.

Если значение сохранилось полностью, а округление видно только в отчёте или на печати — тип данных в порядке, и нужно править формат вывода. Это самая безопасная ситуация: данные не теряются, меняется только представление.

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

Маршрут решения

Как выбрать действие

Число обрезается после записи и перезапуска объектаУвеличивайте точность реквизита в конфигураторе
Число хранится полностью, но на форме или в отчёте округляетсяНастройте форматную строку поля или ячейки
Речь о ценах или валютных суммах в типовой конфигурацииСначала проверьте настройки точности валют и цен в пользовательском режиме
Нужны только нули в конце для красивого вывода, например 150,00Достаточно форматной строки с параметром ЧДЦ

Увеличиваем точность числа в конфигураторе

Если данные обрезаются при сохранении, откройте конфигуратор, найдите нужный объект (справочник, документ, регистр) и перейдите к реквизиту. В палитре свойств у числового типа есть два параметра: «Длина» — общее количество цифр, и «Точность» — количество знаков после запятой. Чтобы хранить, например, четыре знака, установите точность 4 и при необходимости увеличьте общую длину, чтобы целая часть тоже помещалась.

Важно понимать связь параметров: длина включает и целую, и дробную части. Если длина 15, а точность 4, то под целую часть остаётся 11 разрядов. При недостаточной длине большие числа просто не запишутся или вызовут ошибку, поэтому увеличивая точность, проверьте и длину.

После изменения свойств нужно обновить конфигурацию базы данных (команда «Обновить конфигурацию базы данных» или клавиша F7 с последующим подтверждением). Платформа выполнит реструктуризацию таблиц. Существующие значения не потеряются — у них просто появятся нули в новых разрядах.

Настройка отображения знаков на форме и в полях ввода

Когда данные хранятся корректно, но поле на форме показывает округлённое значение, откройте форму в конфигураторе, выделите элемент и в палитре свойств найдите «Формат» или «ФорматнаяСтрока». Здесь задаётся строка вида ЧДЦ=2, где ЧДЦ — число десятичных знаков. Укажите нужное количество: ЧДЦ=4 выведет четыре знака после запятой.

Форматная строка поддерживает и другие параметры: ЧРД — разделитель дробной части, ЧРГ — разделитель групп разрядов, ЧН — представление нуля. Например, ЧДЦ=2; ЧРГ=' ' выведет сумму с пробелами между тысячами и двумя знаками после запятой.

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

Знаки после запятой в отчётах и СКД

В отчётах на системе компоновки данных формат задаётся для каждого поля отдельно. Откройте схему компоновки (в конфигураторе — закладка «Настройки» или через «Ещё — Изменить вариант» в пользовательском режиме, если разработчик это разрешил), найдите нужное поле и в свойствах оформления установите параметр «Формат» со значением вида ЧДЦ=3.

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

Если округление происходит ещё в запросе отчёта — проверьте, нет ли в тексте запроса функций ВЫРАЗИТЬ с указанием точности. Конструкция вида ВЫРАЗИТЬ(Сумма КАК ЧИСЛО(15, 2)) обрежет значение до двух знаков уже на уровне запроса, и никакой формат вывода это не исправит — нужно менять сам запрос.

Форматирование чисел в печатных формах и коде

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

В программном коде используется функция Формат(Значение, "ЧДЦ=2"). Она возвращает строку, поэтому применяйте её только на этапе вывода — если результат форматирования записать обратно в числовой реквизит, получите ошибку преобразования или потерю типа.

bsl
СуммаСтрокой = Формат(Сумма, "ЧДЦ=2; ЧРГ=' '");  // "12 345,60"
ЦенаСтрокой  = Формат(Цена, "ЧДЦ=4");              // "0,1234"
ВМакете.Параметры.СуммаПрописью = СуммаСтрокой;

В типовых конфигурациях для сумм часто используются готовые функции из общих модулей (например, формирование суммы прописью или форматирование по точности валюты). Если правите печатную форму типового документа, посмотрите, как форматируются соседние параметры макета, и действуйте единообразно — это снизит риск рассинхронизации при обновлениях.

Точность цен и валют в типовых конфигурациях

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

Учтите ограничение: изменение точности валюты влияет на новые расчёты, но не пересчитывает старые документы. Проведённые документы сохранят суммы с прежним округлением, и для их исправления потребуется перепроведение или корректировка.

Сравнение вариантов

Точность реквизита в конфигураторе

Единственный способ реально хранить больше знаков. Требует прав разработчика, реструктуризации и резервной копии

Форматная строка поля или ячейки

Меняет только отображение. Быстро и безопасно, но не добавляет реальной точности данным

Настройки валют и цен в пользовательском режиме

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

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

Гибкий вывод в печатных формах и отчётах, требует изменения модуля или расширения

Проверка результата и типичные ошибки

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

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

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

Значение после записи и повторного открытия
Норма

Все введённые знаки сохранились

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

Дробная часть обрезана — точность реквизита не изменилась

Вывод в отчёте
Норма

Показывается заданное число знаков

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

Округление осталось — проверьте формат поля и ВЫРАЗИТЬ в запросе

Печатная форма
Норма

Суммы выводятся с нужной точностью

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

Старый формат — проверьте ячейку макета и код формирования

Типичные ошибки
01
Меняют только формат отображения и ждут реальной точности — данные по-прежнему хранятся округлёнными
02
Увеличивают точность, но забывают про длину — большие числа перестают помещаться в реквизит
03
Обновляют конфигурацию без резервной копии — при сбое реструктуризации данные восстанавливать неоткуда
04
Меняют тип реквизита в типовой конфигурации на полной поддержке — при следующем обновлении возникают конфликты
05
Применяют Формат() к значению и записывают результат обратно в числовое поле — получают строку вместо числа
Итог

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

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

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

Можно ли добавить знаки после запятой без конфигуратора?

Да, если речь только об отображении: формат полей в отчётах часто настраивается в пользовательском режиме через оформление, а точность валют и цен в типовых конфигурациях меняется в настройках. Но если значение обрезается при записи в базу, без изменения типа реквизита в конфигураторе не обойтись.

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

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

Что означает параметр ЧДЦ в форматной строке?

Это число десятичных знаков, которое будет выводиться при отображении значения. Например, Формат(150, "ЧДЦ=2") вернёт строку «150,00». Параметр влияет исключительно на представление и не изменяет само хранимое число.

Почему в отчёте округление осталось, хотя формат поля я изменил?

Скорее всего, округление происходит раньше — в запросе через ВЫРАЗИТЬ(... КАК ЧИСЛО(15,2)) или в вычисляемом поле. Проверьте текст запроса в схеме компоновки и увеличьте точность в приведении типа, после чего формат вывода заработает как ожидается.

Опасно ли менять точность реквизита в рабочей базе?

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

Как вывести сумму прописью с копейками в печатной форме?

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