Учет и Финансы · 10 мин
Как установить округление в 1С
Пошаговая инструкция, как установить округление в 1С: настройка валют, цен, зарплаты и функции Окр() в коде. Типичные ошибки и проверка результата.
Округление в 1С встречается повсюду: в ценах продажи, суммах документов, расчёте зарплаты, НДС и печатных формах. Проблема в том, что единого переключателя «округлять всё» в программе нет — точность и правила округления задаются в разных местах в зависимости от задачи. Поэтому сначала нужно понять, какой именно показатель округляется неверно, а уже потом искать соответствующую настройку.
Чаще всего пользователи сталкиваются с тремя ситуациями: копейки в ценах и суммах документов, расхождения в расчёте зарплаты и налогов, а также «лишние» знаки после запятой в отчётах и печатных формах. Для каждой ситуации есть свой механизм — от настройки валют и видов цен до функции Окр() во встроенном языке.
Где в 1С вообще встречается округление
Прежде чем что-то менять, определите, к какому типу относится ваша задача. От этого зависит, в каком разделе программы искать настройку и получится ли обойтись без доработок конфигурации.
Настройки вида цен: порядок округления и триггерная цена
Разрядность валюты и порядок расчёта НДС
Настройки расчёта зарплаты и способы округления начислений
Функция Окр() или форматная строка в выводе
Типичные зоны округления в типовых конфигурациях (1С:Бухгалтерия, Управление торговлей, ЗУП, ERP):
- цены номенклатуры — порядок округления в виде цен;
- суммы документов — разрядность валюты взаиморасчётов;
- НДС и налоги — правила, заданные в механизмах расчёта;
- зарплата и взносы — настройки округления начислений;
- отчёты и печатные формы — формат вывода чисел;
- произвольные расчёты в коде — функция Окр().
Округление цен в виде цен
В конфигурациях с торговым учётом (УТ, ERP, Комплексная автоматизация, Розница) округление цен задаётся в карточке вида цен. Откройте справочник «Виды цен», выберите нужный вид и найдите блок настроек округления. Обычно там доступны два параметра: «Порядок округления» (до 0,01, до 0,1, до 1, до 10, до 100 рублей) и «Округлять в большую сторону» — флаг, определяющий направление округления.
Если включён порядок округления до 1 рубля, цена 247,38 станет 247 при обычном округлении или 248 при округлении в большую сторону. В некоторых конфигурациях есть также «триггерная цена» — порог, при достижении которого округление применяется. Например, округлять до десятков только цены выше 1000 рублей.
- 1Откройте раздел НСИ и администрирование → Ценообразование (или CRM и маркетинг → Виды цен)
- 2Выберите нужный вид цен и перейдите к настройкам округления
- 3Установите порядок округления (например, до 1 рубля) и направление
- 4Сохраните вид цен и пересчитайте цены документом «Установка цен номенклатуры»
- 5Проверьте результат на нескольких позициях с разной ценой
Важно: изменение настроек вида цен не пересчитывает уже установленные цены автоматически. Чтобы новые правила применились, цены нужно переустановить — создать новый документ установки цен или перезаполнить существующий.
Округление сумм документов и валютная разрядность
Количество знаков после запятой в денежных суммах определяется настройками валюты. В справочнике «Валюты» (Администрирование → Валюты) у каждой валюты есть параметр разрядности — для рубля это обычно 2 знака. Если вы создавали собственную валюту или условные единицы, проверьте, что разрядность задана корректно: от неё зависит, как суммы хранятся и отображаются.
Отдельная история — расхождения в копейках между суммой документа и суммой по строкам. Они возникают, когда НДС считается от каждой строки, округляется до копеек, а потом складывается — и итог не совпадает с НДС, посчитанным от общей суммы. Это не ошибка округления, а следствие выбранного метода расчёта. В некоторых конфигурациях способ расчёта НДС (по строкам или с итога) можно изменить в настройках учётной политики или параметрах учёта.
Округление в расчёте зарплаты
В 1С:ЗУП округление применяется в нескольких местах. Во-первых, это округление результатов начислений: в формуле начисления можно использовать функцию Окр() или задать точность в самом показателе расчёта. Во-вторых, округление при выплате — суммы к выплате могут округляться до рублей в зависимости от настроек.
Точность показателей задаётся в справочнике «Показатели расчёта зарплаты»: у каждого показателя есть поле «Точность» (количество знаков после запятой). Если тарифная ставка или премия в процентах дают длинный хвост копеек, увеличьте или уменьшите точность показателя либо оберните выражение формулы начисления в функцию округления.
При расчёте страховых взносов и НДФЛ действуют правила, заложенные в конфигурацию в соответствии с законодательством: НДФЛ исчисляется в полных рублях, взносы — в рублях и копейках. Менять эти правила самостоятельно нельзя — программа обновляется под действующие требования, и самодельные доработки здесь почти гарантированно приведут к ошибкам в отчётности.
Округление в запросах и коде: функция Окр()
Если вы дорабатываете конфигурацию или пишете внешнюю обработку, округление выполняется функцией встроенного языка Окр(Число, Разрядность, РежимОкругления). Первый параметр — исходное число, второй — количество знаков после запятой (отрицательное значение округляет до десятков, сотен и тысяч), третий — режим.
Доступны два режима: РежимОкругления.Окр15как10 — половина округляется в меньшую сторону (2,5 → 2), и РежимОкругления.Окр15как20 — половина в большую сторону (2,5 → 3). Если режим не указан, по умолчанию используется Окр15как20. Разница заметна на статистически значимых объёмах: первый режим уменьшает систематическую погрешность.
ЦенаБезКопеек = Окр(Цена, 0); // до рублей
СуммаСКопейками = Окр(Сумма, 2); // до копеек
ЦенаДоДесятков = Окр(Цена, -1); // до десятков рублей
НалогОкруглённый = Окр(База * 0.20, 2, РежимОкругления.Окр15как20);
В запросах функция Окр() тоже доступна — синтаксис аналогичный: ВЫБРАТЬ Окр(Таблица.Сумма, 2). Это удобно, когда округление нужно выполнить на уровне выборки, не обходя результат в цикле. Учитывайте, что округление в запросе и последующее округление в коде могут дать разные итоги при суммировании — выбирайте одну точку округления на весь расчёт.
Округление в отчётах и печатных формах
Частая ситуация: в отчёте или на печати выводится слишком много знаков после запятой, хотя сами данные хранятся корректно. Здесь округлять значения не нужно — достаточно настроить формат отображения. В свойствах поля макета или в настройках отчёта на СКД есть «Формат» или «Оформление», где задаётся форматная строка вида ЧДЦ=2 (число с двумя десятичными знаками).
В коде тот же результат даёт функция Формат(Значение, "ЧДЦ=2"). Принципиальная разница с Окр(): формат меняет только представление числа, а не само значение. Если округлённое отображение потом участвует в расчётах, копеечные расхождения неизбежны — форматируйте только финальный вывод.
Проверка результата и типичные ограничения
После любой настройки округления проверьте результат на контрольных примерах. Для цен — создайте тестовую установку цен с позициями, цена которых попадает ровно на границу округления (например, 100,5 или 99,95). Для документов — проведите документ с несколькими строками и сравните сумму по строкам с итогом и суммой НДС. Для зарплаты — сделайте тестовый расчёт на копии базы.
Как проверить результат
Все цены соответствуют порядку округления
Часть цен осталась со старыми копейками — цены не пересчитаны
Сумма по строкам равна итогу документа
Расхождение в копейках — проверьте метод расчёта НДС
Числа выводятся с нужным числом знаков
Лишние знаки — настройте формат поля, а не округляйте данные
Окр() вызывается один раз на финальном результате
Округление на каждом шаге — накапливается погрешность
Помните об ограничениях: округление — необратимая операция для уже записанных данных. Если вы округлили цены и записали их, вернуть исходные значения можно только из резервной копии или пересчётом от исходной базы. Поэтому любые массовые пересчёты цен и сумм выполняйте после создания архивной копии информационной базы.
Что важно запомнить
Единой настройки округления в 1С нет: цены округляются в виде цен, суммы зависят от разрядности валют, зарплата — от точности показателей и формул, в коде работает функция Окр(Число, Разрядность, Режим), а для отображения достаточно форматной строки. Округляйте только финальный результат и проверяйте итоги на контрольных примерах.
Частые вопросы
Как округлить цены до целых рублей во всех документах сразу?
Настройте порядок округления «до 1» в нужном виде цен и переустановите цены новым документом установки цен. Уже проведённые документы продажи при этом не изменятся — суммы в них фиксируются на момент проведения, и менять их задним числом не следует.
Чем Окр() отличается от Формат() с ЧДЦ=2?
Окр() изменяет само числовое значение и возвращает число — его можно использовать в дальнейших расчётах. Формат() возвращает строку для отображения и не меняет исходное значение. Для расчётов используйте Окр(), для вывода на экран и печать — форматную строку.
Почему НДС в документе не совпадает с НДС, посчитанным от итоговой суммы?
Программа считает НДС по каждой строке и округляет до копеек, а затем суммирует. НДС от общего итога, округлённый один раз, может отличаться на несколько копеек. Это допустимое следствие построчного расчёта, а не ошибка настройки.
Как округлять в большую сторону, а не по математическим правилам?
В настройках вида цен включите флаг «Округлять в большую сторону». В коде стандартной функции «вверх» нет — используйте приём с Цел(): например, Цел(Число) + ?(Число > Цел(Число), 1, 0) для округления до целых вверх.
Можно ли изменить округление НДФЛ, чтобы считались копейки?
Нет. НДФЛ по законодательству исчисляется в полных рублях: сумма менее 50 копеек отбрасывается, 50 копеек и более округляется до рубля. Это правило зашито в механизмы конфигурации, и менять его нельзя — иначе отчётность не сойдётся с требованиями налоговой.
Округлил цены, а в отчётах всё равно старые значения. Что не так?
Изменение настроек вида цен не пересчитывает существующие данные. Нужно создать новый документ «Установка цен номенклатуры» — цены пересчитаются по новым правилам и запишутся в регистр. Отчёты берут данные из регистра, поэтому показывают старые значения до переустановки.