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

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

Как в 1С снять округление: пошаговая инструкция

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

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

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

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

Как определить, где именно задано округление

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

Дополнительная проверка — посмотреть значение через запрос или консоль кода. Если в базе хранится 12,3456, а в форме видно 12,35, метаданные трогать не нужно: достаточно поправить свойство «Формат» у поля ввода или в макете печатной формы. Если же в базе уже лежит 12,35 — точность теряется при записи, и нужно менять разрядность реквизита или искать округление в алгоритмах.

Отдельный случай — типовые настройки учёта. В ряде конфигураций (Управление торговлей, Комплексная автоматизация, ERP) есть параметры вроде точности цен скидок и наценок или порядка округления сумм документов. Их стоит проверить до вмешательства в конфигуратор: возможно, задача решается одной настройкой в интерфейсе.

Значение обрезается при записиОграничение в метаданных или коде

Проверить разрядность реквизита в конфигураторе и поиск Окр( в модулях

В базе значение точное, на экране округленоПроблема только в формате вывода

Проверить свойство Формат поля ввода и макет печатной формы

Округляются суммы в конкретном документеНастройка учёта или алгоритм расчёта

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

Снятие округления через конфигуратор: разрядность реквизита

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

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

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

Округление в коде: функция Окр и алгоритмы расчёта

Даже при достаточной разрядности реквизита значения могут округляться программно. В модулях конфигурации встречаются конструкции вида Окр(Сумма, 2) или Окр(Цена * Количество, 2, РежимОкругления.Окр15как20). Такой код принудительно приводит результат к двум знакам, и изменение метаданных на него не повлияет.

Чтобы найти места округления, используйте глобальный поиск по конфигурации (Ctrl+Shift+F в конфигураторе) по строке «Окр(». Проверяйте каждое вхождение на предмет того, относится ли оно к вашему расчёту. Убирать или ослаблять округление в коде нужно осторожно: оно часто стоит там осознанно, чтобы суммы по строкам сходились с итогом документа и с данными смежных систем.

Типичный пример — расчёт НДС и итоговых сумм. Если убрать округление цены, но оставить округление суммы строки, расхождения в копейках всё равно останутся, просто переедут в другое место. Поэтому правки в алгоритмах делайте целиком по цепочке расчёта: цена → сумма строки → итог документа → налог.

bsl
// Было: принудительное округление до 2 знаков
СуммаСтроки = Окр(Цена <em> Количество, 2);

// Стало: расчёт без округления (точность задаёт реквизит)
СуммаСтроки = Цена </em> Количество;

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

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

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

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

Маршрут решения

Как выбрать действие

Округление задано в настройках учёта или ценообразованияИзмените параметр в интерфейсе, конфигуратор не нужен
Реквизит обрезает знаки при записиУвеличьте точность реквизита в конфигураторе и обновите конфигурацию
В коде есть Окр() по цепочке расчётаСкорректируйте алгоритм целиком, проверив сходимость итогов
Значение хранится точно, но выводится округлённымПоправьте свойство Формат поля или макет печатной формы

Формат отображения: когда округление только визуальное

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

Чтобы снять визуальное округление, откройте свойства поля в конфигураторе и измените или очистите формат: например, установите ЧДЦ=4 или уберите параметр вовсе — тогда выведется столько знаков, сколько позволяет тип данных. Для печатных форм аналогичное свойство задаётся у параметра области макета.

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

Округление количества и курсов валют

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

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

Общий принцип: проверяйте всю цепочку хранения данных. Если документ позволяет ввести 4 знака, а регистр накопления, в который он проводится, имеет точность 2 — итоговое значение в учёте всё равно округлится. Точность нужно поднимать согласованно во всех связанных объектах.

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

Проверка результата и границы безопасной работы

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

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

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

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

Ввод значения с лишними знаками и запись
Норма

Значение сохраняется полностью после перепроведения

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

Знаки после запятой обрезаются — точность поднята не везде

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

Итог сходится с суммой строк без расхождений

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

Появились копеечные расхождения после снятия Окр()

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

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

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

На экране точно, на печати округлено — не поправлен формат макета

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

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

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

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

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

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

Скорее всего, округление было убрано не по всей цепочке расчёта: например, цена считается точно, а сумма строки или НДС по-прежнему округляются функцией Окр. Проверьте весь алгоритм от цены до итога документа.

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

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

Как снять округление только в печатной форме?

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

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

Проверьте, не применяется ли в запросе ВЫРАЗИТЬ с указанием меньшей точности или функция округления. Также формат может задаваться уже на уровне отчёта или обработки, которая выводит результат запроса.

Итог

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

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