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

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

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

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

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

Разрядность дробной части в 1С задаётся свойством «Точность» в описании типа «Число». Изменить её можно тремя путями: через настройку в пользовательском режиме (если конфигурация это позволяет), через конфигуратор с изменением метаданных и программно — в обработчиках или при формировании значений. Выбор способа зависит от того, типовая у вас конфигурация или доработанная, и где именно теряется точность.

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

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

Каждый числовой реквизит в 1С описывается тремя параметрами: длина (общее количество цифр), точность (количество цифр после запятой) и признак неотрицательности. Например, запись «Число(15,2)» означает число длиной до 15 знаков, из которых 2 — дробная часть. Если записать «Число(15,4)», то в поле можно будет ввести и сохранить четыре знака после запятой.

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

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

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

Основной способ — изменение свойств реквизита в конфигураторе. Откройте конфигурацию, найдите нужный объект (например, документ «Реализация товаров и услуг»), раскройте его табличную часть и выберите реквизит «Цена». В палитре свойств найдите поле «Точность» и увеличьте значение, например с 2 до 4. Заодно проверьте «Длину»: сумма знаков целой и дробной части не должна превышать максимально допустимую длину числа в используемой СУБД.

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

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

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

Настройка точности в пользовательском режиме

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

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

Если нужной настройки в пользовательском режиме нет, а конфигурация типовая и стоит на поддержке, изменение точности через конфигуратор потребует снятия объекта с полной поддержки. Это усложнит последующие обновления: при каждом обновлении платформа будет спрашивать, как разрешать конфликт по изменённому реквизиту.

Программное управление разрядностью

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

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

Для отображения в формах и печатных бланках используют форматную строку: свойство «Формат» поля ввода или функцию Формат() с параметром вида «ЧДЦ=4» (число десятичных цифр). Это меняет только представление, не затрагивая хранимые данные, и является самым безопасным способом «увеличить разрядность» на экране и в отчётах.

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

// Форматирование для вывода
СтрокаЦены = Формат(Цена, "ЧДЦ=4; ЧРД=,");

// Описание типа с точностью 4
Квалификатор = Новый КвалификаторыЧисла(15, 4);
Описание = Новый ОписаниеТипов("Число", Квалификатор);

Типичные сценарии и их решение

Копеечные расхождения в суммах документов

Если сумма по строке считается как цена × количество и не сходится с первичкой на копейки, обычно виновата точность цены. Решение — увеличить точность реквизита «Цена» до 3–4 знаков по всей цепочке хранения. Альтернатива без изменения метаданных — вводить сумму напрямую, а цену вычислять обратным расчётом, что поддерживается во многих типовых документах.

Курсы валют и пересчёты

Для экзотических валют или точных расчётов используйте кратность: курс 27,4563 за 100 единиц вместо попытки записать 0,274563. Это штатный механизм, не требующий изменения конфигурации и корректно работающий во всех пересчётах.

Вес, объём, нормы расхода

Количественные реквизиты (вес в кг, объём, нормы списания материалов) часто требуют 3 и более знаков. Здесь изменение точности ресурса регистра накопления «количество» — стандартная практика, но увеличивайте её с запасом сразу: повторная реструктуризация той же таблицы — лишняя нагрузка на базу.

Сравнение способов

Форматная строка (ЧДЦ)

Только отображение; безопасно, не требует изменений базы, но хранимая точность не меняется

Настройка в пользовательском режиме

Подходит для типовых конфигураций; доступно не для всех реквизитов

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

Полноценное решение; требует реструктуризации и усложняет обновление типовых конфигураций

Кратность валюты

Лучший вариант для курсов; не применим к ценам и количествам

Проверка результата и ограничения

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

Учтите ограничения: общая длина числа в 1С ограничена (для большинства СУБД — 38 знаками, но практический предметный предел обычно задаёт конфигурация), и увеличение точности за счёт длины целой части может привести к переполнению при больших суммах. Также помните, что обмены данными с другими системами (EDI, сайт, банковские клиенты) могут принимать только два знака — тогда на стыке снова появится округление.

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

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

Ввод значения в документ
Норма

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

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

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

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

В записях регистра та же точность, что и в документе

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

В регистре значение округлено — точность ресурса не изменена

Отчёты и печатные формы
Норма

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

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

Отчёт показывает два знака — нужно поправить формат в макете или СКД

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

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

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

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

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

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

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

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

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

Пропадут ли данные при увеличении точности?

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

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

Потому что у полей отчёта и печатных форм задан собственный формат вывода. Откройте настройки поля в СКД или макет печатной формы и измените формат, например на «ЧДЦ=4». Это отдельный слой настройки, не связанный с точностью хранения.

Как задать больше знаков для курса валюты?

Штатный способ — использовать кратность: задавать курс за 10, 100 или 1000 единиц валюты. Это позволяет сохранить точность пересчётов без изменения конфигурации. Увеличение точности самого реквизита курса — крайняя мера для сильно доработанных конфигураций.

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

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