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

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

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

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

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

Задача возникает в типовых сценариях: учёт ТМЦ с дробным количеством (метры, литры, килограммы с тысячными долями), цены с четырьмя знаками при импорте, курсы валют, коэффициенты пересчёта. Во всех случаях логика одна: увеличить точность числового типа там, где хранится значение, и при необходимости скорректировать формат вывода.

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

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

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

Важно различать точность хранения и формат отображения. Формат в свойствах поля формы или в функции Формат() влияет только на то, как число показывается пользователю. Если точность реквизита равна 2, то значение 10,567 сохранится как 10,57, и никакой формат не вернёт отсечённый разряд — данные уже потеряны.

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

Основной способ — изменить свойства реквизита в конфигураторе. Для этого нужны права на конфигурирование и монопольный доступ к базе при обновлении конфигурации базы данных.

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

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

Обратите внимание на связанные объекты: тот же реквизит может участвовать в итогах регистров, в запросах с явным приведением типов, в планах обмена. После изменения точности стоит проверить, не задано ли где-то в коде округление до двух знаков через Окр().

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

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

Первый вариант — дополнительные реквизиты и сведения, которые можно добавить в пользовательском режиме (раздел «Администрирование» → «Общие настройки» → «Дополнительные реквизиты и сведения»). Точность числового допреквизита задаётся при его создании, и стандартная поддержка при этом не нарушается. Минус — такие данные не участвуют в типовых проведениях и расчётах автоматически.

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

Сравнение вариантов

Изменение в конфигураторе

Полный контроль над типом, но требует снятия с поддержки и реструктуризации данных.

Дополнительный реквизит

Быстро и безопасно, но значение не участвует в типовых расчётах и проведении.

Расширение конфигурации

Сохраняет поддержку типовой и даёт полноценный реквизит, но требует навыков разработки.

Формат вывода

Меняет только отображение; подходит, если точность хранения уже достаточна.

Настройка формата вывода и округления

Когда точность хранения достаточна, но на экране или в печатной форме видно меньше знаков, проблема решается форматом. В свойствах поля формы есть параметр «Формат», где можно указать, например, ЧДЦ=4 — четыре десятичных знака. Аналогично в коде: Формат(Значение, "ЧДЦ=4; ЧРД=,").

В запросах и СКД точность вычисляемых полей определяется выражением. Если делить два целых числа, результат может получиться целым — тогда используют ВЫРАЗИТЬ(... КАК ЧИСЛО(15,4)), чтобы явно задать четыре знака после запятой. В настройках СКД на вкладке «Наборы данных» или «Настройки» полю также можно назначить оформление с нужным форматом.

bsl
// Округление до 4 знаков в коде
Цена = Окр(Сумма / Количество, 4);
// Форматированный вывод с 4 знаками
Строка = Формат(Цена, "ЧДЦ=4");

Помните, что функция Окр() округляет по математическим правилам. Если нужно отсечение без округления, используют приём с Цел() и умножением на степень десяти.

Частые ошибки и риски при изменении точности

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

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

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

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

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

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

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

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

Ввод значения с 3–4 знаками и повторное открытие
Норма

Все знаки сохранились после записи

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

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

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

В ресурсах видна дробная часть

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

Значения округлены — проверьте точность ресурса

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

Выводится нужное число знаков

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

Форма обрезает — нужно поправить формат в макете

Обмен и выгрузка
Норма

В файле присутствуют все разряды

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

Значения округляются при выгрузке — проверьте правила обмена

Часто задаваемые вопросы

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

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

Что будет со старыми данными после увеличения точности?

Существующие записи не изменятся: у них просто появится возможность хранить дополнительные разряды, сами значения останутся прежними. Реструктуризация при увеличении точности данных не удаляет, в отличие от её уменьшения.

Почему в отчёте всё равно два знака, хотя точность увеличена?

Скорее всего, в настройках отчёта или в запросе задан формат либо приведение типа с двумя знаками. Проверьте выражения вида ВЫРАЗИТЬ(... КАК ЧИСЛО(15,2)) и оформление поля в СКД.

Как задать точность для курсов валют?

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

Опасно ли уменьшать количество знаков после запятой?

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

Как вывести четыре знака в печатной форме?

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

Итог

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

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