В 1С-Битрикс наценки и скидки — это не одно поле, а несколько разных механизмов, которые считаются поверх базовой цены. Если не понимать порядок их применения, витрина легко начинает показывать не те суммы: то со скидкой ниже себестоимости, то с наценкой, которую давно отменили.
Базовая цена как точка отсчёта
Любые наценки и скидки в каталоге отсчитываются от базового типа цены. Это один из типов цен модуля catalog с установленным флагом «Базовый»; его нельзя удалить, и именно его значение берётся за 100%. Управление типами живёт в разделе Магазин → Настройки → Типы цен (страница cat_group_admin.php).
Важно различать два слоя. Разные типы цен (розница, опт, дилер) — это отдельные записи в таблице b_catalog_price с собственными значениями. А наценки и скидки — это надстройка, которая пересчитывает уже сохранённую цену на лету при показе и при добавлении в корзину. Не путайте их: тип цены хранит число, наценка/скидка меняет его в момент отдачи покупателю.
Наценки к базовой цене (extra-наценки)
Штатный механизм наценок в Битрикс — «Наценки» модуля каталога (таблица b_catalog_extra, страница cat_extra_admin.php). Каждая наценка — это именованная запись с процентом, например «Логистика +5%» или «Сезон +12%». Процент может быть и отрицательным — тогда это по сути фиксированная скидка на конкретную цену.
Наценка привязывается к конкретной цене товара через поле EXTRA_ID в записи цены. В карточке товара на вкладке цен рядом с суммой появляется выпадающий список «Наценка». Итоговое значение вычисляется как PRICE * (1 + PERCENT / 100) и отдаётся компонентами каталога уже с учётом наценки.
- Наценка действует на уровне отдельной цены, а не всего товара — можно накрутить только розницу, оставив опт нетронутым.
- В базе хранится «чистая» цена, а процент — отдельно; это удобно для аудита, но требует внимания при выгрузках.
- Одну и ту же наценку можно назначить массово через
Магазин → Товарыи групповые операции, не редактируя каждую карточку.
Скидки: два разных движка
Скидок в Битрикс тоже несколько, и это главная причина путаницы. Нужно чётко понимать, каким инструментом вы пользуетесь.
| Механизм | Где настраивается | Что умеет |
|---|---|---|
| Правила работы с корзиной | Магазин → Маркетинг → Правила работы с корзиной (sale_discount.php) | Современный движок: условия, действия, приоритеты, скидки на товар, доставку, купоны |
| Каталожные скидки (устар.) | cat_discount_admin.php, таблица b_catalog_discount | Простые проценты/суммы по разделам и группам; вытеснены правилами корзины |
| Наценка со знаком «минус» | Раздел «Наценки» каталога | Фиксированный дисконт к конкретной цене без условий |
Для новых проектов используйте правила работы с корзиной (модуль sale, класс Bitrix\Sale\Discount). Они гибче: условие «раздел = Аксессуары И количество ≥ 3», действие «−10% на позицию», ограничение по группам пользователей и датам. Скидка применяется к цене после выбора нужного типа цены и наценки.
Порядок применения и приоритеты
Порядок расчёта нужно держать в голове, иначе итог непредсказуем. Упрощённо цепочка выглядит так:
- Выбирается тип цены, доступный группе покупателя (розница, опт и т.д.).
- К значению применяется extra-наценка из поля
EXTRA_ID, если она задана. - Поверх работают правила корзины: сортируются по приоритету (
PRIORITY) и обрабатываются до первого правила с флагом «Прекратить дальнейшую обработку» (LAST_DISCOUNT = Y). - Результат округляется по правилам округления типа цены.
Если у покупателя несколько подходящих скидок, поведение задаётся приоритетом и флагом остановки. По умолчанию скидки не суммируются бесконтрольно — движок идёт по списку сверху вниз. Проверить, какое правило сработало, помогает встроенная трассировка скидок: в настройках модуля sale включается режим отладки, и в корзине видно, какие правила и в каком порядке применились.
PRIORITY.Округление после наценок и скидок
Наценки и проценты почти всегда порождают «некрасивые» суммы вроде 1043,70 ₽. За их приведение к виду отвечают правила округления (Магазин → Настройки → Правила округления цен, таблица b_catalog_round, класс Bitrix\Catalog\RoundingTable).
- Округление настраивается по типу цены и диапазону: до 1000 ₽ — до рубля, свыше — до десятков.
- Оно применяется после наценок и скидок, поэтому итоговая цифра в корзине и в карточке совпадают только при корректной настройке.
- Округление влияет на отображение и на расчёт заказа — это не косметика, а часть цены.
Группы, количество и условия
Настоящая сила скидок раскрывается в условиях. В правилах корзины доступен конструктор, где комбинируются проверки: группа пользователя, раздел каталога, свойство товара, количество в позиции, сумма корзины, промежуток дат, наличие купона.
Типовые сценарии для интернет-магазина:
- Опт от количества. «Если количество позиции ≥ 10 → −7% на позицию» — работает поверх розничной цены без отдельного типа цен.
- Скидка сегменту. «Если пользователь в группе
Дилеры→ −15%» — связка с системой групп и правами. - Акция по датам. «С 1 по 10 число → −20% на раздел» с автоматическим включением/выключением по расписанию.
- Купон. Разовые или многоразовые купоны на конкретное правило корзины.
Для персональных цен целых сегментов чаще правильнее не скидка, а отдельный тип цены с правами на просмотр — тогда цена стабильна и видна не всем.
Обмен с 1С и импорт: не затирайте наценки
Самая болезненная тема — как наценки и скидки переживают обмен с 1С и импорт прайса. Обмен по стандартному протоколу commerceml2 передаёт значения цен по типам, но не понимает extra-наценки Битрикса и правила корзины.
- Если итоговая наценка сделана через
EXTRA_ID, а из 1С приходит «чистая» цена — при каждом обмене вы получаете базовое число, и процент наценки продолжает накручиваться поверх. Обычно наценку в этом случае переносят в 1С или в правило корзины. - Правила работы с корзиной живут только в Битриксе и обменом не затрагиваются — их можно спокойно настраивать на стороне сайта.
- Импорт из CSV (
Магазин → Товары → Импорт) пишет прямо в значения цен; после него имеет смысл перепроверить, не сбросились ли привязки наценок.
Итог
Наценки и скидки в 1С-Битрикс — это слой поверх базовой цены, а не сама цена. Держите в голове три сущности: extra-наценки модуля каталога, правила работы с корзиной модуля sale и округление по типам цен. Понимая порядок их применения и то, что из этого переживает обмен с 1С, вы избегаете и завышенных сумм, и продаж ниже себестоимости.
Если ценообразование разрослось до десятков правил, наценок и типов цен, а обмен с 1С регулярно рассинхронивает витрину — мы в B2Bsite наводим в этом порядок: выстраиваем прозрачную схему цен, переносим логику в правильный слой и настраиваем обмен так, чтобы наценки и скидки не затирались при каждой выгрузке.
Частые вопросы
Чем наценка отличается от отдельного типа цены?
Тип цены хранит собственное числовое значение в базе, а наценка пересчитывает уже сохранённую цену на процент при показе. Для постоянно другой цены сегмента заводите тип цены, для разовой корректировки — наценку.
Где в Битрикс настраиваются наценки?
В модуле каталога, раздел «Наценки» (страница cat_extra_admin.php, таблица b_catalog_extra). Каждая наценка — это имя и процент, который привязывается к конкретной цене товара через поле EXTRA_ID.
Можно ли сделать скидку отрицательной наценкой?
Да, процент наценки может быть отрицательным, и тогда это фиксированный дисконт к конкретной цене. Но для скидок с условиями лучше использовать правила работы с корзиной.
Суммируются ли несколько скидок сразу?
Нет, автоматически и бесконтрольно они не складываются. Правила корзины обрабатываются по приоритету PRIORITY до первого правила с флагом остановки дальнейшей обработки.
Почему цена в корзине не совпадает с карточкой?
Чаще всего дело в округлении: скидка даёт копейки, а правило округления приводит сумму к целому. Проверьте правила округления цен для нужного типа цены.
Переживают ли наценки обмен с 1С?
Extra-наценки и правила корзины обмен по CommerceML не понимает и не передаёт. Обмен работает с числовыми значениями цен по типам, поэтому источник итоговой цены должен быть один.
Что использовать для новых проектов — каталожные скидки или правила корзины?
Правила работы с корзиной модуля sale. Старые каталожные скидки (cat_discount_admin.php) считаются устаревшими и вытеснены более гибким движком с условиями и приоритетами.
Как понять, какая скидка сработала?
Включите режим отладки скидок в настройках модуля sale — трассировка покажет в корзине, какие правила и в каком порядке применились к заказу.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.