Торговля и Склад · 9 мин
Как округлить цену в 1С: настройка и практические способы
Как округлить цену в 1С: настройка правил округления в типовых конфигурациях, округление в документах и ценах номенклатуры, формулы и типичные ошибки.
Округление цен в 1С — задача, с которой сталкиваются и менеджеры по продажам, и бухгалтеры, и разработчики. Причин несколько: копейки в розничных ценах выглядят неудобно, при расчёте скидок получаются дробные значения, а валютные пересчёты дают длинные «хвосты» после запятой. В зависимости от конфигурации и поставленной задачи округление выполняется разными инструментами — от встроенных настроек видов цен до формул в запросах и программном кода.
В типовых решениях 1С:Управление торговлей, 1С:Комплексная автоматизация и 1С:ERP есть штатный механизм округления цен при установке цен номенклатуры. В 1С:Бухгалтерии округление чаще требуется при формировании цены в документах реализации и при расчёте сумм. В самописных или доработанных конфигурациях округление обычно реализуют функциями встроенного языка.
Важно сразу разделить две разные задачи: округление самой цены (например, до целых рублей или до «красивого» значения 99,90) и округление итоговой суммы документа. Это разные механизмы, и путать их — частая причина расхождений в копейках между ценой, количеством и суммой строки.
Как работает округление цен в типовых конфигурациях
В конфигурациях на базе «Управление торговлей 11» и ERP правила округления задаются в карточке вида цен. Откройте раздел «CRM и маркетинг» (или «Настройки и справочники» в зависимости от версии), перейдите в «Виды цен» и выберите нужный вид цены. В форме есть блок параметров округления: точность округления (до копеек, до рублей, до десятков, до сотен) и направление — в большую, меньшую сторону или по арифметическим правилам.
Округление применяется в момент расчёта цены — например, когда цена вычисляется от базового вида цен с наценкой в процентах. Если вид цены «Розничная» рассчитывается как «Закупочная + 30 %», то после вычисления процента результат округляется по заданному правилу. Если вид цены задаётся вручную, округление может не сработать автоматически — это зависит от настроек.
Отдельный параметр — «Порог срабатывания» (в некоторых версиях называется «Округлять в большую сторону при превышении»). Он позволяет округлять только те значения, где дробная часть превышает заданный порог. Например, цену 150,40 можно оставить как есть, а 150,60 — округлить до 151.
Настройка округления при установке цен номенклатуры
Документ «Установка цен номенклатуры» — основной инструмент массового формирования цен. При заполнении документа по формуле или на основании других цен программа применяет правила округления, заданные в виде цен. Чтобы получить округлённые значения, убедитесь, что в виде цен включён нужный порядок округления, а затем используйте кнопки «Заполнить» → «По ценам контрагентов/другим видам цен» или «Рассчитать вычисляемые цены».
Если нужно округлить уже введённые вручную цены, в табличной части документа доступна команда изменения цен: выделите строки, вызовите «Изменить цены» и задайте операцию — например, округлить до рубля в большую сторону. В ряде версий эта команда находится в меню «Ещё» табличной части.
- 1Откройте вид цены и задайте точность и направление округления
- 2Создайте документ «Установка цен номенклатуры»
- 3Заполните табличную часть товарами и рассчитайте цены
- 4Проверьте результат на нескольких позициях с дробной частью
- 5Проведите документ и убедитесь, что цены записались в регистр
Округление цены и суммы в документах продажи
В документах «Реализация товаров и услуг», «Счёт на оплату», «Чек ККМ» цена подставляется из регистра цен уже округлённой — если округление было выполнено на этапе установки цен. Но при ручном изменении цены, применении скидки или изменении ставки НДС сумма строки пересчитывается, и могут появиться копеечные расхождения между произведением «цена × количество» и итоговой суммой.
Типовая логика 1С такова: сумма строки считается как цена × количество с учётом скидки, затем от суммы рассчитывается НДС. Если вы вручную правите сумму, программа пересчитает цену обратным делением — и цена может получиться с длинной дробной частью. Это нормально для внутренних расчётов, но в печатной форме выглядит неаккуратно.
Чтобы избежать таких ситуаций, договоритесь о едином правиле внутри компании: либо правится цена (и сумма пересчитывается от неё), либо правится сумма (и цена становится расчётной). Смешение подходов в разных документах приводит к расхождениям с контрагентами в копейках, которые потом приходится списывать.
Программное округление: функции встроенного языка
Для разработчиков и при доработке конфигураций используется функция Окр(Число, Разрядность, РежимОкругления). Первый параметр — округляемое число, второй — количество знаков после запятой (0 — до целых, 2 — до копеек; отрицательные значения округляют до десятков и сотен), третий — режим: РежимОкругления.Окр15как20 (в большую сторону при 5), Окр15как10 (по банковским правилам) или округление вверх/вниз в зависимости от версии платформы.
Пример: ЦенаОкр = Окр(Цена, 0, РежимОкругления.Окр15как20); — округляет цену до целых рублей. Для округления до десятков рублей: Окр(Цена, -1). Для округления строго вверх (например, чтобы не продать ниже себестоимости) применяют конструкцию вида Цел(Цена) + ?(Цена > Цел(Цена), 1, 0) либо соответствующий режим, если он поддерживается версией платформы.
В запросах доступна функция ВЫРАЗИТЬ(Число КАК ЧИСЛО(15, 2)) — она приводит значение к заданной разрядности с округлением. Это удобно при расчёте цен прямо в запросе динамического списка или отчёта, когда нет возможности вызывать функции встроенного языка.
НоваяЦена = Окр(СтараяЦена * 1.05, 0, РежимОкругления.Окр15как20);Округление до «красивых» цен и психологических порогов
Розничные сети часто требуют цены вида 99, 199 или 990 рублей. Штатного режима «округлить до 99 копеек» в типовых конфигурациях нет, поэтому задачу решают двумя способами. Первый — округлить цену до целого рубля вверх и вычесть копейку программно или формулой в обработке. Второй — использовать внешнюю обработку группового изменения цен, где задаётся произвольная формула.
При внедрении такой схемы учтите: округление до «красивой» цены меняет фактическую наценку. На дешёвых товарах разница в копейку может составлять заметный процент маржи. Перед массовым применением правила проверьте на отчёте по валовой прибыли, как изменится рентабельность по группам товаров.
Проверка результата и контроль расхождений
После настройки округления проверьте результат на контрольных примерах. Возьмите 5–10 товаров с разной ценой: дешёвые, средние и дорогие. Рассчитайте ожидаемое значение вручную или в калькуляторе и сравните с тем, что записала программа в регистр «Цены номенклатуры». Особое внимание — на граничные значения: цены с дробной частью ровно 0,50, где разные режимы округления дают разный результат.
Для контроля в документах полезен отчёт по продажам с выводом цены, количества и суммы: отфильтруйте строки, где цена имеет более двух знаков после запятой, — это признак ручного редактирования суммы или сбоя в настройке округления. Такие строки стоит разобрать индивидуально.
Как проверить результат
Округлена по заданному правилу, без лишних знаков
Дробная часть не соответствует настройке вида цен
Равна цена × количество с точностью до копейки
Расхождение в копейках, цена с длинной дробной частью
Цены отображаются с двумя знаками после запятой
В прайсе или счёте видны три и более знака
Часто задаваемые вопросы
Почему после настройки округления цены не изменились?
Настройка вида цен влияет только на новые расчёты. Чтобы применить правило к существующим ценам, создайте и проведите новый документ «Установка цен номенклатуры» с пересчётом цен по формуле или на основании текущих значений.
Как округлить цену до целых рублей только в большую сторону?
В карточке вида цен выберите точность округления «до рубля» и направление «в большую сторону». Программно это делается конструкцией с проверкой дробной части: если она больше нуля, к целой части прибавляется единица.
Можно ли округлить цены сразу по всем товарам без документа установки цен?
Технически — да, через групповую обработку записей регистра, но это обход штатного механизма: история изменения цен не сохранится, а при ошибке восстановить данные будет сложно. Рекомендуемый путь — документ «Установка цен номенклатуры», который фиксирует кто, когда и какие цены изменил.
Почему в чеке ККМ сумма не сходится с ценой на копейку?
Обычно причина в применении скидки: сумма скидки распределяется по строкам, и итог округляется. Проверьте настройки округления скидок в разделе настроек продаж и убедитесь, что кассовая программа и учётная система используют одинаковое правило округления.
Как округлить цену в запросе отчёта?
Используйте конструкцию ВЫРАЗИТЬ(Поле КАК ЧИСЛО(15, 2)) — значение будет приведено к двум знакам после запятой с арифметическим округлением. Для округления до целых укажите разрядность дробной части равной нулю.
Влияет ли округление цены на расчёт НДС?
Да, косвенно: НДС в документе считается от суммы строки, а сумма зависит от цены. Если цена округлена, сумма и налог пересчитываются от неё. Отдельно округлять сам НДС штатными средствами не требуется — он рассчитывается с точностью до копеек по правилам конфигурации.
Что важно запомнить
Округление цен в типовых 1С настраивается в виде цен и применяется через документ «Установка цен номенклатуры». Программно используется функция Окр() с выбором режима. Перед массовым изменением сделайте копию базы и проверьте результат на контрольных позициях, включая граничные значения 0,50.