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

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

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

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

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

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

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

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

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

Первый уровень — определяющий тип данных и реквизиты объектов в конфигураторе. Здесь задаётся физическая точность хранения: например, Число(15,2) означает 15 разрядов всего, из них 2 после запятой. Второй уровень — свойство «Формат» у элемента формы, колонки таблицы или поля отчёта. Третий — форматная строка в макете печатной формы. Четвёртый — явное форматирование в коде через функцию Формат() или при выводе в строку.

Также точность может быть задана централизованно через определяемые типы (например, «Деньги», «Количество») — тогда изменение типа повлияет сразу на все реквизиты, которые его используют. Это удобно, но требует осторожности: эффект будет массовым.

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

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

Откройте конфигуратор, найдите нужный объект (справочник, документ, регистр) и перейдите к реквизиту. В палитре свойств найдите поле «Тип» и откройте квалификатор числа — там задаются длина и точность. Измените значение точности на нужное и обновите конфигурацию базы данных (F7 или через меню «Конфигурация — Обновить конфигурацию базы данных»).

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

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

Если реквизит использует определяемый тип, менять точность нужно в самом определяемом типе (ветка «Общие — Определяемые типы»). Учтите, что это затронет все объекты, где тип применяется, — проверьте список ссылок на тип перед изменением.

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

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

Самый простой вариант форматной строки — ЧДЦ=2, где цифра — количество десятичных знаков. Строка может комбинировать несколько параметров: ЧДЦ=2; ЧРД=.; ЧГ=3,0 — два знака после запятой, точка как разделитель дробной части, группировка разрядов по три. Полный синтаксис описан в синтакс-помощнике по ключевому слову «Форматная строка».

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

Как задать знаки после запятой в коде

Во встроенном языке 1С для форматирования чисел применяется функция Формат(). Она принимает значение и форматную строку и возвращает текстовое представление числа с нужной точностью.

bsl
Цена = 1234.5678;
СтрокаДляПечати = Формат(Цена; "ЧДЦ=2");      // "1 234,57"
СтрокаБезГрупп = Формат(Цена; "ЧДЦ=3; ЧГ=0"); // "1234,568"
Округленное = Окр(Цена; 2);                    // 1234,57 — число, а не строка

Различайте две задачи. Если нужно получить строку для вывода в сообщение, печатную форму или файл — используйте Формат(). Если нужно округлить само число для дальнейших расчётов — используйте Окр(Число; Разрядность), которая возвращает число. Частая ошибка — округлять через Формат() и потом пытаться складывать строки.

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

Как настроить точность в отчётах и печатных формах

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

Пользовательский способ без конфигуратора: в режиме предприятия откройте настройки отчёта («Ещё — Изменить вариант»), перейдите на закладку «Поля» или «Условное оформление» и для нужного поля задайте формат. Это удобно, когда прав на конфигуратор нет, а вид отчёта нужно поправить.

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

Способы изменения знаков после запятой

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

Меняет хранение данных. Подходит, когда нужна реальная точность в расчётах. Требует реструктуризации и резервной копии.

Форматная строка поля или отчёта

Меняет только отображение. Быстро и безопасно, но итоги могут расходиться с видимыми значениями из-за скрытых разрядов.

Формат() или Окр() в коде

Гибкий вариант для печатных форм, выгрузок и расчётов. Требует доступа к изменению модулей или внешней обработки.

Настройки отчёта в режиме предприятия

Доступен пользователю без конфигуратора. Работает только для отчётов на СКД и не влияет на документы и печатные формы.

Типичные ошибки и ограничения

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

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

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

Типичные ошибки
01
Менять формат поля вместо точности реквизита — данные в базе остаются с лишними разрядами, отчёты расходятся с экраном
02
Уменьшать точность без копии базы — округление необратимо, восстановить исходные значения невозможно
03
Округлять через Формат() и использовать результат в расчётах — Формат возвращает строку, для чисел нужен Окр()
04
Менять определяемый тип без проверки ссылок — точность изменится сразу во многих объектах, включая неожиданные
05
Забывать про макеты печатных форм — в документе два знака, а на печати выводятся четыре

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

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

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

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

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

Значение в базе после записи
Норма

Хранится ровно столько знаков, сколько задано в точности реквизита

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

Лишние разряды обрезаются не так, как ожидалось, или хранятся скрыто

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

Везде одинаковое число знаков, итоги сходятся с видимыми значениями

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

В форме два знака, в отчёте четыре, итог не сходится с суммой строк

Печатная форма и выгрузки
Норма

Формат задан в макете или коде, числа выводятся единообразно

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

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

Частые вопросы

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

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

Почему после установки формата ЧДЦ=2 итог не сходится с суммой строк?

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

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

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

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

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

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

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

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

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

Итог

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

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