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

Учет и Финансы · 10 мин

Как отменить округление в 1С

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

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

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

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

Как определить, откуда берётся округление

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

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

В документе видно 2 знака, нужно большеОграничение разрядности реквизита

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

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

Найти функцию Окр() в модуле документа или общем модуле

В базе точно, на печати округленоФормат вывода в макете

Проверить форматную строку в свойствах ячейки макета

Округляется зарплата или налогиНастройки учётной политики

Проверить параметры расчёта в настройках программы

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

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

Путь зависит от конфигурации, но общая логика такова: откройте раздел настроек номенклатуры и ценообразования (обычно «НСИ и администрирование» → «Настройка НСИ и разделов» → «Номенклатура» или «Ценообразование») и найдите параметры точности. Увеличьте число знаков после запятой до требуемого значения, например до 3–4 для цен.

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

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

Отключение округления в типовых механизмах расчёта

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

В 1С:ЗУП и бухгалтерских конфигурациях часть округлений задана методологически: например, НДФЛ по законодательству исчисляется в полных рублях, и отключить это округление нельзя — оно не ошибка программы, а требование нормативов. А вот округление начислений по окладу или аванса иногда регулируется настройками расчёта.

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

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

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

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

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

Например, реквизит «Цена» с типом Число(15,2) всегда хранит два знака после запятой — всё остальное отсекается при записи. Изменив тип на Число(15,4), вы получите четыре знака. После изменения типа потребуется обновление конфигурации базы данных; при сужении типа (уменьшении длины) платформа может потребовать реструктуризацию с потерей данных, поэтому расширять разрядность безопаснее, чем сужать.

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

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

Когда округление выполняется алгоритмом, в коде встречается функция Окр() или конструкции вида Цел(). Чтобы отменить округление, нужно найти место расчёта и убрать или изменить эту функцию. Типичные места: модуль объекта документа (процедуры «РассчитатьСумму»), общие модули расчёта цен и скидок, модули менеджеров.

Пример типичного кода с округлением и без него:

// Было: сумма округляется до копеек

Сумма = Окр(Цена * Количество, 2);

// Стало: сумма хранится с полной точностью

Сумма = Цена * Количество;

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

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

Округление только в печатной форме и отчётах

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

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

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

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

Значение в форме документа
Норма

Отображается нужное число знаков после запятой

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

Значение по-прежнему обрезано — проверьте разрядность реквизита

Проводки и отчёты
Норма

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

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

В отчёте округление — проверьте ресурсы регистра и формат поля

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

Выводится точное значение

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

На печати округлено — проверьте формат ячейки макета

Пересчёт старых документов
Норма

Новые документы считаются корректно

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

Старые документы остались округлёнными — требуется перепроведение

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

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

Вторая ошибка — ожидать, что изменение настроек пересчитает прошлые данные. Хранящиеся значения уже округлены; восстановить «потерянные» знаки невозможно, их можно только перезаполнить из источника или пересчитать заново, если сохранилась исходная точная цена.

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

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

FAQ

Можно ли отменить округление НДФЛ до целых рублей?

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

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

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

Как найти все места в коде, где выполняется округление?

В конфигураторе используйте глобальный поиск (Ctrl+Shift+F) по строке «Окр(» по всей конфигурации. Дополнительно проверьте функции Цел() и форматные строки с параметром ЧДЦ в макетах.

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

Скорее всего, ограничение задано в формате вывода поля отчёта или в разрядности ресурса регистра, из которого отчёт берёт данные. Проверьте настройки оформления поля в СКД и тип ресурса регистра.

Безопасно ли менять тип реквизита в рабочей базе?

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

Итог

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

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