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