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

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

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

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

Задача изменить количество знаков после запятой в 1С 8 возникает в трёх типичных ситуациях: нужно увеличить точность хранения числа (например, цены с четырьмя знаками для расчётов в валюте), убрать лишние нули в отчётах и печатных формах или исправить округление, из-за которого суммы «не сходятся» на копейки. Способ решения зависит от того, где именно требуется изменить отображение: в данных, в интерфейсе или только в выводимых документах.

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

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

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

В платформе 1С:Предприятие 8 числовой тип описывается тремя параметрами: длина (общее количество цифр), точность (количество знаков после запятой) и признак неотрицательности. Например, тип «Число (15, 2)» означает максимум 15 цифр всего, из которых 2 — дробная часть. Эти параметры задаются в конфигураторе в свойствах реквизита, ресурса, измерения или реквизита формы.

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

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

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

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

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

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

Как изменить отображение знаков в формах без изменения данных

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

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

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

bsl
// Пример: вывод суммы с тремя знаками после запятой
СтрокаСуммы = Формат(СуммаДокумента, "ЧЦ=17; ЧДЦ=3; ЧРГ=' '");
Сообщить("Сумма: " + СтрокаСуммы);

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

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

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

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

Знаки после запятой в печатных формах

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

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

Типичные ошибки
01
Меняют формат поля вместо точности реквизита: на экране знаков стало больше, но хранятся по-прежнему два знака, и в новых разрядах выводятся нули.
02
Увеличивают точность цены, но не проверяют ресурсы регистров: суммы в движениях округляются до старой разрядности, итоги расходятся с документами.
03
Уменьшают точность без копии базы — дробные части уже проведённых значений теряются безвозвратно.
04
Задают формат только в одном месте: форма показывает три знака, а печатная форма и отчёт — два, что вызывает вопросы у пользователей.

Округление при расчётах: где оно на самом деле происходит

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

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

Проверка результата после изменений

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

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

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

Ввод значения в форму
Норма

Все введённые знаки сохраняются после записи объекта

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

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

Движения документа по регистрам
Норма

Ресурсы регистров хранят ту же разрядность, что и реквизиты документа

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

В регистрах значения округлены сильнее — нужно менять точность ресурсов

Отчёт и печатная форма
Норма

Отображается заданное число знаков во всех формах вывода

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

На экране одно, в печати другое — формат задан не во всех местах

FAQ

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

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

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

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

Почему в Excel после выгрузки другое количество знаков?

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

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

Используйте в строке формата параметр сокращения дробной части или форматируйте программно с проверкой: если значение равно целому, выводите ЧДЦ=0, иначе ЧДЦ=2. Единый стандартный параметр формата, который автоматически прячет нулевую дробную часть, в общем случае отсутствует — обычно это решается условным форматированием.

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

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

Чем отличается точность в регистре сведений от точности в документе?

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

Итог

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

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