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