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