Настройка правил округления цен 1С-Битрикс
Округление цен в 1С-Битрикс — точка, где математически корректный результат расценивается как артефакт. Скидка 7% на товар за 349 рублей даёт 324,57 рублей. Отображать такую цену на витрине нежелательно. Битрикс решает это через правила округления в модуле каталога.
Где настраивается округление
Настройки → Настройки продуктов → Каталог → Округление цен. В ранних версиях — в настройках компонента bitrix:catalog.element и bitrix:catalog.section параметры PRICE_VAT_INCLUDE и отдельные округления.
Глобальные правила округления — CCatalogProduct::getRoundRules() читает из b_catalog_rounding_rule.
Типы правил округления
| Правило | Описание | Пример |
|---|---|---|
| Математическое | Стандартное: 0.5 → вверх | 324.57 → 325 |
| Всегда вниз | floor() |
324.57 → 324 |
| Всегда вверх | ceil() |
324.01 → 325 |
| До нужного знака | Точность в настройках | 324.57 → 320 или 324.6 |
Программная настройка правил
// Добавление правила округления
\Bitrix\Catalog\RoundingTable::add([
'CATALOG_GROUP_ID' => $priceTypeId, // 0 = все типы цен
'PRICE_FROM' => 0,
'PRICE_TO' => 999.99,
'ROUND_TYPE' => \Bitrix\Catalog\RoundingTable::ROUND_MATH,
'ROUND_PRECISION' => 0, // до целых
]);
// Для цен от 1000 — другое правило
\Bitrix\Catalog\RoundingTable::add([
'CATALOG_GROUP_ID' => $priceTypeId,
'PRICE_FROM' => 1000,
'PRICE_TO' => null,
'ROUND_TYPE' => \Bitrix\Catalog\RoundingTable::ROUND_MATH,
'ROUND_PRECISION' => -1, // до десятков
]);
ROUND_PRECISION — количество знаков после запятой (отрицательные значения округляют до десятков, сотен).
Округление в корзине и на витрине
Правила округления применяются при вычислении итоговой цены через CCatalogProduct::GetOptimalPrice(). В компоненте корзины — при пересчёте суммы строки. Важно: НДС добавляется после округления базовой цены, не до.
Психологическое ценообразование
Для цен вида «.99» правила округления не подходят — это маркетинговая задача, которая решается постфиксным обработчиком. Пример — обработчик события OnSaleOrderBeforeSaved или кастомный метод пересчёта цен.
Сроки выполнения
Настройка правил округления для всех типов цен — 1–3 часа. Нестандартная логика (психологические цены, разные правила для категорий) — 4–8 часов.







