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

Торговля и Склад · 9 мин

Как округлить цену в 1С: настройка и практические способы

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

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

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

Важно сразу разделить две разные задачи: округление самой цены (например, до целых рублей или до «красивого» значения 99,90) и округление итоговой суммы документа. Это разные механизмы, и путать их — частая причина расхождений в копейках между ценой, количеством и суммой строки.

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

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

Округление применяется в момент расчёта цены — например, когда цена вычисляется от базового вида цен с наценкой в процентах. Если вид цены «Розничная» рассчитывается как «Закупочная + 30 %», то после вычисления процента результат округляется по заданному правилу. Если вид цены задаётся вручную, округление может не сработать автоматически — это зависит от настроек.

Отдельный параметр — «Порог срабатывания» (в некоторых версиях называется «Округлять в большую сторону при превышении»). Он позволяет округлять только те значения, где дробная часть превышает заданный порог. Например, цену 150,40 можно оставить как есть, а 150,60 — округлить до 151.

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

Документ «Установка цен номенклатуры» — основной инструмент массового формирования цен. При заполнении документа по формуле или на основании других цен программа применяет правила округления, заданные в виде цен. Чтобы получить округлённые значения, убедитесь, что в виде цен включён нужный порядок округления, а затем используйте кнопки «Заполнить» → «По ценам контрагентов/другим видам цен» или «Рассчитать вычисляемые цены».

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

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

Округление цены и суммы в документах продажи

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

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

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

Программное округление: функции встроенного языка

Для разработчиков и при доработке конфигураций используется функция Окр(Число, Разрядность, РежимОкругления). Первый параметр — округляемое число, второй — количество знаков после запятой (0 — до целых, 2 — до копеек; отрицательные значения округляют до десятков и сотен), третий — режим: РежимОкругления.Окр15как20 (в большую сторону при 5), Окр15как10 (по банковским правилам) или округление вверх/вниз в зависимости от версии платформы.

Пример: ЦенаОкр = Окр(Цена, 0, РежимОкругления.Окр15как20); — округляет цену до целых рублей. Для округления до десятков рублей: Окр(Цена, -1). Для округления строго вверх (например, чтобы не продать ниже себестоимости) применяют конструкцию вида Цел(Цена) + ?(Цена > Цел(Цена), 1, 0) либо соответствующий режим, если он поддерживается версией платформы.

В запросах доступна функция ВЫРАЗИТЬ(Число КАК ЧИСЛО(15, 2)) — она приводит значение к заданной разрядности с округлением. Это удобно при расчёте цен прямо в запросе динамического списка или отчёта, когда нет возможности вызывать функции встроенного языка.

1c
НоваяЦена = Окр(СтараяЦена * 1.05, 0, РежимОкругления.Окр15как20);

Округление до «красивых» цен и психологических порогов

Розничные сети часто требуют цены вида 99, 199 или 990 рублей. Штатного режима «округлить до 99 копеек» в типовых конфигурациях нет, поэтому задачу решают двумя способами. Первый — округлить цену до целого рубля вверх и вычесть копейку программно или формулой в обработке. Второй — использовать внешнюю обработку группового изменения цен, где задаётся произвольная формула.

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

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

Проверка результата и контроль расхождений

После настройки округления проверьте результат на контрольных примерах. Возьмите 5–10 товаров с разной ценой: дешёвые, средние и дорогие. Рассчитайте ожидаемое значение вручную или в калькуляторе и сравните с тем, что записала программа в регистр «Цены номенклатуры». Особое внимание — на граничные значения: цены с дробной частью ровно 0,50, где разные режимы округления дают разный результат.

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

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

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

Цена в регистре цен
Норма

Округлена по заданному правилу, без лишних знаков

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

Дробная часть не соответствует настройке вида цен

Сумма строки документа
Норма

Равна цена × количество с точностью до копейки

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

Расхождение в копейках, цена с длинной дробной частью

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

Цены отображаются с двумя знаками после запятой

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

В прайсе или счёте видны три и более знака

Часто задаваемые вопросы

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

Настройка вида цен влияет только на новые расчёты. Чтобы применить правило к существующим ценам, создайте и проведите новый документ «Установка цен номенклатуры» с пересчётом цен по формуле или на основании текущих значений.

Как округлить цену до целых рублей только в большую сторону?

В карточке вида цен выберите точность округления «до рубля» и направление «в большую сторону». Программно это делается конструкцией с проверкой дробной части: если она больше нуля, к целой части прибавляется единица.

Можно ли округлить цены сразу по всем товарам без документа установки цен?

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

Почему в чеке ККМ сумма не сходится с ценой на копейку?

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

Как округлить цену в запросе отчёта?

Используйте конструкцию ВЫРАЗИТЬ(Поле КАК ЧИСЛО(15, 2)) — значение будет приведено к двум знакам после запятой с арифметическим округлением. Для округления до целых укажите разрядность дробной части равной нулю.

Влияет ли округление цены на расчёт НДС?

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

Итог

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

Округление цен в типовых 1С настраивается в виде цен и применяется через документ «Установка цен номенклатуры». Программно используется функция Окр() с выбором режима. Перед массовым изменением сделайте копию базы и проверьте результат на контрольных позициях, включая граничные значения 0,50.