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

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

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

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

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

Важно понимать разницу между хранением и отображением. Точность реквизита в конфигураторе определяет, сколько знаков реально сохраняется в базе данных. Форматная строка влияет только на то, как число выглядит для пользователя, но не меняет хранимое значение. Смешение этих двух механизмов — самая частая причина ошибок «ввёл 3 знака, а сохранилось 2».

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

Где в 1С задаётся точность числа

Числовой тип в 1С описывается тремя параметрами: длина (общее количество цифр), точность (количество знаков после запятой) и признак неотрицательности. Например, длина 15 и точность 2 означают, что число может содержать до 13 цифр в целой части и 2 в дробной. Эти параметры жёстко определяют, что попадёт в базу данных.

Если в реквизит с точностью 2 пользователь вводит значение 10,567, платформа автоматически округлит его до 10,57 при записи. Обратной операции не существует: увеличение точности не восстановит ранее обрезанные знаки. Поэтому точность важно планировать до начала ввода данных, особенно для цен, курсов валют и коэффициентов.

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

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

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

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

Как настроить отображение знаков без изменения конфигурации

Если конфигурацию менять нельзя или нужно изменить только внешний вид числа, используется форматная строка. Она задаётся в свойствах элемента формы (поле ввода, надпись), в ячейках макетов печатных форм и в настройках полей отчётов на СКД.

Ключевой параметр форматной строки — ЧДЦ (число десятичных знаков). Например, запись ЧДЦ=3 выведет число 12,5 как 12,500. Полная строка может выглядеть так: ЧДЦ=2; ЧРД=,; ЧРГ=' '; ЧН=0,00 — здесь дополнительно заданы разделитель дробной части, разделитель групп разрядов и представление нуля.

В типовых формах списков и отчётах пользователь без доступа к конфигуратору иногда может изменить формат через настройки: «Ещё → Изменить форму» (в режиме тонкого клиента с соответствующими правами) или через настройки отчёта на вкладке полей, если разработчик предусмотрел такую возможность.

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

Во встроенном языке 1С для управления знаками после запятой применяется функция Окр(Число, Точность, РежимОкругления). Второй параметр задаёт количество знаков, третий — правило округления (по умолчанию используется математическое округление 0,5 вверх). Пример: Окр(123.4567, 2) вернёт 123,46.

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

bsl
// Округление до 3 знаков после запятой
Цена = Окр(ИсходнаяЦена, 3);

// Приведение типа в запросе
Запрос.Текст = "ВЫБРАТЬ ВЫРАЗИТЬ(Товары.Количество КАК ЧИСЛО(15, 3)) КАК Количество ИЗ Документ.Реализация.Товары КАК Товары";

При программном создании реквизитов или колонок таблиц значений точность задаётся через объект ОписаниеТипов с параметрами квалификаторов числа: Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)), где 15 — длина, 3 — точность.

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

В типовых решениях (1С:Управление торговлей, ERP, Комплексная автоматизация) точность ключевых показателей задана разработчиками и часто превышает привычные два знака: цены и курсы валют обычно хранятся с точностью до 2–4 знаков, количество — до 3 знаков, что позволяет учитывать дробные упаковки и весовой товар. Точные значения зависят от версии конфигурации, их можно посмотреть в конфигураторе в свойствах соответствующих реквизитов.

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

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

Как выбрать способ

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

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

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

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

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

Ввод значения с лишними знаками
Норма

Значение округляется до заданной точности и сохраняется

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

Лишние знаки обрезаются до старой точности — реквизит не изменён или база не обновлена

Отображение в форме
Норма

Число выводится с нужным количеством знаков

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

На экране два знака, хотя хранится три — не настроена форматная строка

Итоги в отчёте
Норма

Итоги совпадают с суммой детальных строк

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

Итоги расходятся — округление применено к строкам, но не к итогам, или наоборот

Типичные ошибки
01
Изменение только форматной строки: пользователь видит три знака, но в базе хранятся два — расчёты дают неожиданные результаты.
02
Уменьшение точности реквизита с данными без копии: старые значения необратимо округляются.
03
Длина числа меньше или равна точности: целая часть не помещается, ввод больших чисел становится невозможен.
04
Округление промежуточных результатов в расчётах: накапливаются копеечные расхождения между документами и отчётами.
05
Изменение типового реквизита без проверки обменов: синхронизация с другими базами начинает обрезать или отклонять значения.
Если расхождения в копейках возникают между документом и отчётом, сначала проверьте, не применяется ли разное округление: документ считает с точностью реквизита, а отчёт дополнительно округляет через ВЫРАЗИТЬ. Привести оба расчёта к одной точности обычно решает проблему без доработок.
ПЗ
Практическое замечание

Часто задаваемые вопросы

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

Только для отображения: через форматную строку в настройках полей, макетов и отчётов (параметр ЧДЦ). Изменить точность хранения данных без конфигуратора нельзя — это свойство метаданных, которое редактируется только в режиме разработки.

Что будет со старыми данными, если увеличить точность реквизита?

Старые значения останутся без изменений: у них просто не было лишних знаков, которые можно было бы «вернуть». Новые значения начнут сохраняться с увеличенной точностью. Увеличение точности безопасно, в отличие от уменьшения.

Почему в поле ввода не получается ввести больше двух знаков?

Точность реквизита ограничивает ввод на уровне платформы: поле ввода наследует свойства типа данных. Проверьте свойство «Точность» реквизита в конфигураторе. Если реквизит составного типа, ограничения задаёт числовая составляющая описания типов.

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

В макете печатной формы для нужной ячейки задайте форматную строку ЧДЦ=0. Значение в документе останется с копейками, а на печать выведется округлённым. Учтите, что сумма округлённых строк может не сойтись с округлённым итогом.

Влияет ли точность на обмен данными между базами 1С?

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

Как задать разное количество знаков для разных строк одного отчёта?

В отчётах на СКД формат задаётся для каждого поля отдельно на закладке «Наборы данных» (поле «Оформление») или в настройках выбранных полей. В табличном документе формат можно назначить программно для конкретных областей через свойство «Формат» ячейки.

Итог

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

Хранение знаков после запятой определяется свойством «Точность» реквизита в конфигураторе, отображение — форматной строкой ЧДЦ, расчёты — функцией Окр() и приведением типов в запросах. Уменьшение точности с данными делайте только после резервного копирования, а результат всегда проверяйте на тестовом вводе и сверке итогов.