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