Разработка и Конфигурация · 10 мин
Как в 1С 8 изменить количество знаков после запятой
Как изменить количество знаков после запятой в 1С 8: разрядность реквизитов, округление в отчётах и печатных формах, настройка формата чисел в конфигураторе и режиме предприятия.
Задача изменить количество знаков после запятой в 1С 8 возникает в трёх типичных ситуациях: нужно увеличить точность хранения числа (например, цены с четырьмя знаками для расчётов в валюте), убрать лишние нули в отчётах и печатных формах или исправить округление, из-за которого суммы «не сходятся» на копейки. Способ решения зависит от того, где именно требуется изменить отображение: в данных, в интерфейсе или только в выводимых документах.
Важно сразу различать два уровня. Разрядность хранения определяется типом реквизита в конфигураторе — это свойство влияет на то, как число физически записывается в базу данных. Формат отображения задаётся отдельно — в настройках полей форм, отчётов и макетов — и влияет только на то, как число показывается пользователю, не меняя хранимое значение.
Ниже разобраны оба подхода: изменение точности реквизита через конфигуратор, настройка формата числа в режиме «Предприятие» и в отчётах на СКД, а также типовые ошибки и ограничения, о которых нужно знать до внесения изменений.
Где в 1С задаётся количество знаков после запятой
В платформе 1С:Предприятие 8 числовой тип описывается тремя параметрами: длина (общее количество цифр), точность (количество знаков после запятой) и признак неотрицательности. Например, тип «Число (15, 2)» означает максимум 15 цифр всего, из которых 2 — дробная часть. Эти параметры задаются в конфигураторе в свойствах реквизита, ресурса, измерения или реквизита формы.
Отдельно существует формат вывода. Он настраивается в свойствах поля формы, в настройках отчёта на СКД, в макетах печатных форм и в функции Формат() при программной работе. Формат может сократить отображаемое количество знаков, но не может показать больше знаков, чем хранится в данных: если реквизит имеет точность 2, то вывести четыре знака после запятой без изменения типа не получится — в младших разрядах будут нули.
Как изменить точность реквизита в конфигураторе
Изменение точности реквизита — самый радикальный способ: он меняет структуру хранения данных. Выполняется в конфигураторе и требует прав на изменение конфигурации, а для типовых конфигураций — снятия объекта с поддержки или аккуратной работы в режиме совместимости расширений.
- 1Откройте конфигуратор и найдите нужный объект: справочник, документ, регистр или обработку.
- 2Откройте список реквизитов (или ресурсов, измерений) и вызовите палитру свойств нужного реквизита.
- 3В свойстве «Тип» выберите «Число» и задайте длину и точность, например длина 17, точность 4.
- 4Сохраните конфигурацию и выполните обновление конфигурации базы данных (F7).
- 5Проверьте на тестовых данных, что значения записываются и отображаются с новой разрядностью.
При увеличении точности существующие данные не пострадают: к хранимым значениям просто добавятся нулевые разряды. При уменьшении точности дробная часть будет отброшена или округлена при перезаписи данных — это необратимая потеря информации, поэтому перед таким изменением обязательно делается резервная копия информационной базы.
Если конфигурация типовая и находится на поддержке, прямое изменение реквизита приведёт к снятию объекта с полной поддержки и усложнит обновления. Альтернатива — расширение конфигурации, если изменения касаются только отображения, либо использование дополнительных реквизитов и сведений с нужной точностью.
Как изменить отображение знаков в формах без изменения данных
Если хранимая точность устраивает, а нужно только иначе показывать число пользователю, меняется формат поля. В конфигураторе откройте форму объекта, выделите поле ввода и в палитре свойств найдите «Формат» и «Формат редактирования». Здесь можно задать конструкцию вида ЧЦ=15; ЧДЦ=3, где ЧДЦ — число десятичных знаков при отображении.
Полезные параметры формата: ЧДЦ — количество знаков дробной части, ЧРД — разделитель дробной части, ЧРГ — разделитель групп разрядов, ЧН — представление нуля (например, пустая строка, чтобы ноль не выводился). Сочетание ЧЦ=17; ЧДЦ=2; ЧРГ= даст число с двумя знаками после запятой и разделением тысяч пробелом.
В управляемых формах, создаваемых программно, формат задаётся через свойство Формат элемента формы или через функцию Формат(Значение, "ЧДЦ=3") при выводе в строковые поля, сообщения и текстовые документы.
// Пример: вывод суммы с тремя знаками после запятой
СтрокаСуммы = Формат(СуммаДокумента, "ЧЦ=17; ЧДЦ=3; ЧРГ=' '");
Сообщить("Сумма: " + СтрокаСуммы);Настройка знаков после запятой в отчётах на СКД
В отчётах, построенных на системе компоновки данных, формат числа настраивается без конфигуратора — прямо в режиме «Предприятие», если разработчик открыл эту возможность, либо в настройках схемы компоновки. В типовых отчётах откройте «Настройки», перейдите на расширенный вариант настроек и найдите вкладку с оформлением полей.
Для конкретного поля в настройках СКД есть параметр «Формат», где указывается та же строка формата с ЧДЦ. В схеме компоновки (конфигуратор, закладка «Настройки» или вычисляемые поля) формат задаётся в свойствах поля набора данных. Это удобно, когда один и тот же показатель в разных отчётах должен выводиться с разной точностью: в управленческом отчёте — целыми тысячами, в бухгалтерском — с копейками.
Учтите: формат отчёта влияет только на экран и печать. При выгрузке в Excel значения передаются с фактической точностью данных, а отображение в ячейках определяется форматом, который платформа записала в файл, — обычно он соответствует формату поля, но при ручной доработке файла может отличаться.
Знаки после запятой в печатных формах
В макетах печатных форм числа выводятся либо через параметры с заданным форматом, либо через программное форматирование в модуле менеджера объекта. В табличном документе у области есть свойство «Формат», которое задаётся в конфигураторе в свойствах ячейки макета либо программно: Область.Формат = "ЧДЦ=2".
Для сумм прописью и итоговых строк в типовых конфигурациях часто используются функции общих модулей, которые сами определяют представление копеек. Если в печатной форме счёта или акта нужно показывать, например, четыре знака в цене при двух знаках в сумме, правится либо макет, либо код формирования — в зависимости от того, где задан формат конкретного поля.
Округление при расчётах: где оно на самом деле происходит
Даже при правильно настроенной точности пользователи сталкиваются с расхождениями в копейках. Причина обычно не в отображении, а в порядке округления промежуточных результатов: цена без НДС, сумма НДС и итог округляются на каждом шаге, и накопленная погрешность даёт расхождение с расчётом «в лоб».
В типовых конфигурациях порядок округления зашит в коде проведения документов и в настройках учётной политики. Менять его следует только осознанно: изменение схемы округления влияет на все последующие документы и может потребовать перепроведения периода для согласованности данных. В собственных разработках используйте функцию Окр(Значение, Разрядность, РежимОкругления) и фиксируйте единый порядок округления во всех смежных расчётах.
Проверка результата после изменений
После изменения точности или формата проверьте цепочку целиком: ввод значения в форме, запись в базу, движения по регистрам, отчёт и печатная форма. Введите тестовое значение с максимальным числом знаков, например 1234,5678, и проследите, на каком этапе оно сохраняется полностью, а где обрезается.
Как проверить результат
Все введённые знаки сохраняются после записи объекта
Лишние разряды обрезаются — точность реквизита меньше ожидаемой
Ресурсы регистров хранят ту же разрядность, что и реквизиты документа
В регистрах значения округлены сильнее — нужно менять точность ресурсов
Отображается заданное число знаков во всех формах вывода
На экране одно, в печати другое — формат задан не во всех местах
FAQ
Можно ли изменить знаки после запятой без конфигуратора?
Да, если речь об отображении: в отчётах на СКД формат поля часто доступен в пользовательских настройках, а в некоторых типовых конфигурациях есть настройки представления цен и сумм. Изменить точность хранения реквизита без конфигуратора нельзя — это свойство метаданных.
Увеличил точность реквизита, а старые данные показывают нули в новых разрядах. Это нормально?
Да. Старые значения были записаны с прежней точностью, и новых разрядов в них просто нет — платформа дополняет их нулями. Чтобы заполнить дробную часть, данные нужно перезаполнить из источника или пересчитать обработкой.
Почему в Excel после выгрузки другое количество знаков?
При сохранении табличного документа в Excel платформа передаёт и значение, и формат ячейки. Если формат в макете не задан, Excel применяет свой формат по умолчанию. Задайте формат области табличного документа явно — тогда отображение в файле совпадёт с отчётом на экране.
Как убрать нули после запятой у целых чисел, но оставить копейки у дробных?
Используйте в строке формата параметр сокращения дробной части или форматируйте программно с проверкой: если значение равно целому, выводите ЧДЦ=0, иначе ЧДЦ=2. Единый стандартный параметр формата, который автоматически прячет нулевую дробную часть, в общем случае отсутствует — обычно это решается условным форматированием.
Что будет, если уменьшить точность реквизита в рабочей базе?
При реструктуризации платформа изменит тип поля в базе данных. Хранимые значения с лишними разрядами будут приведены к новой точности при перезаписи, и исходная дробная часть будет потеряна. Остатки и итоги могут перестать сходиться с первичными документами, поэтому такое изменение делают только после резервного копирования и проверки на копии базы.
Чем отличается точность в регистре сведений от точности в документе?
Это независимые свойства: ресурс регистра и реквизит документа описываются каждый своим типом. Если в документе цена хранится с четырьмя знаками, а ресурс регистра имеет точность 2, при записи движений значение округлится — типы нужно согласовывать вручную.
Что важно запомнить
Точность хранения задаётся свойством «Точность» типа «Число» в конфигураторе, отображение — форматом поля в формах, отчётах и макетах. Формат не может показать больше знаков, чем хранится. Уменьшение точности необратимо портит данные — сначала копия базы и проверка на тестовом контуре.