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

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

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

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

Три знака после запятой в 1С требуются чаще всего для цен, курсов валют, веса, объёма и коэффициентов пересчёта. Стандартные настройки многих типовых конфигураций ограничивают точность двумя знаками, и этого достаточно для рублёвых сумм, но недостаточно для расчётов, где копеечная погрешность накапливается на больших количествах.

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

Ниже разобраны все основные сценарии: от изменения разрядности в конфигураторе до форматирования числа при выводе и округления в запросах. Примеры подходят для платформы 8.3 и типовых конфигураций на управляемых формах.

Где именно нужны три знака: определяем задачу

Прежде чем что-то менять, важно понять, где теряется точность. Число в 1С проходит несколько уровней: хранение в базе данных, обработка в коде и запросах, отображение на форме и вывод в печатную форму. На каждом уровне действуют свои настройки.

Если реквизит объявлен как Число(15,2), то значение 1,234 при записи в базу будет обрезано до 1,23 — и никакое форматирование при выводе третий знак не вернёт, потому что данные уже потеряны. В этом случае поможет только изменение типа реквизита в конфигураторе.

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

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

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

Значение обрезается уже при записи в базу (вводите 1,234, сохраняется 1,23)Увеличьте точность реквизита в конфигураторе
В базе число хранится с тремя знаками, но на форме видно дваНастройте форматную строку поля формы
Три знака нужны только в печатной форме или отчётеИспользуйте Формат() или форматную строку в макете
Нужно округлить результат вычисления до трёх знаков в кодеПримените функцию Окр(Значение, 3)

Изменение разрядности реквизита в конфигураторе

Это базовый способ, который влияет на хранение данных. Откройте конфигуратор, найдите нужный объект (справочник, документ, регистр) и перейдите к свойствам реквизита. У числового типа есть два параметра: Длина (общее количество цифр) и Точность (количество знаков после запятой).

Установите Точность = 3. Например, Число(15,3) позволяет хранить значения вида 123456789012,345. Учтите, что длина включает и дробную часть, и разделитель: если увеличиваете точность, проверьте, что общей длины хватает для целой части.

После изменения типа реквизита потребуется обновить конфигурацию базы данных (F7 или меню Конфигурация → Обновить конфигурацию базы данных). При увеличении точности данные не теряются — платформа просто расширяет поле. А вот при уменьшении точности значения будут округлены, и платформа выдаст предупреждение.

Порядок действий в конфигураторе
  1. 1
    Откройте конфигурацию и найдите объект с нужным реквизитом
  2. 2
    Выделите реквизит и откройте палитру свойств (правый клик → Свойства)
  3. 3
    Найдите параметр Точность и установите значение 3
  4. 4
    Проверьте, что Длина позволяет вместить целую часть с запасом
  5. 5
    Обновите конфигурацию базы данных через F7
  6. 6
    Введите тестовое значение с тремя знаками и проверьте сохранение

Особенность типовых конфигураций

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

Три знака при отображении на форме

Если данные хранятся с нужной точностью, но отображаются с двумя знаками, настройте формат поля. В конфигураторе откройте форму объекта, выделите поле ввода и в свойствах найдите параметр Формат. Здесь задаётся форматная строка — например, ЧЦ=15; ЧДЦ=3.

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

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

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

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

bsl
Цена = 1234.56789;
СтрокаДляПечати = Формат(Цена, "ЧЦ=15; ЧДЦ=3"); // "1234,568" — при выводе применяется округление
ОкругленноеЗначение = Окр(Цена, 3); // 1234,568 — округление самого числа

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

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

Округление до трёх знаков в запросах

В языке запросов 1С есть функция ВЫРАЗИТЬ, которая приводит число к нужному типу с заданной точностью. Это удобно, когда округление нужно выполнить на стороне СУБД, например при группировке сумм или сравнении значений.

ВЫБРАТЬ

ВЫРАЗИТЬ(Продажи.Цена КАК ЧИСЛО(15, 3)) КАК Цена

ИЗ

Документ.РеализацияТоваровУслуг.Товары КАК Продажи

Имейте в виду, что ВЫРАЗИТЬ округляет значение по правилам платформы, а не просто обрезает хвост. Если нужно именно отсечение без округления, придётся комбинировать с целочисленным делением и умножением, но на практике такая задача встречается редко.

В отчётах на СКД (система компоновки данных) формат отображения задаётся отдельно: на вкладке «Наборы данных» или в настройках поля можно указать форматную строку ЧДЦ=3, и пользователь увидит три знака без изменения самих данных.

Как убедиться, что всё работает правильно

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

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

Наконец, сформируйте печатную форму и отчёт по этому документу. Если в документе три знака, а в печати два — дело в формате макета, а не в данных.

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

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

Сохранение значения 12,345 после записи объекта
Норма

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

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

Отображается 12,35 или 12,34 — точность реквизита меньше трёх

Результат умножения количества на цену
Норма

Совпадает с расчётом на калькуляторе

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

Расхождение в копейках — где-то промежуточное округление

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

Выводятся три знака после запятой

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

Два знака — нужно править формат макета

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

Самая частая ошибка — менять формат отображения, когда проблема в типе реквизита. Пользователь видит два знака, добавляет ЧДЦ=3 в формат, но третий знак всё равно нулевой, потому что в базе значение уже обрезано. Проверку всегда начинайте с типа реквизита.

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

Третья ошибка — забыть про регистры. Если реквизит документа расширили до трёх знаков, а связанный ресурс регистра накопления остался Число(15,2), то движения по-прежнему будут записываться с двумя знаками. Разрядность нужно менять согласованно во всех связанных объектах.

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

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

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

Частично. Формат отображения некоторых полей можно изменить через «Изменить форму» в режиме предприятия, а в типовых конфигурациях точность цен и количества иногда задаётся в настройках учёта. Но если тип реквизита ограничен двумя знаками, увеличить точность хранения без конфигуратора невозможно.

Почему я поставил ЧДЦ=3, а третий знак всё равно ноль?

Формат влияет только на отображение. Если реквизит объявлен как Число(15,2), значение обрезается до двух знаков ещё при записи в базу, и форматирование не может восстановить потерянную цифру. Увеличьте параметр Точность у реквизита в конфигураторе.

Чем Окр() отличается от Формат()?

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

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

При увеличении точности (например, с 2 до 3 знаков) данные сохраняются — платформа расширяет поле. Риск появляется при уменьшении точности: лишние знаки будут округлены, и платформа предупредит об этом при обновлении конфигурации базы данных. Перед любыми изменениями структуры делайте резервную копию.

Как сделать три знака в отчёте на СКД?

В схеме компоновки данных откройте закладку с настройками полей, найдите нужное поле и в свойстве «Оформление» задайте формат ЧЦ=15; ЧДЦ=3. Это изменит только отображение в отчёте, не затрагивая данные и запрос.

Нужно ли менять точность в регистрах, если изменил её в документе?

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

Итог

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

Три знака после запятой настраиваются на трёх уровнях: тип реквизита (Точность = 3) для хранения, форматная строка ЧДЦ=3 для отображения, Окр() и ВЫРАЗИТЬ для расчётов. Всегда начинайте с проверки типа реквизита, меняйте разрядность согласованно во всех связанных объектах и делайте резервную копию перед обновлением конфигурации базы данных.