Разработка и Конфигурация · 11 мин
Как изменить количество знаков после запятой в 1С
Как изменить количество знаков после запятой в 1С: настройка разрядности в конфигураторе, форматирование в отчётах и формах, типичные ошибки и проверка результата.
Количество знаков после запятой в 1С определяется на нескольких уровнях: в свойствах реквизита конфигурации, в настройках формата поля формы, в макетах печатных форм и в параметрах отчётов. Прежде чем что-то менять, нужно понять, где именно «теряются» или «лишние» цифры: в хранимых данных или только в их отображении.
Если в документе цена показывается с двумя знаками, а нужно четыре (например, для курсов валют или цен за единицу с высокой точностью), правка только формы не поможет — данные физически округляются при записи. В этом случае требуется изменить разрядность дробной части в конфигураторе. Если же данные хранятся точно, а обрезаются только на экране или в печати, достаточно настроить формат вывода.
Ниже разобраны оба сценария: изменение точности хранения через конфигуратор и изменение отображения через формат поля, а также работа с отчётами, печатными формами и типичные ошибки, которые приводят к расхождениям в итогах.
Где в 1С задаётся количество знаков после запятой
В платформе 1С:Предприятие разрядность дробной части контролируется в четырёх местах, и они работают независимо друг от друга:
- Квалификаторы числа в конфигураторе — свойства «Длина» и «Точность» реквизита объекта (справочника, документа, регистра). Определяют, сколько знаков реально хранится в базе данных.
- Формат поля формы — свойство «Формат» элемента управления. Влияет только на отображение и ввод на конкретной форме.
- Формат в макетах и печатных формах — параметр формата в ячейке табличного документа или в функции Формат() при программном выводе.
- Настройки отчётов (СКД) — оформление поля в схеме компоновки данных, где можно задать формат представления числа.
Ключевое правило: если точность реквизита в конфигураторе равна 2, то значение 10,5678 при записи округлится до 10,57, и никакая настройка формы не вернёт отброшенные цифры. Поэтому первый шаг — определить, где происходит округление.
Как изменить точность хранения в конфигураторе
Этот способ меняет саму структуру данных, поэтому выполняется в режиме «Конфигуратор» и требует прав на изменение конфигурации. Для типовых конфигураций на поддержке изменение реквизитов может потребовать снятия объекта с полной поддержки — учтите это перед правкой.
Порядок действий:
- Откройте конфигурацию: меню «Конфигурация» → «Открыть конфигурацию».
- Найдите нужный объект — например, документ, справочник или регистр сведений.
- Откройте список реквизитов объекта и выберите числовой реквизит (например, «Цена» или «Количество»).
- В палитре свойств найдите поле «Тип», откройте его и задайте «Длину» и «Точность» числа. Например, длина 15, точность 4.
- Сохраните конфигурацию (F7) и выполните обновление конфигурации базы данных.
При увеличении точности платформа выполнит реструктуризацию таблиц — существующие данные сохранятся, просто к ним добавятся нулевые разряды. При уменьшении точности дробная часть существующих значений будет округлена безвозвратно, поэтому перед таким изменением обязательно сделайте резервную копию базы.
Как изменить отображение знаков через формат поля формы
Если данные хранятся с нужной точностью, но на форме показываются округлённо, править нужно не конфигурацию, а формат элемента формы. Это безопасный способ: структура базы не меняется, затрагивается только представление.
В конфигураторе откройте форму объекта, выделите нужное поле ввода и в палитре свойств найдите «Формат». Нажмите кнопку выбора — откроется конструктор форматной строки. Для числа задайте параметр «Число десятичных знаков» (ЧД), например ЧД=4. При необходимости укажите разделитель групп (ЧРД) и представление нуля (ЧН).
Форматную строку можно задать и вручную. Например, строка ЧД=4; ЧРД=,; ЧН=0,0000 выводит число с четырьмя знаками после запятой и явным отображением нулевого значения. Аналогичный подход работает для полей динамических списков и таблиц формы.
- 1Откройте форму объекта в конфигураторе
- 2Выделите числовое поле и откройте палитру свойств
- 3Найдите свойство «Формат» и откройте конструктор форматной строки
- 4Установите «Число десятичных знаков» (ЧД) равным нужному значению
- 5Сохраните форму, обновите конфигурацию БД и проверьте отображение в режиме «Предприятие»
Настройка знаков в отчётах и печатных формах
В отчётах, построенных на системе компоновки данных, формат числа задаётся отдельно от формы документа. Откройте схему компоновки отчёта, перейдите на вкладку «Настройки», затем в раздел оформления полей: выберите числовое поле и в параметре «Формат» укажите нужную форматную строку, например ЧД=3. В пользовательском режиме часть типовых отчётов позволяет менять оформление через «Ещё» → «Изменить вариант отчёта».
В печатных формах, построенных на табличных макетах, формат задаётся в свойствах ячейки макета (параметр «Формат») либо программно — через функцию Формат() при заполнении параметров области. Типичный код вывода цены с тремя знаками выглядит так:
Область.Параметры.Цена = Формат(ЦенаТовара, "ЧД=3; ЧРД=,; ЧН=0,000");
Учтите: функция Формат() возвращает строку, а не число. Если результат потом участвует в вычислениях, применяйте форматирование только на финальном этапе вывода, а промежуточные расчёты ведите с исходными числовыми значениями.
Особенности для количества, цен и курсов валют
В типовых конфигурациях (1С:ERP, «Управление торговлей», «Бухгалтерия предприятия») точность ключевых реквизитов уже предопределена: количество обычно хранится с тремя знаками, цены и суммы — с двумя, курсы валют — с четырьмя и более. Эти значения заданы в типовых определяемых типах, и их изменение затронет все объекты, использующие этот тип.
Если требуется повысить точность цен (например, при торговле с ценами за единицу меньше копейки или при пересчёте из валюты), корректный путь — изменить точность в определяемом типе или в конкретном реквизите, а затем проверить все связанные расчёты: итоги документов, проводки, регистры продаж. Иначе возможны копеечные расхождения между суммой по строкам и итогом документа.
Для весовых и объёмных товаров точность количества влияет на списание со склада: при округлении до целых остатки «зависают» в дробных долях, и склад не закрывается в ноль. В таких случаях точность увеличивают, а не уменьшают.
Способы изменения разрядности
Единственный способ изменить хранение. Требует реструктуризации, прав разработчика и резервной копии
Быстро и безопасно, но меняет только отображение на конкретной форме
Подходит для отчётов и печати; не влияет на ввод данных и расчёты
Гибкий контроль в коде, но требует доработки модулей и аккуратности с итогами
Типичные ошибки и как их избежать
Самая частая ошибка — изменение формата поля вместо точности реквизита. Пользователь видит четыре знака на форме, вводит 12,3456, а после записи получает 12,35, потому что реквизит хранит два знака. Признак проблемы: значение «само» округляется после проведения или перезаписи документа.
Вторая ошибка — изменение точности только в документе, но не в регистрах, куда он пишет данные. В результате движения округляются иначе, чем табличная часть, и отчёты по регистрам расходятся с документом. Точность нужно согласованно менять во всей цепочке: реквизит → табличная часть → ресурсы регистров.
Третья группа ошибок связана с представлением: смешение точки и запятой как разделителя, форматирование числа в строку до вычислений, использование Окр() с разными режимами округления в разных местах кода. Для денежных сумм принято округлять математически (режим Округление15как20), а не отбрасывать хвост.
Как проверить результат после изменений
После изменения точности или формата выполните контрольную проверку: введите в поле тестовое значение с большим числом знаков (например, 1,23456), запишите объект и откройте его заново. Если все разряды сохранились — точность хранения настроена верно. Если значение округлилось — точность реквизита по-прежнему ниже требуемой.
Далее проверьте цепочку отражения: проведите документ, посмотрите движения по регистрам и сформируйте связанный отчёт. Значения в документе, движениях и отчёте должны совпадать с заданной разрядностью. Завершите проверку печатной формой — убедитесь, что формат ячеек макета выводит нужное число знаков.
Как проверить результат
После перезаписи все разряды сохранились
Значение округлилось до 1,23 или 1,2346
Разрядность в регистре совпадает с документом
В регистре меньше знаков, чем в табличной части
Выводится заданное число знаков
На печати обрезание или лишние нули
Частые вопросы
Можно ли изменить знаки после запятой без конфигуратора?
Да, если речь только об отображении: в пользовательском режиме часть отчётов позволяет настроить оформление полей через изменение варианта отчёта. Но точность хранения реквизитов меняется только в конфигураторе — штатных пользовательских средств для этого нет.
Почему после ввода четырёх знаков 1С показывает только два?
Точность реквизита в конфигурации установлена равной 2, поэтому при записи значение округляется. Нужно в конфигураторе увеличить свойство «Точность» этого реквизита и обновить конфигурацию базы данных.
Что будет со старыми данными при увеличении точности?
Ничего критичного: при реструктуризации существующие значения сохранятся, новые разряды будут нулевыми. Опасно обратное изменение — уменьшение точности обрезает дробную часть уже записанных данных без возможности восстановления.
Как задать разное число знаков для разных строк одного отчёта?
В схеме компоновки данных формат задаётся для каждого поля отдельно в настройках оформления. Если нужна разная точность внутри одной колонки, используют вычисляемое поле с функцией Формат() и выводят результат как строку.
Влияет ли округление на итоги документов и проводки?
Да. Округление цен и количеств влияет на суммы строк, итоги документов и суммы проводок. Расхождения в копейках между документом и отчётами — типичный признак несогласованной точности в цепочке «документ → регистр → отчёт».
Чем Окр() отличается от настройки точности реквизита?
Точность реквизита — это ограничение хранения на уровне базы данных. Функция Окр() — программное округление значения в момент расчёта с выбором режима округления. Они дополняют друг друга: реквизит должен вмещать результат, а Окр() управляет правилом округления в вычислениях.
Что важно запомнить
Точность хранения задаётся свойствами «Длина» и «Точность» реквизита в конфигураторе и меняется только там; формат поля, макета и отчёта влияет лишь на отображение. Меняйте разрядность согласованно по цепочке «документ → регистры → отчёты», перед уменьшением точности делайте резервную копию, а результат проверяйте записью тестового значения с избыточным числом знаков.