Оптовые продажи держатся на ценообразовании, которое в рознице кажется немыслимым. Один и тот же товар дилер, крупный опт и разовый покупатель берут по разной цене, поверх этой цены накладываются скидки за объём, за сумму заказа, за конкретную товарную категорию, а у ключевых клиентов ещё и договорные условия из 1С. Если всё это считать руками — в прайсах, письмах и «на калькуляторе» — менеджеры тонут в согласованиях, а в заказы регулярно уходят неверные цифры. В 1С-Битрикс весь этот ценовой хаос описывается как матрица цен и набор правил скидок, которые считаются автоматически.
Ниже — практический разбор того, как собрать оптовое ценообразование на 1С-Битрикс: типы цен и группы контрагентов, многоуровневые скидки по объёму и ассортименту, приоритеты между правилами и обмен цен с учётной системой. Это выжимка из наших проектов по построению B2B-порталов и оптовых кабинетов на 1С-Битрикс — с фокусом на то, что реально работает под нагрузкой и не рассыпается при первом же нестандартном клиенте.
Коротко
- Оптовая цена зависит от трёх осей: кто покупает (категория контрагента), сколько берёт (объём, сумма) и что берёт (категория товара).
- Ось «кто» в 1С-Битрикс собирается на типах цен и группах пользователей, ось «сколько» и «что» — на правилах скидок.
- Обязательно задайте приоритеты и правила суммирования, иначе несколько скидок сложатся в минус или сработает не та.
- Базовые цены и договорные условия держите источником в 1С, витринные акции — на стороне сайта, без дублей.
- Проверяйте цену сквозным путём «каталог → корзина → заказ» под каждой категорией клиентов.
Что такое матрица цен для опта
Матрица цен — это формализованное описание того, по какой цене каждый товар продаётся каждой категории покупателей при каждом сценарии заказа. В рознице такой матрицы нет: цена одна и написана на ценнике. В опте «правильная» цена — результат пересечения нескольких условий, и именно это пересечение удобно представлять как таблицу (матрицу), где по одной оси идут категории клиентов, по другой — товарные группы или пороги объёма, а на пересечении стоит цена или скидка.
Главная ценность матрицы не в самой таблице, а в том, что она превращает разрозненные договорённости в единый свод правил. Пока условия живут в головах менеджеров и в переписке, каждая новая сделка — это ручной пересчёт и риск ошибки. Как только условия описаны матрицей и загружены в систему, цена перестаёт быть предметом ручного труда: покупатель видит в каталоге ровно ту цифру, которая ему положена, а менеджер занимается продажей, а не арифметикой.
Важно понимать, что матрица цен — это не один инструмент 1С-Битрикс, а связка из нескольких механизмов платформы, работающих вместе: типов цен, групп пользователей, правил скидок и обмена с учётной системой. Каждый из них закрывает свою часть логики, и сила решения — именно в их согласованной работе. Если хотя бы одно звено настроено небрежно, клиент увидит чужую цену, скидки начнут конфликтовать, а бухгалтерия — расходиться с сайтом. Дальше мы разберём каждое звено по отдельности.
Три оси оптовой цены: кто, сколько, что
Любое оптовое ценообразование, каким бы запутанным оно ни выглядело, раскладывается на три независимые оси. Разложив свою систему по ним, вы сразу увидите, какой механизм 1С-Битрикс отвечает за каждую ось.
- Кто покупает. Категория контрагента: розница, мелкий опт, дилер, крупный дистрибьютор, VIP-клиент с индивидуальным договором. Эта ось определяет базовый уровень цены и в Битриксе ложится на типы цен и группы пользователей.
- Сколько берёт. Объём в штуках, сумма заказа, вес или другой измеримый порог. Чем больше берёт клиент, тем ниже цена за единицу. Эта ось реализуется правилами скидок с условиями по количеству и сумме.
- Что берёт. Товарная категория, бренд, конкретная линейка или акционный пул. Скидка может действовать только на определённые группы товаров или, наоборот, исключать их. Эта ось тоже живёт в правилах скидок, но через условия по разделам и свойствам каталога.
Ключевая мысль: эти оси независимы и накладываются друг на друга. Дилер (ось «кто») при заказе от 500 штук (ось «сколько») электроинструмента определённого бренда (ось «что») получает цену, которая складывается из его базового типа цены и двух скидок. Матрица цен как раз и описывает, как именно эти оси взаимодействуют — суммируются, перекрывают друг друга или действуют по приоритету. Если вы не проговорили взаимодействие осей заранее, любая нетривиальная комбинация превратится в спор «а почему тут такая цифра».
Типы цен и группы пользователей в Битриксе
Ось «кто покупает» в 1С-Битрикс строится на двух связанных сущностях: типах цен и группах пользователей. Понимание их связки — фундамент всего оптового ценообразования на платформе.
Тип цены — это отдельная колонка цены у товара. У одной позиции может быть сколько угодно типов цен: «Розница», «Дилер», «Крупный опт», «Закупочная», «РРЦ». Каждый тип заполняется своим значением — либо вручную, либо через обмен с 1С. Тип цены сам по себе не решает, кто её увидит; он лишь хранит число.
Группа пользователей — это категория аккаунтов на сайте: «Розничные покупатели», «Дилеры», «Оптовики». Контрагента относят к группе при регистрации, модерации или через обмен с учётной системой. А вот связь «какая группа по какому типу цены покупает» задаётся в правах доступа к типу цены: для каждого типа указывается, какие группы имеют право покупки и просмотра.
Именно эта связка даёт нужный эффект: дилер, попадая в группу «Дилеры», автоматически видит и покупает по типу цены «Дилер», даже не подозревая о существовании других колонок. Розничный посетитель видит только «Розницу». Одна карточка товара — разные цены для разных людей, без дублирования товаров и без ручного труда менеджера.
Матрица цен на примере: как читать таблицу
Чтобы абстракция стала осязаемой, разберём небольшую матрицу. Возьмём товар — условный электроинструмент — и покажем, как для него выглядит матрица цен по осям «кто» и «сколько».
| Категория клиента / объём | 1–9 шт | 10–99 шт | 100–499 шт | от 500 шт |
|---|---|---|---|---|
| Розница | 1000 ₽ | 1000 ₽ | — | — |
| Мелкий опт | 920 ₽ | 880 ₽ | 850 ₽ | — |
| Дилер | 850 ₽ | 820 ₽ | 790 ₽ | 760 ₽ |
| Крупный опт | — | 780 ₽ | 750 ₽ | 710 ₽ |
| VIP (договор) | индивидуально из 1С | |||
Читается матрица так: по строкам — ось «кто» (реализуется типами цен и группами), по столбцам — ось «сколько» (реализуется правилами объёмных скидок поверх базового типа цены). На пересечении стоит цена, которую увидит конкретный клиент при конкретном объёме. Прочерк означает, что данная комбинация недоступна — например, розница не покупает партиями от 100 штук, а крупный опт не работает поштучно.
Практический смысл такого представления в том, что оно сразу подсказывает архитектуру настройки. Разные строки — это разные типы цен и группы. Разные столбцы — это пороги в правилах скидок. А строка «VIP» с пометкой «индивидуально из 1С» — сигнал, что для этой категории источником истины будет договорная цена из учётной системы, а не витринные правила. Одна таблица — и весь план внедрения виден на ладони. Именно поэтому мы всегда просим клиента сначала нарисовать такую матрицу, а уже потом садимся за админку.
Если товарных категорий много и в каждой своя логика, одной таблицей не обойтись — матриц будет несколько, по одной на группу товаров или на ось «что берёт». Держать десятки таких матриц в голове невозможно, поэтому их описывают в отдельном документе и синхронизируют с настройками сайта. Как совместить в одном каталоге принципиально разные ценовые модели для B2B и B2C, мы подробно разбирали в материале про цены B2B и B2C в одном каталоге на Битрикс.
Многоуровневые скидки: объём, сумма, ассортимент
Скидки в опте почти никогда не бывают одноуровневыми. «Просто минус 10 %» — это розничная логика. В опте скидка растёт ступенями и зависит сразу от нескольких факторов. Разберём основные типы многоуровневых скидок и их назначение.
- Пороговые по количеству. Классика опта: от 10 штук — минус 3 %, от 100 — минус 7 %, от 500 — минус 12 %. Чем крупнее партия, тем ниже цена за единицу. Порог считается по количеству конкретной позиции в корзине.
- Пороговые по сумме заказа. Скидка зависит не от количества одной позиции, а от общей суммы корзины: заказ от 100 000 ₽ — минус 5 %, от 500 000 ₽ — минус 10 %. Стимулирует добирать корзину до следующего порога.
- Ассортиментные. Действуют только на определённую категорию, бренд или линейку. Например, минус 15 % на весь бренд в рамках распродажи склада, при этом остальной каталог идёт по обычной цене.
- Накопительные. Зависят от истории закупок клиента за период. Реализуются сложнее — нужен учёт оборота, обычно на стороне 1С или CRM, а Битрикс получает готовый уровень скидки.
- Персональные и договорные. Индивидуальный процент или фиксированная цена для конкретного контрагента по договору. Приходят из учётной системы и перекрывают общие правила.
Многоуровневость означает, что на одну строку корзины может претендовать сразу несколько таких скидок. Клиент-дилер (персональная скидка) заказывает 600 штук (объёмная скидка) товара из акционного бренда (ассортиментная скидка). Что произойдёт? Сложатся ли все три, или сработает только максимальная, или у персональной абсолютный приоритет? Ответ на этот вопрос — не техническая деталь, а бизнес-решение, которое нужно принять до настройки. О том, как оно реализуется в приоритетах, — отдельный раздел ниже.
Правила работы с корзиной и условия
Технически многоуровневые скидки в 1С-Битрикс реализуются через механизм правил работы с корзиной (раздел «Магазин → Скидки»). Каждое правило — это связка «условия → действие». Условия описывают, когда скидка применяется, а действие — что она делает с ценой.
Условия собираются из готовых блоков и комбинируются логическими «И» / «ИЛИ». Основные группы условий, полезные для опта:
- По количеству и сумме. «Количество товара в корзине больше N», «сумма заказа от M» — основа пороговых скидок.
- По группе пользователя. «Пользователь в группе Дилеры» — привязывает скидку к категории клиента.
- По каталогу. «Товар из раздела X», «свойство Бренд равно Y» — основа ассортиментных скидок.
- По параметрам заказа. Способ оплаты, доставка, регион — для более тонких сценариев.
Действие правила задаёт, как меняется цена: процент от цены, фиксированная сумма скидки, фиксированная итоговая цена или подарок/бесплатная доставка. Для оптовой матрицы чаще всего используют процент или фиксированную цену за единицу.
Сила механизма — в комбинировании. Одно правило может звучать как «для группы Дилеры, при количестве от 500 штук, на товары бренда Bosch — цена 760 ₽». Это ровно одна ячейка нашей матрицы, выраженная набором условий. Собрав такие правила по всем значимым ячейкам, вы получаете работающую матрицу цен, где ничего не считается вручную. Минус подхода — при большом числе ячеек правил становится много, и ими нужно осознанно управлять, иначе они начнут конфликтовать.
Приоритеты и суммирование скидок
Самая частая причина боли в оптовом ценообразовании — не отсутствие скидок, а их конфликт. Когда на одну строку корзины претендуют несколько правил, система должна знать, что делать: сложить их, выбрать одно или применить в строгом порядке. В 1С-Битрикс этим управляют два параметра каждого правила.
- Приоритет. Число, определяющее порядок применения правил. Правила с более высоким приоритетом рассматриваются раньше.
- «Прекращать применение других скидок». Флаг, который останавливает дальнейший перебор правил после того, как сработало текущее. Это ключевой инструмент против нежелательного суммирования.
Разберём типовые стратегии на примере. Допустим, у клиента есть персональная договорная скидка, объёмная скидка за партию и акция на бренд.
| Стратегия | Как настроить | Результат для клиента |
|---|---|---|
| Только максимальная скидка | Все правила без суммирования, приоритет по величине; первое сработавшее прекращает остальные | Клиент получает одну самую выгодную скидку |
| Договор перекрывает всё | Персональному правилу высший приоритет и флаг «прекращать применение других» | Договорная цена, акции и объём игнорируются |
| Суммирование в рамках лимита | Правила складываются, но общий процент ограничен верхним правилом-предохранителем | Скидки складываются, но не ниже пола маржи |
| Ступенчатая логика | Приоритеты выстроены цепочкой: сначала база, затем объём, затем акция | Предсказуемый порядок начисления |
Универсально «правильной» стратегии не существует — выбор зависит от вашей маржинальности и договорённостей с клиентами. Но есть универсальное требование: стратегия должна быть явно сформулирована и одинаково понята коммерческим отделом и теми, кто настраивает систему. Большинство инцидентов вида «клиенту ушла цена ниже закупки» рождаются не из-за бага, а из-за того, что суммирование скидок никто заранее не обсудил. Обязательно закладывайте правило-предохранитель, которое не даёт итоговой цене опуститься ниже заданного пола.
Договорные и персональные цены
Отдельный и самый тонкий случай — индивидуальные условия для конкретных контрагентов. У ключевых клиентов цена часто прописана в договоре и не подчиняется общим правилам витрины. Такие цены нельзя собрать одними правилами скидок — их источником должна быть учётная система, где ведётся договор.
Есть несколько способов реализовать персональные цены в 1С-Битрикс, и выбор зависит от масштаба.
- Отдельный тип цены под контрагента. Подходит, когда индивидуальных клиентов немного. Заводится персональный тип цены, доступ к которому имеет группа из одного контрагента. Просто, но плохо масштабируется на сотни договоров.
- Персональные цены из 1С. Учётная система рассчитывает договорную цену для контрагента и передаёт её на сайт как индивидуальную цену конкретного пользователя. Масштабируемо, источник истины — договор в 1С.
- Персональные прайс-листы. Для каждого клиента формируется свой прайс с его ценами и ассортиментом — как отдельный документ и как персональная витрина в кабинете. Об этом у нас есть отдельный разбор про индивидуальные прайс-листы для B2B в 1С-Битрикс.
Ключевой принцип работы с договорными ценами — они должны иметь приоритет над общими правилами и при этом не отключать полезные механики вроде контроля остатков. Как правило, персональная цена перекрывает объёмные и ассортиментные скидки (потому что уже «зашита» в договор), но это тоже вопрос договорённости, а не аксиома. А когда цены назначаются не персонально, а сразу целым категориям клиентов, удобнее работать через групповые механики — мы разбираем их в материале про оптовые цены по группам клиентов в Битрикс.
Реализация в 1С-Битрикс пошагово
Соберём всё сказанное в практическую последовательность внедрения. Порядок шагов важен: если поменять его местами, придётся переделывать.
- Опишите матрицу на бумаге. Зафиксируйте категории клиентов, оси изменения цены, пороги объёма и стратегию приоритетов. Это бизнес-этап, и он важнее всех технических.
- Заведите группы пользователей. В «Настройки → Пользователи → Группы» создайте группы под категории контрагентов: «Дилеры», «Крупный опт» и так далее. Продумайте, как контрагент будет попадать в группу — модерация, регистрация, обмен.
- Создайте типы цен. В «Магазин → Настройки → Типы цен» заведите колонки цен под категории клиентов и служебные («Закупочная», «РРЦ»). В правах доступа каждого типа укажите, какие группы его видят и покупают.
- Заполните базовые цены. Вручную для небольшого каталога или через обмен с 1С для большого. Убедитесь, что у товаров заполнены нужные типы цен.
- Настройте правила скидок. В «Магазин → Скидки» соберите правила под объёмные и ассортиментные надстройки: условия по количеству, сумме, группе и разделу каталога, действие — процент или фиксированная цена.
- Расставьте приоритеты. Задайте каждому правилу приоритет и флаг «прекращать применение других» согласно выбранной стратегии. Добавьте правило-предохранитель от ухода ниже пола маржи.
- Подключите договорные цены. Настройте передачу персональных цен из 1С или заведите персональные типы цен для ключевых клиентов.
- Протестируйте под каждой ролью. Тестовыми учётками каждой категории пройдите путь «каталог → карточка → корзина → заказ» и сверьте цены на всех шагах.
Как это выглядит в админке
Настройки ценообразования распределены по двум зонам админки: типы цен и права к ним живут в настройках магазина, а правила скидок — в разделе «Скидки». Схематично карточка правила скидки с условиями и приоритетом выглядит так:
Обратите внимание на две вещи в этой схеме. Во-первых, условия объединяются по «И» — правило сработает, только когда выполнены все три: клиент из группы «Дилеры», количество от 500 и товар из нужного раздела. Это ровно одна ячейка матрицы. Во-вторых, приоритет и флаг «прекращать другие» — не декоративные поля, а именно тот механизм, что защищает от конфликта скидок. Настраивая правило, всегда осознанно заполняйте эти два поля, а не оставляйте значения по умолчанию.
Обмен с 1С: откуда берутся цены
На реальном оптовом проекте цены почти никогда не ведутся на сайте вручную — их слишком много и они меняются слишком часто. Источником истины выступает учётная система, а 1С-Битрикс получает цены через штатный обмен. Здесь важно правильно разделить зоны ответственности.
| Что настраиваем | Источник истины | Где живёт |
|---|---|---|
| Базовые цены по типам | 1С (учёт) | Приходят обменом в типы цен Битрикса |
| Договорные цены контрагентов | 1С (договоры) | Персональные цены пользователей |
| Объёмные и ассортиментные скидки | Сайт | Правила работы с корзиной |
| Маркетинговые акции витрины | Сайт | Правила скидок с датами действия |
| Накопительные скидки по обороту | 1С / CRM | Уровень скидки приходит на сайт |
Главное правило разделения — одна скидка настраивается ровно в одном месте. Если объёмная скидка задана и в 1С, и в правилах Битрикса, вы получите либо двойное списание, либо расхождение витрины с заказом, который потом уйдёт в учёт. Договоритесь: договорные и базовые цены — из 1С, витринные механики — на сайте, и никаких пересечений.
Технически обмен настраивается через штатный модуль обмена с 1С (протокол CommerceML). Типы цен на сайте сопоставляются с типами цен в 1С, группы контрагентов — с категориями клиентов в учёте. При грамотной настройке новый прайс или изменившийся договор автоматически доезжают до витрины без ручного вмешательства. Если у вас нетривиальная учётная логика или несколько источников данных, обмен стоит проектировать отдельно — это частая тема наших проектов по интеграциям 1С-Битрикс с учётными системами.
Производительность и кэш расчёта цены
Расчёт оптовой цены — не бесплатная операция. Когда на каждую позицию претендует десяток правил скидок, а в корзине сотни строк, наивная реализация может ощутимо нагрузить сервер. На большом опте это выливается в медленный каталог и тормозящую корзину. Поэтому производительность ценообразования стоит держать в голове с самого начала.
Основные принципы, которые снижают нагрузку расчёта:
- Меньше правил — быстрее расчёт. Базовый уровень цены отдавайте типам цен, а не правилам. Каждое активное правило скидки система проверяет на каждую строку корзины.
- Точные условия. Правило с условием по конкретному разделу отсекается быстрее, чем правило «на весь каталог», которое приходится проверять всегда.
- Кэш каталога. Цены в списках и карточках кэшируются вместе с компонентами каталога. Убедитесь, что кэш компонентов включён и корректно сбрасывается при обмене.
- Разумное число типов цен. Десятки типов цен на товар раздувают выборки. Держите столько колонок, сколько реально нужно категориям клиентов.
Отдельно стоит помнить про воспринимаемую скорость. Даже корректный расчёт цены не спасёт, если каталог грузится секундами. Здесь помогают штатные механики ускорения витрины — кэширование компонентов и композитный режим, — которые отдают статическую часть страницы мгновенно, а персональные цены догружаются. Для оптового кабинета, где под каждым клиентом свои цены, грамотная работа с кэшем критична: нельзя закэшировать чужую цену и показать её другому контрагенту. Персонализированные блоки должны выноситься из общего кэша, иначе клиент увидит цену соседа.
Как проверить, что клиент видит свою цену
Ценообразование — та область, где «вроде работает» недопустимо. Ошибка в цене — это либо потерянная маржа, либо конфликт с клиентом. Поэтому после настройки нужна дисциплинированная проверка. Вот рабочий порядок.
- Заведите тестовые учётки. По одной на каждую категорию клиентов: розница, дилер, крупный опт, VIP с договором. Это ваши «глаза» покупателя.
- Проверьте цену в списке каталога. Под каждой учёткой откройте раздел и убедитесь, что в списке отображается цена нужного типа, а не розничная и не закупочная.
- Проверьте карточку товара. Цена в карточке должна совпадать с ценой в списке. Расхождение обычно означает разный источник цены в компонентах.
- Проверьте корзину на порогах. Добавьте количество чуть ниже и чуть выше порога объёмной скидки. Цена должна меняться ровно на границе.
- Проверьте конфликт скидок. Смоделируйте случай, когда претендуют несколько скидок, и убедитесь, что применяется та, что предписана стратегией приоритетов.
- Проверьте итоговый заказ. Оформите заказ и сверьте цену в нём с витриной. Именно цена заказа уходит в учёт — она должна быть верной.
Самая коварная ошибка — расхождение цены между витриной и корзиной. Если в каталоге товар показывается по одной цене, а в корзине пересчитывается на другую, покупатель теряет доверие мгновенно. Причина почти всегда в том, что цена в списке и цена в корзине берутся разными механизмами (например, витрина показывает тип цены, а корзина применяет ещё и правило скидки). Сквозная проверка на всех шагах ловит это до того, как заметит клиент.
Частые ошибки
- Начали с настройки админки, не описав матрицу цен и стратегию приоритетов на бумаге — в итоге правила противоречат друг другу и логика непрозрачна.
- Выдали группе оптовиков доступ к «Закупочной» цене — Битрикс показывает минимальную из доступных, и маржа утекает в витрину.
- Не задали флаг «прекращать применение других скидок» — несколько скидок сложились, и цена ушла ниже закупки.
- Задали одну и ту же объёмную скидку и в 1С, и в правилах Битрикса — двойное списание и расхождение витрины с заказом.
- Забыли про правило-предохранитель — при удачном стечении скидок клиент оформил заказ по неадекватно низкой цене.
- Настроили десятки правил «на весь каталог» вместо точечных условий — расчёт корзины замедлился на большом заказе.
- Закэшировали персональную цену в общем кэше компонента — один контрагент увидел цену другого.
- Не проверили сопоставление типов цен и групп после обмена с 1С — клиенты какое-то время видели чужие цены.
- Тестировали только под администратором — под реальными группами клиентов цены оказались другими, и это всплыло уже в бою.
Чек-лист внедрения
Сведём всё в практический список, по которому удобно принимать готовность оптового ценообразования перед запуском.
- Матрица описана. Категории клиентов, оси цены, пороги объёма и стратегия приоритетов зафиксированы в документе и согласованы с коммерческим отделом.
- Группы и типы цен заведены. Под каждую категорию клиентов есть группа пользователей и тип цены; права доступа к типам цен проверены, «Закупочная» никому лишнему не видна.
- Базовые цены заполнены. У товаров заполнены нужные типы цен вручную или через обмен с 1С.
- Правила скидок собраны. Объёмные и ассортиментные надстройки реализованы правилами с точными условиями по группе, количеству, сумме и разделу.
- Приоритеты расставлены. У каждого правила задан приоритет и флаг совместимости; есть правило-предохранитель от ухода ниже пола маржи.
- Договорные цены подключены. Персональные условия ключевых клиентов приходят из 1С или заданы персональными типами цен.
- Обмен настроен. Типы цен и группы корректно сопоставлены между 1С и сайтом; каждая скидка задаётся ровно в одном месте.
- Проверка пройдена. Под тестовыми учётками каждой категории цена сверена на пути «каталог → карточка → корзина → заказ».
Вывод
Оптовое ценообразование в 1С-Битрикс перестаёт быть ручным трудом, как только вы раскладываете его на три оси и опираетесь на штатные механизмы: типы цен и группы для категорий клиентов, правила скидок для объёма и ассортимента, обмен с 1С для базовых и договорных цен. Успех держится не на хитрых настройках, а на двух вещах: заранее описанной матрице цен со стратегией приоритетов и дисциплинированной проверке цены под каждой ролью. Сделайте это — и клиент всегда будет видеть свою цену, а маржа перестанет утекать в непредусмотренные скидки.