Разработка и Конфигурация · 10 мин
Как в 1С сделать три знака после запятой
Как в 1С установить три знака после запятой: настройка разрядности числа в конфигураторе, форматная строка, округление в коде и печатных формах. Пошаговая инструкция.
Три знака после запятой в 1С требуются чаще всего для цен, курсов валют, веса, объёма и коэффициентов пересчёта. Стандартные настройки многих типовых конфигураций ограничивают точность двумя знаками, и этого достаточно для рублёвых сумм, но недостаточно для расчётов, где копеечная погрешность накапливается на больших количествах.
Способ установить три знака после запятой зависит от того, где именно нужна точность: в реквизите объекта, в отображении на форме, в печатной форме или в результате вычисления в коде. Это разные механизмы, и менять их нужно в разных местах.
Ниже разобраны все основные сценарии: от изменения разрядности в конфигураторе до форматирования числа при выводе и округления в запросах. Примеры подходят для платформы 8.3 и типовых конфигураций на управляемых формах.
Где именно нужны три знака: определяем задачу
Прежде чем что-то менять, важно понять, где теряется точность. Число в 1С проходит несколько уровней: хранение в базе данных, обработка в коде и запросах, отображение на форме и вывод в печатную форму. На каждом уровне действуют свои настройки.
Если реквизит объявлен как Число(15,2), то значение 1,234 при записи в базу будет обрезано до 1,23 — и никакое форматирование при выводе третий знак не вернёт, потому что данные уже потеряны. В этом случае поможет только изменение типа реквизита в конфигураторе.
Если же реквизит хранит достаточную точность, но на форме или в печатном документе показываются два знака, достаточно настроить формат отображения — данные в базе при этом не трогаются.
Как выбрать действие
Изменение разрядности реквизита в конфигураторе
Это базовый способ, который влияет на хранение данных. Откройте конфигуратор, найдите нужный объект (справочник, документ, регистр) и перейдите к свойствам реквизита. У числового типа есть два параметра: Длина (общее количество цифр) и Точность (количество знаков после запятой).
Установите Точность = 3. Например, Число(15,3) позволяет хранить значения вида 123456789012,345. Учтите, что длина включает и дробную часть, и разделитель: если увеличиваете точность, проверьте, что общей длины хватает для целой части.
После изменения типа реквизита потребуется обновить конфигурацию базы данных (F7 или меню Конфигурация → Обновить конфигурацию базы данных). При увеличении точности данные не теряются — платформа просто расширяет поле. А вот при уменьшении точности значения будут округлены, и платформа выдаст предупреждение.
- 1Откройте конфигурацию и найдите объект с нужным реквизитом
- 2Выделите реквизит и откройте палитру свойств (правый клик → Свойства)
- 3Найдите параметр Точность и установите значение 3
- 4Проверьте, что Длина позволяет вместить целую часть с запасом
- 5Обновите конфигурацию базы данных через F7
- 6Введите тестовое значение с тремя знаками и проверьте сохранение
Особенность типовых конфигураций
В типовых решениях (Бухгалтерия, Управление торговлей, ERP) изменение реквизитов в конфигураторе снимает объекты с полной поддержки, что усложняет будущие обновления. Прежде чем менять типовые реквизиты, проверьте, нет ли функциональной опции: например, во многих конфигурациях точность цен и количества настраивается в разделе администрирования без доработок.
Три знака при отображении на форме
Если данные хранятся с нужной точностью, но отображаются с двумя знаками, настройте формат поля. В конфигураторе откройте форму объекта, выделите поле ввода и в свойствах найдите параметр Формат. Здесь задаётся форматная строка — например, ЧЦ=15; ЧДЦ=3.
Та же настройка доступна в режиме предприятия для некоторых полей через меню «Ещё» → «Изменить форму», если конфигурация это позволяет. Там можно задать формат без вмешательства в конфигуратор.
Полезные параметры форматной строки: ЧЦ — общее количество знаков, ЧДЦ — количество знаков после запятой, ЧРД — символ разделителя дробной части, ЧРГ — разделитель групп разрядов. Например, ЧЦ=15; ЧДЦ=3; ЧРГ=" " выведет число с пробелами между тысячами и тремя знаками после запятой.
Форматирование числа в коде и печатных формах
Когда три знака нужны только при выводе — в печатной форме, отчёте или сообщении — используется функция Формат(). Она не меняет само значение, а только его строковое представление.
Цена = 1234.56789;
СтрокаДляПечати = Формат(Цена, "ЧЦ=15; ЧДЦ=3"); // "1234,568" — при выводе применяется округление
ОкругленноеЗначение = Окр(Цена, 3); // 1234,568 — округление самого числаОбратите внимание на разницу: Формат() возвращает строку, а Окр() возвращает число, округлённое до указанного знака. Если результат нужен для дальнейших вычислений, используйте Окр. Если только для показа пользователю — Формат, чтобы не искажать данные.
В макетах печатных форм форматную строку можно задать прямо в свойствах параметра ячейки: выделите ячейку, откройте свойства и заполните поле Формат. Тогда в коде достаточно передать число, а представление сформируется автоматически.
Округление до трёх знаков в запросах
В языке запросов 1С есть функция ВЫРАЗИТЬ, которая приводит число к нужному типу с заданной точностью. Это удобно, когда округление нужно выполнить на стороне СУБД, например при группировке сумм или сравнении значений.
ВЫБРАТЬ
ВЫРАЗИТЬ(Продажи.Цена КАК ЧИСЛО(15, 3)) КАК Цена
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК Продажи
Имейте в виду, что ВЫРАЗИТЬ округляет значение по правилам платформы, а не просто обрезает хвост. Если нужно именно отсечение без округления, придётся комбинировать с целочисленным делением и умножением, но на практике такая задача встречается редко.
В отчётах на СКД (система компоновки данных) формат отображения задаётся отдельно: на вкладке «Наборы данных» или в настройках поля можно указать форматную строку ЧДЦ=3, и пользователь увидит три знака без изменения самих данных.
Как убедиться, что всё работает правильно
После настройки проверьте полный цикл: ввод, хранение, расчёт и вывод. Введите в поле значение с тремя знаками, например 12,345, запишите объект и откройте его заново. Если значение сохранилось без изменений — хранение настроено верно.
Затем проверьте расчёт: умножьте количество с тремя знаками на цену и сравните итог с результатом на калькуляторе. Расхождение в последнем знаке обычно означает, что где-то в цепочке стоит промежуточное округление до двух знаков — чаще всего в типовом алгоритме или в формуле ценообразования.
Наконец, сформируйте печатную форму и отчёт по этому документу. Если в документе три знака, а в печати два — дело в формате макета, а не в данных.
Как проверить результат
Значение не изменилось после перепроведения и переоткрытия
Отображается 12,35 или 12,34 — точность реквизита меньше трёх
Совпадает с расчётом на калькуляторе
Расхождение в копейках — где-то промежуточное округление
Выводятся три знака после запятой
Два знака — нужно править формат макета
Типичные ошибки при настройке точности
Самая частая ошибка — менять формат отображения, когда проблема в типе реквизита. Пользователь видит два знака, добавляет ЧДЦ=3 в формат, но третий знак всё равно нулевой, потому что в базе значение уже обрезано. Проверку всегда начинайте с типа реквизита.
Вторая ошибка — округлять значения функцией Окр на каждом шаге расчёта. Многократное промежуточное округление накапливает погрешность, и итоговая сумма документа может не сойтись с суммой строк. Правильнее считать с полной точностью и округлять только финальный результат.
Третья ошибка — забыть про регистры. Если реквизит документа расширили до трёх знаков, а связанный ресурс регистра накопления остался Число(15,2), то движения по-прежнему будут записываться с двумя знаками. Разрядность нужно менять согласованно во всех связанных объектах.
Частые вопросы
Можно ли сделать три знака после запятой без конфигуратора?
Частично. Формат отображения некоторых полей можно изменить через «Изменить форму» в режиме предприятия, а в типовых конфигурациях точность цен и количества иногда задаётся в настройках учёта. Но если тип реквизита ограничен двумя знаками, увеличить точность хранения без конфигуратора невозможно.
Почему я поставил ЧДЦ=3, а третий знак всё равно ноль?
Формат влияет только на отображение. Если реквизит объявлен как Число(15,2), значение обрезается до двух знаков ещё при записи в базу, и форматирование не может восстановить потерянную цифру. Увеличьте параметр Точность у реквизита в конфигураторе.
Чем Окр() отличается от Формат()?
Окр(Значение, 3) возвращает число, округлённое до трёх знаков, — его можно использовать в дальнейших вычислениях. Формат(Значение, "ЧДЦ=3") возвращает строку для показа пользователю, само число при этом не меняется. Для расчётов нужна Окр, для вывода — Формат.
Потеряются ли данные при увеличении точности реквизита?
При увеличении точности (например, с 2 до 3 знаков) данные сохраняются — платформа расширяет поле. Риск появляется при уменьшении точности: лишние знаки будут округлены, и платформа предупредит об этом при обновлении конфигурации базы данных. Перед любыми изменениями структуры делайте резервную копию.
Как сделать три знака в отчёте на СКД?
В схеме компоновки данных откройте закладку с настройками полей, найдите нужное поле и в свойстве «Оформление» задайте формат ЧЦ=15; ЧДЦ=3. Это изменит только отображение в отчёте, не затрагивая данные и запрос.
Нужно ли менять точность в регистрах, если изменил её в документе?
Да, если документ делает движения по регистрам. Ресурсы регистров имеют собственный тип, и при несовпадении разрядности значения в движениях будут округляться до точности регистра. Проверьте все регистры, по которым проводится документ, и приведите точность к единому значению.
Что важно запомнить
Три знака после запятой настраиваются на трёх уровнях: тип реквизита (Точность = 3) для хранения, форматная строка ЧДЦ=3 для отображения, Окр() и ВЫРАЗИТЬ для расчётов. Всегда начинайте с проверки типа реквизита, меняйте разрядность согласованно во всех связанных объектах и делайте резервную копию перед обновлением конфигурации базы данных.