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

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

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

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

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

Прежде чем что-то менять, важно понять, какой именно показатель требует большей точности — цена, сумма, количество, курс валюты или коэффициент. Для каждого из них в типовых конфигурациях (Бухгалтерия предприятия, Управление торговлей, ERP) предусмотрены свои механизмы, и далеко не всегда нужно вмешательство в конфигурацию. Часто достаточно изменить одну настройку в режиме «Предприятие».

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

Где именно теряется точность: определяем источник проблемы

Первый шаг — выяснить, какое значение округляется и на каком этапе. Если при вводе цены 12,3456 программа сама подставляет 12,35 — ограничение задано настройкой точности цен. Если количество в документе принимает только целые значения — ограничение стоит в типе реквизита «Количество» табличной части. Если сумма расхождения видна только в отчётах — возможно, дело в формате вывода, а не в хранимых данных.

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

Также учитывайте, что в типовых конфигурациях разрядность многих показателей определяется через определяемые типы — например, «Количество» или «Цена». Меняя точность такого типа в одном месте, вы автоматически меняете её во всех документах и регистрах, где он используется. Это удобно, но требует осторожности: затронутыми окажутся десятки объектов.

Цена обрезается до 2 знаковОграничение настройкой точности цен

Проверьте настройку точности цен в разделе администрирования

Количество только целоеТочность реквизита в метаданных

Посмотрите тип реквизита табличной части в конфигураторе

На экране округлено, в базе полноеПроблема формата отображения

Проверьте свойство «Формат» поля формы

Расхождения в копейках в отчётахНакопленные ошибки округления

Сравните суммы по строкам с итогом документа

Увеличение точности цен и валют без конфигуратора

В типовых конфигурациях «1С:Бухгалтерия» и «1С:Управление торговлей» предусмотрена пользовательская настройка количества знаков после запятой для цен. В Бухгалтерии путь обычно такой: «Администрирование → Параметры учета» или «Главное → Настройки → Параметры учета», где задаётся точность цен и сумм. В Управлении торговлей настройка находится в разделе «Настройки и справочники → Настройка НСИ → Ценообразование» либо в параметрах учётной системы, в зависимости от версии.

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

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

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

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

Если пользовательских настроек нет или они не затрагивают нужный реквизит, точность меняется в конфигураторе через свойства числового типа. У любого числового реквизита есть два параметра: «Длина» (общее количество цифр) и «Точность» (количество знаков после запятой). Например, длина 15 и точность 2 означают число вида 9999999999999,99.

Чтобы увеличить разрядность: откройте конфигуратор, найдите нужный объект (документ, справочник, регистр), раскройте его реквизиты, выделите числовой реквизит и в палитре свойств увеличьте значение «Точность». При увеличении точности обычно стоит пропорционально увеличить и длину, чтобы не уменьшить максимально возможное целое значение: сумма цифр распределяется между целой и дробной частями.

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

Обновление конфигурации базы данных и реструктуризация

После изменения свойств типа требуется обновить конфигурацию базы данных: «Конфигурация → Обновить конфигурацию базы данных». Платформа выполнит реструктуризацию — изменит структуру таблиц под новый формат хранения. При увеличении точности реструктуризация проходит безболезненно: существующие значения просто дополняются нулями в дробной части.

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

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

Точность в формулах, отчётах и печатных формах

Даже при правильно настроенном хранении пользователь может видеть округлённые значения в отчётах и печатных формах. В отчётах на СКД формат числа задаётся в настройках поля на вкладке «Наборы данных» или в ресурсах — там можно указать нужное число знаков в дробной части. В макетах печатных форм формат задаётся в свойствах параметра или в модуле через функцию Формат().

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

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

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

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

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

Вторая ошибка — игнорирование обменов данными. Если база обменивается с другой конфигурацией (например, УТ с Бухгалтерией), точность должна совпадать в обеих системах, иначе при выгрузке значения будут обрезаться на стороне приёмника. То же касается выгрузок в Excel, XML и интеграций через веб-сервисы.

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

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

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

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

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

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

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

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

Ввод цены в документе
Норма

Принимает все заданные знаки после запятой

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

Значение автоматически округляется при вводе

Движения в регистрах
Норма

Записи содержат полную дробную часть

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

В регистре значения обрезаны до 2 знаков

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

Выводится столько знаков, сколько задано

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

На печати меньше знаков, чем в базе

Обмен с другой базой
Норма

Значения переносятся без потерь

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

В приёмнике дробная часть усечена

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

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

Да, если речь о ценах и суммах в типовых конфигурациях: настройка точности доступна в режиме «Предприятие» в разделе администрирования. Но если ограничение задано типом реквизита в метаданных (например, количество в табличной части), без конфигуратора не обойтись.

Изменятся ли старые документы после увеличения точности?

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

Что произойдёт, если уменьшить точность обратно?

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

Почему после увеличения точности появились расхождения в копейках?

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

Нужно ли менять точность в обеих базах при обмене данными?

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

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

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

Итог

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

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