Округление в 1С-Битрикс живёт не в одной галочке, а сразу в нескольких местах: в валюте, в правилах округления модуля Торговый каталог и в форматировании вывода. Разберём, как эти механизмы связаны, чем «правила округления» отличаются от точности валюты и как настроить их отдельно для розницы, опта и цен со скидкой, не поломав обмен с 1С.
Где в Битрикс задаётся округление
Первое, что нужно понять: округление цены — это не одно действие, а цепочка. В 1С-Битрикс за него отвечают три независимых слоя.
- Точность валюты — параметр
DECIMALSв настройках валюты (Магазин → Настройки → Валюты). Определяет, сколько знаков после запятой хранится и отображается по умолчанию для данной валюты. - Правила округления цен — отдельная сущность модуля
catalog(Магазин → Настройки → Правила округления цен). Здесь округление привязывается к типу цены и работает при расчёте итоговых цен и скидок. - Форматирование при выводе — компоненты каталога и функция
CCurrencyLang::CurrencyFormat(), которые показывают уже посчитанное значение по шаблону валюты.
Правила округления по типам цен
Модуль Торговый каталог позволяет создать несколько правил округления, каждое из которых привязано к конкретному типу цены (розничная, оптовая, партнёрская и т. д.) и к диапазону сумм. Настройка находится в разделе Магазин → Настройки → Правила округления цен.
Для каждого правила задаются:
- Тип цены — к какому базовому типу применяется правило;
- Точность округления — до скольких знаков (например, до целых, до десятков, до 0.99);
- Способ округления — математическое, вверх или вниз;
- Диапазон «от» — правило начинает действовать для цен выше указанного порога.
Это даёт гибкость: розницу можно приводить к «красивым» ценам вида 1990, а опт оставлять с точностью до копейки. Диапазоны позволяют по-разному обходиться с дешёвыми и дорогими позициями — мелочь округлять до рубля, а технику до сотен.
Способы и точность округления
Битрикс поддерживает несколько режимов, и важно выбирать их осознанно — от этого зависит, в чью пользу «уходит» копейка.
| Способ | Поведение | Когда применять |
|---|---|---|
| Математическое | 0.5 и выше — вверх, ниже — вниз | Универсальный вариант по умолчанию |
| Вверх | Всегда в большую сторону | Чтобы не терять на скидках и наценке |
| Вниз | Всегда в меньшую сторону | Маркетинговые «ровные» цены |
Точность задаётся не только числом знаков, но и шагом. Округление «до 0.99» или «до 90» реализуется через комбинацию точности и последующей корректировки — в чистой настройке Битрикс это чаще решается на уровне правила «до целых» плюс наценка, либо кодом в событии. Для типовых магазинов достаточно округления до целых рублей для розницы.
Округление и скидки
Самый чувствительный сценарий — цены со скидкой. В 1С-Битрикс скидки применяются к базовой цене, а результат прогоняется через правило округления типа цены. Порядок операций такой:
- Берётся базовая цена выбранного типа;
- Применяются торговые правила и скидки корзины;
- Итог округляется по правилу, привязанному к типу цены;
- Значение форматируется по шаблону валюты для вывода.
Из-за этого «цена со скидкой» может выглядеть некруглой, даже если базовая цена ровная — округление применяется после расчёта процента. Если нужна красивая итоговая цифра именно после скидки, настраивайте правило округления на тот тип цены, по которому считается витрина, и проверяйте результат в корзине, а не только в карточке товара.
Взаимодействие с валютами и мультивалютностью
Когда магазин работает в нескольких валютах, цена может храниться в одной валюте, а показываться в другой — с конвертацией по курсу. Здесь округление накладывается дважды: сначала точность исходной валюты, затем округление при пересчёте в валюту вывода.
Практические правила:
- Точность валюты (
DECIMALS) задавайте исходя из реальной денежной единицы: рубль — 2 знака, но для витрины часто отображают 0; - Правило округления типа цены применяйте после конвертации, иначе «дробный» курс даст цены вида
1987.34; - Символ и разделители настраиваются отдельно — в форматировании валюты, не в правилах округления.
Округление при обмене с 1С
Отдельная зона риска — обмен CommerceML с 1С. По каналу приходят цены в том виде, в каком их сформировала учётная система, и Битрикс не пересчитывает их автоматически по своим правилам округления при импорте — правила округления работают на стороне витрины и заказа.
Это приводит к типичному конфликту: в 1С цена 1987.34, на витрине после округления — 1990, а в выгрузке заказа обратно в 1С уходит округлённая сумма. Чтобы избежать расхождений:
- Договоритесь, где происходит округление — в 1С при формировании прайса или в Битрикс при показе;
- Если округляет 1С — отключите или ослабьте правила в Битрикс, чтобы не округлять дважды;
- Проверяйте, что сумма заказа на сайте совпадает с суммой, которую примет 1С после обратной выгрузки.
Проверка и типичные ошибки
Перед выкладкой в бой прогоните короткий чек-лист.
- Совпадает ли точность валюты с ожидаемым видом цен на витрине;
- Привязано ли правило округления к тому типу цены, что показывается покупателю;
- Округляется ли итог после скидок, а не только базовая цена;
- Нет ли двойного округления в связке с 1С;
- Как ведут себя граничные цены и мультивалютный пересчёт.
Частые ошибки: настройка округления только в валюте (в итоге корзина считает по-своему), забытый диапазон «от» (правило не срабатывает для дешёвых товаров) и округление «вверх» на каждой позиции вместо итога. Проверяйте не карточку товара, а именно корзину и оформленный заказ — там видно реальное значение.
Итог
Округление в 1С-Битрикс — это три слоя: точность валюты, правила округления по типам цен и форматирование вывода. Розницу приводите к «красивым» ценам правилом на нужный тип цены, опт оставляйте точным, округляйте итог после скидок и следите за единым источником округления в связке с 1С, чтобы не считать дважды.
Если магазин мультивалютный, с несколькими типами цен и живым обменом с 1С, настройка округления быстро превращается в отдельную инженерную задачу. Мы в B2Bsite настраиваем эту цепочку целиком — от правил каталога до обмена ценами и остатками с 1С — так, чтобы витрина, корзина и учётная система показывали одну и ту же сумму.
Частые вопросы
Чем правило округления отличается от точности валюты?
Точность валюты (DECIMALS) определяет число знаков хранения и отображения по умолчанию, а правило округления привязано к типу цены и применяется при расчёте итоговой цены и скидок. Это разные механизмы, и настраивать их нужно согласованно.
Можно ли задать разное округление для розницы и опта?
Да. Правила округления в Битрикс привязываются к конкретному типу цены, поэтому для розничной цены можно включить округление до целых рублей, а оптовую оставить с точностью до копейки.
Почему цена со скидкой получается некруглой?
Скидка применяется к базовой цене, а округление срабатывает после расчёта процента. Если нужна ровная итоговая цифра, настройте правило округления на тот тип цены, по которому считается витрина, и проверьте результат в корзине.
Где в админке настраиваются правила округления?
В разделе Магазин → Настройки → Правила округления цен модуля Торговый каталог. Там задаются тип цены, точность, способ округления и диапазон применения.
Округляет ли Битрикс цены, пришедшие из 1С по обмену?
При импорте CommerceML цены берутся как есть, а правила округления работают на стороне витрины и заказа. Из-за этого возможно расхождение, поэтому нужно заранее решить, где именно происходит округление.
Что такое двойное округление и чем оно опасно?
Это когда цена округляется и в 1С, и в Битрикс. По отдельности значения выглядят корректно, но итог заказа перестаёт сходиться с учётной системой. Нужно оставить единый источник округления.
Как округление работает при мультивалютности?
Округление накладывается дважды: точность исходной валюты и округление при пересчёте в валюту вывода. Правило типа цены лучше применять после конвертации, иначе дробный курс даст некрасивые цены.
Что проверять перед запуском настроек округления?
Совпадение точности валюты с видом витрины, привязку правила к нужному типу цены, округление итога после скидок, отсутствие двойного округления с 1С и поведение граничных и мультивалютных цен в корзине.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.