Разработка и Конфигурация · 12 мин
Как в 1С снять округление: пошаговая инструкция
Разбираем, как в 1С снять округление цен, сумм и количества: настройка разрядности в конфигураторе, параметры учёта, округление в расчётах и печатных формах.
Округление в 1С появляется там, где у числового реквизита задана ограниченная точность: платформа автоматически отбрасывает «лишние» знаки после запятой при записи данных. Типичная ситуация — цена вводится с тремя знаками, а сохраняется с двумя, или количество товара округляется до целого. Чтобы снять округление, нужно найти, где именно оно задано: в конфигурации, в настройках учёта, в коде расчёта или в формате печатной формы.
Важно понимать: «снять округление» можно на четырёх разных уровнях, и действия в каждом случае отличаются. Первый уровень — разрядность реквизита в конфигураторе. Второй — функциональные опции и настройки учётной политики. Третий — программное округление в алгоритмах (функция Окр). Четвёртый — отображение чисел в формах и печатных документах, где реальное значение хранится точно, но показывается укороченным.
Ниже разобраны все сценарии: от простой настройки для пользователя типовой конфигурации до изменения метаданных через конфигуратор. Прежде чем что-либо менять, определите, на каком уровне возникает округление — это сэкономит время и убережёт от лишних правок конфигурации.
Как определить, где именно задано округление
Первый шаг — диагностика. Введите в проблемное поле значение с большим числом знаков, например 12,3456, и запишите документ или элемент справочника. Если после записи значение обрезалось — округление задано на уровне метаданных (разрядность реквизита) или в коде. Если значение сохранилось полностью, но на экране и в печати выглядит округлённым — проблема только в формате отображения.
Дополнительная проверка — посмотреть значение через запрос или консоль кода. Если в базе хранится 12,3456, а в форме видно 12,35, метаданные трогать не нужно: достаточно поправить свойство «Формат» у поля ввода или в макете печатной формы. Если же в базе уже лежит 12,35 — точность теряется при записи, и нужно менять разрядность реквизита или искать округление в алгоритмах.
Отдельный случай — типовые настройки учёта. В ряде конфигураций (Управление торговлей, Комплексная автоматизация, ERP) есть параметры вроде точности цен скидок и наценок или порядка округления сумм документов. Их стоит проверить до вмешательства в конфигуратор: возможно, задача решается одной настройкой в интерфейсе.
Проверить разрядность реквизита в конфигураторе и поиск Окр( в модулях
Проверить свойство Формат поля ввода и макет печатной формы
Проверить параметры округления в настройках конфигурации
Снятие округления через конфигуратор: разрядность реквизита
Основной способ — увеличить точность числового реквизита в метаданных. Откройте конфигуратор, найдите нужный объект (справочник, документ, регистр), раскройте его реквизиты и выберите поле, которое округляется. В палитре свойств найдите «Длина» и «Точность»: точность — это количество знаков после запятой. Увеличьте её до нужного значения, например с 2 до 4, и при необходимости увеличьте общую длину числа, чтобы целая часть не обрезалась.
После изменения точности платформа потребует реструктуризацию базы при обновлении конфигурации. Для числовых полей это обычно безопасная операция: существующие значения сохраняются, просто появляется возможность хранить больше знаков. Но на больших таблицах реструктуризация может занять заметное время, поэтому обновление лучше выполнять в нерабочие часы и только после резервного копирования.
Если конфигурация типовая и находится на поддержке, прямое изменение реквизита снимет объект с полной поддержки. В этом случае рассмотрите альтернативы: расширение конфигурации (для некоторых объектов позволяет менять свойства), дополнительный реквизит с нужной точностью или хранение точного значения в отдельном регистре сведений.
Округление в коде: функция Окр и алгоритмы расчёта
Даже при достаточной разрядности реквизита значения могут округляться программно. В модулях конфигурации встречаются конструкции вида Окр(Сумма, 2) или Окр(Цена * Количество, 2, РежимОкругления.Окр15как20). Такой код принудительно приводит результат к двум знакам, и изменение метаданных на него не повлияет.
Чтобы найти места округления, используйте глобальный поиск по конфигурации (Ctrl+Shift+F в конфигураторе) по строке «Окр(». Проверяйте каждое вхождение на предмет того, относится ли оно к вашему расчёту. Убирать или ослаблять округление в коде нужно осторожно: оно часто стоит там осознанно, чтобы суммы по строкам сходились с итогом документа и с данными смежных систем.
Типичный пример — расчёт НДС и итоговых сумм. Если убрать округление цены, но оставить округление суммы строки, расхождения в копейках всё равно останутся, просто переедут в другое место. Поэтому правки в алгоритмах делайте целиком по цепочке расчёта: цена → сумма строки → итог документа → налог.
// Было: принудительное округление до 2 знаков
СуммаСтроки = Окр(Цена <em> Количество, 2);
// Стало: расчёт без округления (точность задаёт реквизит)
СуммаСтроки = Цена </em> Количество;Настройки округления в типовых конфигурациях
В ряде типовых решений округление управляется из интерфейса, без конфигуратора. В «Управлении торговлей» и «ERP» проверьте раздел настроек ценообразования: там задаётся точность цен, порядок округления цен по видам цен и правила округления в большую или меньшую сторону. В «Бухгалтерии предприятия» суммы по умолчанию хранятся с двумя знаками, и это ограничение заложено в метаданных — изменить его можно только через конфигуратор.
Отдельно проверьте настройки валют и курсов: при пересчёте валютных сумм в рубли результат округляется до копеек, и это поведение заложено в типовых алгоритмах. Если нужна большая точность в расчётах, иногда проще вести учёт в валюте с точными ценами, а пересчёт выполнять только на этапе итогов.
В зарплатных конфигурациях (ЗУП) округление применяется при расчёте начислений и налогов, и оно регламентировано правилами учёта. Снимать его там без необходимости не стоит: расхождения с отчётностью в фонды создадут больше проблем, чем лишние знаки после запятой.
Как выбрать действие
Формат отображения: когда округление только визуальное
Частая ситуация: данные в базе точные, но пользователь видит округлённые числа в форме документа, в отчёте или на печати. За это отвечает свойство «Формат» у поля ввода, колонки таблицы или области макета. Строка формата вида ЧДЦ=2 выводит два знака после запятой, хотя хранится значение с большей точностью.
Чтобы снять визуальное округление, откройте свойства поля в конфигураторе и измените или очистите формат: например, установите ЧДЦ=4 или уберите параметр вовсе — тогда выведется столько знаков, сколько позволяет тип данных. Для печатных форм аналогичное свойство задаётся у параметра области макета.
В отчётах на СКД формат задаётся в настройках поля на закладке «Наборы данных» или в пользовательских настройках оформления. Пользователь может изменить его самостоятельно через «Изменить вариант отчёта» без привлечения разработчика — это самый безопасный сценарий, который стоит проверить в первую очередь.
Округление количества и курсов валют
Количество в документах обычно имеет точность 3 знака, но в некоторых конфигурациях или отраслевых решениях оно ограничено целыми числами. Если товар учитывается в штуках, а отгружать нужно долями (например, 0,5 упаковки), увеличьте точность реквизита «Количество» в табличной части документа и проверьте, что регистры учёта, куда он пишет движения, тоже имеют достаточную разрядность — иначе данные обрежутся уже на уровне регистра.
Курсы валют в типовых конфигурациях хранятся с точностью, которой достаточно для бухгалтерских расчётов, но при обратных пересчётах (из рублей в валюту) могут накапливаться расхождения. Полностью снять округление здесь нельзя — оно следует из правил учёта — но можно повысить точность промежуточных расчётов, увеличив разрядность курса в регистре сведений «Курсы валют».
Общий принцип: проверяйте всю цепочку хранения данных. Если документ позволяет ввести 4 знака, а регистр накопления, в который он проводится, имеет точность 2 — итоговое значение в учёте всё равно округлится. Точность нужно поднимать согласованно во всех связанных объектах.
Проверка результата и границы безопасной работы
После изменений выполните контрольную проверку на тестовой копии: введите значение с максимальным числом знаков, запишите, проведите документ и сверьте данные в регистрах и отчётах. Убедитесь, что итоги сходятся, печатные формы выводят нужную точность, а обмены с другими системами (ЕДИ, банк-клиент, сайт) корректно воспринимают новое число знаков — некоторые форматы обмена жёстко ограничивают разрядность.
Безопасные для самостоятельного выполнения действия: изменение формата отображения в отчётах и настройках, корректировка параметров учёта в интерфейсе, работа с тестовой копией базы. К разработчику стоит обращаться, когда требуется менять метаданные рабочей базы, править типовые алгоритмы расчёта или согласовывать точность с внешними системами — цена ошибки здесь заметно выше.
Как проверить результат
Значение сохраняется полностью после перепроведения
Знаки после запятой обрезаются — точность поднята не везде
Итог сходится с суммой строк без расхождений
Появились копеечные расхождения после снятия Окр()
Выводится нужное число знаков
На экране точно, на печати округлено — не поправлен формат макета
Частые вопросы
Можно ли снять округление без конфигуратора?
Да, если округление задано настройками учёта (например, параметры ценообразования) или форматом отображения в отчёте. Если же ограничение заложено в разрядности реквизита или в коде, без конфигуратора или расширения не обойтись.
Что будет со старыми данными после увеличения точности?
Существующие значения сохранятся в том виде, в каком были записаны — дополнительные знаки появятся только у новых данных. Ретроспективно «вернуть» отброшенные знаки невозможно: они не хранились в базе.
Почему после снятия округления появились расхождения в копейках?
Скорее всего, округление было убрано не по всей цепочке расчёта: например, цена считается точно, а сумма строки или НДС по-прежнему округляются функцией Окр. Проверьте весь алгоритм от цены до итога документа.
Нарушит ли изменение точности обновление типовой конфигурации?
Прямое изменение реквизита снимает объект с полной поддержки, и при обновлении потребуется ручное сопоставление изменений. Чтобы снизить риски, используйте расширение конфигурации или дополнительные реквизиты там, где это возможно.
Как снять округление только в печатной форме?
Откройте макет печатной формы в конфигураторе, выберите нужную ячейку-параметр и в свойстве «Формат» укажите большее число знаков (например, ЧДЦ=4) или очистите формат. Данные и расчёты при этом не меняются.
Почему в запросе число выводится округлённым, хотя в базе оно точное?
Проверьте, не применяется ли в запросе ВЫРАЗИТЬ с указанием меньшей точности или функция округления. Также формат может задаваться уже на уровне отчёта или обработки, которая выводит результат запроса.
Что важно запомнить
Сначала определите уровень округления: метаданные, код, настройки учёта или формат вывода. Точность поднимайте согласованно по всей цепочке — реквизит, регистры, алгоритмы. Перед изменениями в рабочей базе делайте копию и проверяйте результат на тестовых данных.