-15%Скидка 15% на разработку сайта или магазина при старте до конца месяца

Индивидуальные прайс-листы и договорные цены для B2B на 1С-Битрикс

Индивидуальные цены B2B на 1С-Битрикс: договорные цены, персональный прайс-лист, цены по контрагенту, обмен с 1С

В рознице цена одна для всех: ценник на витрине одинаков и для случайного покупателя, и для постоянного. В опте так почти не бывает. Здесь цена — результат переговоров, объёмов и истории отношений, поэтому у каждого контрагента она своя. Один и тот же товар одному партнёру продаётся по одной цене, другому — по другой, а третьему вообще по договорной, зафиксированной в отдельном соглашении. Свести это к общему прайсу нельзя — нужна механика, которая покажет каждому клиенту именно его цифру. В 1С-Битрикс её собирают из типов цен, групп пользователей, персональных скидок и обмена с 1С — так строятся индивидуальные цены B2B: персональный прайс и договорные цены по контрагенту.

Эта статья — практический разбор того, как показывать каждому клиенту свою цену на 1С-Битрикс: где заканчивается базовый механизм цен по группам и начинается настоящая персональность, как приходят договорные цены и соглашения из 1С, как устроен персональный прайс-лист с выгрузкой в Excel и PDF, как расставить приоритет между акцией и договорной ценой и почему персональные цены нельзя кэшировать «как обычно». Материал из нашей практики разработки сайтов для B2B-компаний — по делу, без обещаний «гарантированного роста продаж».

Коротко

  • В B2B цена у каждого клиента своя — это норма, а не исключение, и сайт должен её отражать.
  • Базовый механизм — типы цен и группы: он даёт цены по категориям покупателей, но не уникальную цену на каждого.
  • Настоящая персональность приходит из 1С: договорные цены и соглашения об условиях продаж, привязанные к контрагенту.
  • Поверх базы работают персональные скидки и наценки — точечная корректировка под конкретного клиента.
  • Клиент видит «свою цену» в каталоге, карточке и личном кабинете, а прайс выгружает в Excel или PDF в своей цене.
  • Приоритет цен (акция vs договорная) описывают явно, а персональные цены нельзя держать в общем кэше — иначе клиент увидит чужую цену.

Почему в B2B у каждого клиента своя цена

Розничная модель проста: есть товар, есть цена, есть кнопка «Купить». В опте эта простота ломается на первом же клиенте. Оптовый покупатель приходит не с улицы — за ним стоит договор, история закупок, согласованный объём и переговоры менеджеров. Всё это выливается в конкретную цену, которая справедлива именно для него и не обязана совпадать с ценой соседа по рынку. Поэтому «одна цена для всех» в B2B — скорее исключение, чем правило.

Причин, по которым у каждого контрагента складывается своя цена, несколько, и обычно они действуют вместе:

Из этого следует главное для сайта: витрина обязана показывать не абстрактную «оптовую цену», а цену конкретного покупателя. Причём показывать так, чтобы клиент А не видел цену клиента Б — это коммерческая тайна. Задача разбивается на две части: во-первых, где хранить и как считать индивидуальные цены (обычно источник — 1С), и во-вторых, как безопасно показать каждому только его цифру. Дальше вся статья — про то, как это устроено в 1С-Битрикс: от базового механизма цен до договорных цен, персональных прайсов и обмена.

Один товар — своя цена у каждого контрагента Товар «Насос PRO-50» одна карточка Контрагент А розница базовая Контрагент Б опт оптовая −12% Контрагент В дилер дилерская −20% Контрагент Г по договору договорная
Схема: одна карточка товара показывает разным контрагентам разную цену — базовую, оптовую, дилерскую и договорную. В B2B это норма, и сайт должен её отражать.

Базовый механизм: типы цен и группы

Прежде чем говорить о персональности, нужно понять фундамент, на котором она строится. В 1С-Битрикс за «разные цены разным покупателям» отвечают две связанные сущности: типы цен и группы пользователей. Это тот самый базовый механизм, из которого потом вырастают и договорные цены, и персональные прайсы.

Тип цены — это отдельный прайс в торговом каталоге. У одного товара может быть несколько цен разных типов: розничная, оптовая, дилерская. Каждый тип цены — как отдельная колонка в общей таблице цен. Группа пользователей — это категория покупателя: гость, розница, оптовик, дилер. Связываются они правами: у каждого типа цены указано, какие группы могут его видеть и покупать по нему. Оптовая цена открыта только группе оптовиков, дилерская — только дилерам.

СущностьОтвечает на вопросПример
Тип ценыСколько стоит товар в этом прайсеРозничная, Оптовая, Дилерская
Группа пользователейКто этот покупательГость, Опт, Дилеры, VIP
Права на тип ценыКакая группа видит какой прайсОптовая → только группе «Опт»
Приоритет типа ценыКакую цену показать, если доступно несколькоОптовая важнее розничной

Когда покупатель заходит на сайт, система смотрит, в каких он группах, какие типы цен этим группам доступны, и показывает подходящую цену — с учётом приоритета, если доступно несколько. Это надёжно решает задачу «цены по категориям»: все оптовики видят оптовый прайс, все дилеры — дилерский. Подробно эту связку мы разбираем в отдельной статье про оптовые цены по группам клиентов в 1С-Битрикс — она хороший фундамент для этого материала.

Запомните разницу: тип цены — это «сколько стоит», группа — «кто покупает», а права связывают их в «кто видит какую цену». Индивидуальные цены строятся поверх этого фундамента: там, где групп и типов цен уже не хватает для настоящей персональности, в дело вступают договорные цены и скидки из 1С.

Где групп мало, а нужна персональность

Механизм типов цен и групп прекрасно работает, пока клиенты делятся на несколько понятных категорий. Проблема начинается, когда персональность становится по-настоящему индивидуальной. Представьте: у вас двести дилеров, и у каждого по договору своя цена на ключевые позиции. Завести двести типов цен и двести групп — путь в тупик: это двести прайсов, которые нужно поддерживать, синхронизировать и защищать правами. Система формально позволит, но управлять этим станет невозможно.

Вот граница, за которой чистый механизм «типы цен + группы» перестаёт масштабироваться:

Ответ на все эти случаи один: персональность не «эмулируют» сотнями типов цен, а берут из 1С. Учётная система — родное место для договорных цен, соглашений и индивидуальных условий. Сайт получает готовый результат обменом и показывает его нужному покупателю. При этом базовый механизм типов цен никуда не девается — он остаётся каркасом, на который ложатся персональные корректировки. Дальше разберём, как именно это устроено: сначала персональные цены по контрагенту, затем договорные цены и соглашения, потом скидки и наценки.

Персональные цены по контрагенту

Персональная цена по контрагенту — это цена, привязанная не к группе «вообще», а к конкретному покупателю (юрлицу, договору, клиенту из 1С). Один и тот же товар в одной и той же группе «Дилеры» может стоить для двух разных контрагентов по-разному, потому что у каждого свой договор. Это и есть шаг от «цен по категориям» к настоящей индивидуальности.

На практике персональные цены по контрагенту реализуют несколькими способами, и выбор зависит от того, насколько уникальны цены и как их ведут в 1С:

ПодходКак работаетКогда подходит
Узкие типы ценОтдельный тип цены под сегмент или крупного клиентаНемного уровней, редкие изменения
Персональные скидкиБаза + индивидуальная скидка/наценка на клиентаЦена = общий прайс ± корректировка
Цены по соглашению из 1СЦена приходит привязанной к контрагенту/договоруДоговорные цены, много клиентов
Расчёт в личном кабинетеЦена считается для вошедшего клиента на летуСложные формулы, большие прайсы

В реальных проектах эти подходы комбинируют. Типичная архитектура такая: групповые типы цен задают базу («опт», «дилер»), а поверх на конкретного контрагента накладываются персональные скидки или договорные цены из 1С на отдельные позиции. Клиент видит итог — свою цену, — не задумываясь, из чего она сложилась. Важно, что персональная цена всегда привязана к авторизованному покупателю: пока человек не вошёл под своей учётной записью, связанной с контрагентом, система не знает, чью цену показывать, и даёт базовую или «цену по запросу».

Персональная цена требует авторизации: чтобы показать «вашу цену», сайт должен знать, кто вы и к какому контрагенту привязаны. Поэтому индивидуальные цены почти всегда живут за входом — в связке с закрытым разделом и личным кабинетом. Как закрыть цены от чужих глаз, мы разбираем в статье про закрытый оптовый раздел на 1С-Битрикс.

Договорные цены и соглашения из 1С

Договорная цена — это цена, зафиксированная в договоре или соглашении с конкретным контрагентом. Её особенность в том, что она «защищённая»: пока действует договор, клиент покупает именно по ней, и общие изменения прайса или акции её, как правило, не касаются. Родное место таких цен — учётная система, то есть 1С. Там они живут в двух формах.

Отдельный тип цены под договор. В 1С заводят тип цены, который применяется к конкретному контрагенту или группе договоров. При обмене он выгружается на сайт и сопоставляется с типом цены каталога. Плюс — простота и наглядность. Минус — если таких договоров много, типов цен становится слишком много.

Соглашение об условиях продаж. Это более гибкий объект 1С, где для контрагента или сегмента описаны условия: какой тип цены применять, какие скидки и наценки, валюта, кратность, отсрочка. Соглашение — как «карточка правил» с конкретным партнёром. Меняются условия — правят соглашение, а не десятки цен. На сайт обменом приходит результат применения соглашения: персональный тип цены и/или персональные скидки для этого покупателя.

Форма в 1СЧто фиксируетКак приходит на сайт
Тип цены под договорКонкретные цены для контрагентаОтдельный тип цены каталога
Соглашение об условиях продажТип цены + скидки + условияПерсональная цена и скидки клиента
Скидки в соглашенииПроцент или сумма корректировкиПерсональная скидка на покупателя
Условия отгрузкиКратность, минимальная партияОграничения в корзине

Ключевой принцип: цены рождаются в 1С, сайт их показывает. Не нужно дублировать договорную цену вручную в админке сайта — она разойдётся с учётной системой, и клиент в корзине увидит одно, а в счёте из 1С другое. Правильно — единый источник истины (1С) и регулярный обмен, который приносит на сайт актуальные договорные цены и соглашения. Как настроить сам обмен, мы подробно разбираем в статье про интеграцию магазина с 1С.

Договорные цены: из 1С на витрину 1С: источник цен Соглашение · КА-1 Договорная · КА-2 Скидка · КА-3 типы цен + условия CommerceML файл обмена Сайт: витрина Тип цены ↔ группа Права по контрагенту «Ваша цена» видит только клиент 1С — единый источник цен; сайт показывает то, что пришло обменом, нужному клиенту
Схема: договорные цены и соглашения по контрагентам ведут в 1С, обмен по CommerceML переносит их на сайт, где они сопоставляются с типами цен и показываются только своему клиенту.

Персональные скидки и наценки

Не всегда персональность — это отдельная цена. Часто клиенту согласована не новая цифра, а корректировка к общему прайсу: «этому дилеру −7% ко всему оптовому прайсу», «этому клиенту +3% за срочную отгрузку». Это персональные скидки и наценки — механизм, который экономит силы там, где заводить отдельный тип цены избыточно.

Логика простая: есть база (групповой тип цены), а поверх неё для конкретного покупателя применяется его личная корректировка. Итоговая цена = база ± персональная скидка/наценка. Плюс подхода в том, что база остаётся единой и управляется централизованно, а персональность добавляется точечно, не размножая прайсы.

Важный нюанс — как складываются несколько скидок. Если клиенту одновременно положены персональная скидка, акционная и скидка за объём, нужно заранее решить: они суммируются, перемножаются или применяется только максимальная? Это правило должно быть одинаковым на сайте и в 1С, иначе цена в корзине разойдётся с ценой в счёте. Правило комбинирования скидок — такая же часть ценовой политики, как и сами цены, и его формулируют явно, а не оставляют «на усмотрение системы».

Индивидуальный прайс-лист: просмотр

Когда у клиента своя цена на сотни позиций, ему нужен не только ценник в карточке, но и персональный прайс-лист — единый список всех доступных ему товаров с его ценами. Это рабочий инструмент закупщика: по нему он планирует заказы, сверяет цены, готовит спецификации. На сайте персональный прайс живёт в личном кабинете как отдельная страница «Мой прайс» или «Прайс-лист».

Что показывает персональный прайс на витрине:

Технически персональный прайс — это тот же каталог, но отфильтрованный и посчитанный для конкретного вошедшего клиента. Он всегда за авторизацией: гость персональный прайс не видит в принципе. Часто прайс делают в виде компактной таблицы с поиском и фильтром по разделам — закупщику важнее скорость и полнота, чем красивые карточки. Персональный прайс — естественная часть личного кабинета дилера, где рядом лежат история заказов, документы и баланс. Как устроен такой кабинет, мы разбираем в статье про личный кабинет дилера на 1С-Битрикс.

Персональный прайс в личном кабинете Кабинет · ООО «Контрагент А» вошёл Мой прайс Заказы Документы ТоварКратностьВаша цена Насос PRO-50кор. 5 штпо договору Фильтр F-20кор. 10 штопт −12% Клапан K-3упак. 1 штскидка −7% Скачать Excel Скачать PDF Прайс собран в цене клиента; выгрузка формируется на лету с проверкой прав
Схема: в личном кабинете вкладка «Мой прайс» показывает клиенту доступные товары в его ценах с кратностью, а кнопки выгружают персональный прайс в Excel и PDF.

Выгрузка прайса в Excel и PDF

Просмотр прайса на сайте — половина дела. Закупщику часто нужен файл: чтобы согласовать внутри компании, загрузить в свою систему, распечатать или отправить директору. Поэтому персональный прайс почти всегда дополняют выгрузкой в Excel и PDF. И здесь есть тонкость, на которой многие спотыкаются: выгрузка тоже должна быть персональной и безопасной.

Как правильно организовать выгрузку персонального прайса:

  1. Генерируйте файл на лету. Прайс формируется в момент запроса — в цене конкретного вошедшего клиента, с актуальными остатками и кратностью. Не заранее подготовленный статический файл.
  2. Проверяйте права на сервере. Обработчик выгрузки сначала определяет, кто запрашивает файл, и формирует прайс именно в его цене. Чужую цену клиент получить не должен.
  3. Не отдавайте прайс по прямой ссылке. Если файл лежит по известному URL и доступен всем, кто знает адрес, — это утечка. Отдавайте через обработчик со сверкой прав.
  4. Выбирайте формат под задачу. Excel — для дальнейшей работы с данными (сортировка, загрузка в систему клиента). PDF — для согласования и печати, где важен неизменный вид.
  5. Указывайте актуальность. В шапке файла — дата формирования и имя контрагента, чтобы было видно, чей это прайс и на какой момент.

Excel обычно делают в виде таблицы: артикул, название, единица, кратность, остаток, цена клиента. Такой файл закупщик легко обработает у себя. PDF — оформленный документ с логотипом и реквизитами, пригодный для отправки и печати. Оба формируются из одних и тех же данных — персонального прайса клиента, — просто в разной «обёртке». Главное правило то же, что и для показа цен: в файл попадает только цена того, кто его запросил, и никак иначе.

Выгрузка — это тоже показ цены: к файлу прайса применяются те же правила безопасности, что и к цене на витрине. Он формируется в цене конкретного клиента, отдаётся с проверкой прав и не лежит статикой по прямой ссылке. Иначе договорная цена одного контрагента утечёт к другому через скачанный файл.

Закрытый показ цен: только своя

Индивидуальные цены неотделимы от безопасности. Если у каждого клиента своя договорная цена, то показать её нужно так, чтобы клиент А ни при каких условиях не увидел цену клиента Б. Договорная цена — коммерческая тайна, и её утечка к конкуренту или соседу по рынку бьёт по отношениям с партнёром. Поэтому персональные цены всегда живут за закрытым показом.

Что это означает на практике:

По сути закрытый показ индивидуальных цен — это частный случай закрытого оптового раздела, только закрывается не «опт вообще», а «цена конкретного контрагента от всех остальных». Механика та же: группы, права, проверка на сервере. Подробно принцип «ограничивать, а не прятать» мы разбираем в статье про закрытый оптовый раздел на 1С-Битрикс — для индивидуальных цен он критичен вдвойне, потому что тут утекает не общий прайс, а персональные условия каждого клиента.

Кратность, минимальная партия, условия

Индивидуальная цена в B2B почти никогда не ходит одна — с ней связаны условия отгрузки: кратность упаковки, минимальная партия, единица измерения. Клиент видит не просто «цена 100 рублей», а «100 рублей за штуку, продаётся коробками по 5, минимальный заказ — 2 коробки». Всё это тоже часто индивидуально и тоже приходит из соглашения в 1С.

УсловиеЧто задаётКак влияет на заказ
Кратность упаковкиТовар продаётся кратно упаковкеКорзина округляет количество до кратного
Минимальная партияНижний порог заказа позицииМеньше нельзя оформить
Единица измеренияШт, упаковка, кг, метрЦена и остаток считаются в этой единице
Минимальная сумма заказаПорог по всей корзинеЗаказ не оформить ниже суммы

Почему это важно для персональных цен: у разных контрагентов условия могут отличаться так же, как цены. Одному дилеру товар отгружают коробками по 5, другому — паллетами по 100, и цена за единицу у них разная именно из-за объёма партии. Поэтому кратность и минимальную партию нельзя жёстко «зашить» в товар — они приходят из соглашения вместе с ценой и применяются к конкретному клиенту. В корзине эти условия должны соблюдаться: система не даст оформить некратное количество или партию меньше минимальной.

Тема кратности, упаковок и заказа по спецификации в B2B-каталоге обширна и заслуживает отдельного разбора — как её реализуют на 1С-Битрикс, мы показываем в статье про B2B-каталог: кратность, остатки и заказ по спецификации. Здесь достаточно запомнить: индивидуальная цена и индивидуальные условия отгрузки — это единый пакет условий по клиенту, и приходят они вместе.

Приоритет цен: акция vs договорная

Один из самых коварных вопросов индивидуального ценообразования: какая цена победит, если их несколько? В B2B у одного товара для одного клиента могут одновременно существовать базовая цена, персональная договорная и акционная. Система должна знать, какую показать как итоговую — и это решение нельзя оставлять «на самотёк», иначе цена в корзине окажется неожиданной и для клиента, и для менеджера.

Типичный конфликт: у клиента договорная цена на товар, и одновременно на этот товар запущена общая акция. Что показать? Однозначного ответа нет — всё зависит от политики компании. Возможны разные правила:

Правило приоритетаЧто показывается клиентуКогда применяют
Договорная защищенаВсегда договорная, акция игнорируетсяЦена по договору зафиксирована жёстко
Акция важнееАкционная, если она ниже договорнойСтимулирование спроса, распродажа
Минимальная из доступныхСамая низкая из всех цен клиентаКлиенту всегда выгодная цена
Приоритет по типу ценыЦена типа с высшим приоритетомНастройка приоритетов типов цен

Каждое правило по-своему логично, но выбрать нужно одно — и оно должно работать одинаково на сайте и в 1С. Если сайт показывает акционную цену, а 1С в счёте выставляет договорную, клиент справедливо возмутится. Поэтому приоритет цен — это не техническая мелочь, а часть ценовой политики, которую формулирует бизнес и одинаково реализуют по обе стороны обмена.

В 1С-Битрикс инструментом расстановки приоритетов служат сами типы цен (у них есть настройка приоритета) и правила работы с корзиной (скидки, наценки, правила пересчёта). Договорную цену обычно делают «защищённой» — задают ей высокий приоритет или выносят из-под действия общих акций, чтобы согласованная с партнёром цифра не менялась внезапно. Главное — сформулировать правило явно и проверить его на пересекающихся случаях.

Приоритет цен: какая победит Базовая цена общий прайс Договорная цена по соглашению · КА Акционная цена общая акция Правило приоритета цен Итоговая цена одна — та, что увидит клиент
Схема: у товара для клиента одновременно есть базовая, договорная и акционная цена. Правило приоритета выбирает одну итоговую — и оно должно работать одинаково на сайте и в 1С.

Обмен с 1С: типы цен и соглашения

Раз цены рождаются в 1С, центральную роль в индивидуальном ценообразовании играет обмен. Именно он приносит на сайт типы цен, договорные цены, соглашения и скидки. Понимать, как устроен обмен, важно, чтобы персональные цены на витрине совпадали с тем, что в учётной системе, — иначе клиент увидит одно, а в счёте получит другое.

Обмен идёт по формату CommerceML — стандарту выгрузки каталога и цен из 1С в Битрикс. Что в контексте индивидуальных цен передаётся и как это ложится на сайт:

Критически важно правильно сопоставить типы цен при настройке обмена: если оптовая цена 1С «приедет» не в тот тип цены сайта, она откроется не той группе и клиент увидит чужую цифру. Это одна из самых частых причин расхождения цен. Поэтому сопоставление типов цен проверяют вручную после настройки обмена и после каждого изменения структуры цен в 1С.

Ещё один принцип: обмен приносит цифры, но не управляет доступом. Кто какую цену видит — решают права на типы цен уже на стороне сайта. 1С передаёт значения, а видимость настраивается в Битриксе. Эти два слоя нельзя путать: обмен отвечает за «сколько стоит», права — за «кто видит». Как настроить сам обмен со всеми нюансами, мы подробно разбираем в статье про интеграцию магазина с 1С.

Выгрузка цен по клиенту из 1С

Отдельно стоит разобрать самый «персональный» сценарий обмена — выгрузку цен по конкретному клиенту. Когда договорных цен много и они уникальны, выгружать всем всё нерационально: файл обмена раздувается, а на сайт попадают чужие цены, которые потом надо прятать правами. Более аккуратный подход — передавать персональные цены адресно, привязанными к контрагенту.

Как это обычно устроено:

  1. Привязка цены к контрагенту. В 1С договорная цена или скидка привязана к контрагенту (или договору). При обмене она передаётся вместе с признаком, к кому относится.
  2. Связь контрагента и пользователя сайта. Учётная запись на сайте связана с контрагентом из 1С. По этой связи система понимает, чьи персональные цены показывать вошедшему пользователю.
  3. Хранение персональных цен. На сайте персональные цены хранятся привязанными к покупателю — как отдельные значения цен, скидки или расчётные правила для конкретного контрагента.
  4. Показ на лету. При заходе клиента система подставляет его персональные цены поверх базового прайса — в каталоге, карточке и прайсе.

Ключевое звено здесь — связь «контрагент 1С ↔ пользователь сайта». Без неё сайт не знает, чью цену показывать. Эту связь настраивают при регистрации и модерации клиента: менеджер сопоставляет учётную запись с контрагентом в 1С, и с этого момента обмен адресно приносит персональные цены нужному пользователю. Если связь потеряна или неверна, клиент увидит либо базовую цену вместо своей, либо — что хуже — чужую. Поэтому целостность этой связи проверяют так же тщательно, как и сами цены.

Отображение «ваша цена» в каталоге и ЛК

Когда персональные цены посчитаны и привязаны к клиенту, остаётся показать их так, чтобы закупщику было удобно и понятно. «Ваша цена» должна встречать клиента везде, где он видит товар: в списке каталога, в карточке товара, в корзине и в личном кабинете. И желательно — с явной пометкой, что это именно его, персональная цена.

Где и как показывают персональную цену:

Пометка «ваша цена» — не косметика, а элемент доверия. Закупщик должен понимать, что видит именно свои договорные условия, а не случайную цифру. Особенно это важно, когда персональная цена заметно ниже базовой: явная пометка «по договору» или «персональная цена» снимает вопросы и подчёркивает ценность партнёрства. И наоборот — если клиент не понимает, его это цена или общая, он лишний раз позвонит менеджеру, а то и усомнится в корректности сайта.

Личный кабинет — естественный дом для всей персональной картины: цены, прайс, заказы, документы, баланс в одном месте. Собрать такой кабинет под ключ — отдельная услуга, а как он устроен внутри, мы показываем в разборе личного кабинета дилера на 1С-Битрикс.

Кэш и персонализация: осторожно с ценами

Здесь начинается самая коварная часть индивидуальных цен — кэширование. Каталог для скорости кэшируется: страница считается один раз и потом быстро отдаётся всем. Для обычной розницы это идеально. Для персональных цен — источник самой опасной ошибки: клиент видит чужую цену из кэша. Контрагент А заходит первым, его страница с его договорной ценой попадает в общий кэш, и следующий клиент Б получает цену А. Это одновременно ошибка и утечка коммерческих условий.

Что нужно учитывать при кэшировании индивидуальных цен:

Правильная архитектура — разделить страницу на две части: обезличенную статику (описание, характеристики, фото), которую можно смело кэшировать и отдавать композитным сайтом мгновенно, и персональный слой (цена, скидка, доступность, кнопка), который считается для конкретного клиента при каждом заходе. Тогда сайт остаётся быстрым, а цены не путаются между клиентами. Это тот случай, когда производительность и безопасность нужно согласовать заранее, на этапе проектирования, а не латать после жалобы «мне показали чужую цену».

Главное правило кэша для персональных цен: цена, зависящая от клиента, никогда не должна попадать в кэш, общий для всех. Кэшируйте обезличенную статику, персональную цену считайте в динамике для конкретного пользователя. Ошибка здесь — не «неверная цифра», а утечка договорных условий одного клиента другому.

Большие прайсы и производительность

Индивидуальные цены дорого обходятся производительности, и на больших каталогах это чувствуется. Если у вас десятки тысяч товаров, сотни контрагентов и у каждого свои цены и скидки, наивный расчёт «посчитать все персональные цены на каждый заход» положит сайт. Поэтому большие прайсы проектируют с оглядкой на нагрузку с самого начала.

Что помогает держать персональные цены быстрыми на больших объёмах:

Отдельная нагрузка — выгрузка большого прайса в Excel или PDF. Файл на десятки тысяч строк формируется небыстро, поэтому такую выгрузку часто делают фоновой задачей: клиент нажимает «сформировать прайс», файл готовится в фоне, а ссылка на скачивание приходит, когда он готов. Это лучше, чем держать клиента с крутящимся индикатором и рисковать таймаутом. На больших B2B-каталогах производительность персональных цен — не второстепенная деталь, а условие того, что сайтом вообще можно пользоваться.

Модель данных: как всё связано

Соберём разрозненные механизмы в единую картину. Индивидуальные цены — это не один переключатель, а связка нескольких сущностей, каждая из которых отвечает за свой аспект. Понимание модели данных помогает не запутаться, где что настраивать и почему цена вышла именно такой.

СущностьГде живётЗа что отвечает
Контрагент1СКто клиент, его договоры и соглашения
Соглашение об условиях1СТип цены, скидки, условия по клиенту
Тип цены1С ↔ СайтОтдельный прайс, сопоставляется обменом
Пользователь и группаСайтУчётная запись, связь с контрагентом
Права на тип ценыСайтКто видит какую цену
Персональная скидка1С → СайтКорректировка к базе для клиента
Приоритет ценСайт (по политике)Какая цена итоговая при пересечении

Читается эта модель так: контрагент и его условия описаны в 1С (соглашение, договорные цены, скидки), обмен переносит результат на сайт (типы цен, значения, скидки), учётная запись пользователя связана с контрагентом, права на типы цен решают, кто что видит, а правило приоритета выбирает итоговую цену. Всё вместе даёт «вашу цену» для конкретного вошедшего клиента.

Главная мысль модели — разделение ответственности. 1С отвечает за «сколько стоит и по каким условиям», обмен — за «перенести это на сайт», а сайт — за «показать нужному клиенту и никому больше». Каждая сущность на своём месте: цены не ведут вручную на сайте (иначе разойдутся с 1С), доступ не настраивают в 1С (это дело прав на сайте), приоритет описывают явно (иначе цена непредсказуема). Когда эта модель в голове ясна, настройка индивидуальных цен перестаёт быть магией и становится последовательностью понятных шагов.

Реализация индивидуальных цен пошагово

Соберём всё в последовательность. Названия пунктов меню могут отличаться в зависимости от версии и редакции платформы и конфигурации 1С, но порядок общий: от базы к персональности и заканчивая проверкой под клиентами.

  1. Настройте базовый механизм. Заведите типы цен (розничная, оптовая, дилерская) и группы пользователей, свяжите их правами — это каркас, на который ляжет персональность.
  2. Опишите ценовую политику. Зафиксируйте, где цена групповая, где договорная, как считаются скидки и наценки и какое правило приоритета (акция vs договорная). Это делает бизнес, а не система.
  3. Настройте соглашения в 1С. Для контрагентов с индивидуальными условиями создайте соглашения об условиях продаж: тип цены, скидки, кратность, отсрочка.
  4. Настройте обмен и сопоставление. Проверьте, что типы цен 1С корректно сопоставлены с типами цен сайта, а персональные цены и скидки приходят привязанными к контрагенту.
  5. Свяжите контрагентов и пользователей. Настройте связь учётных записей сайта с контрагентами 1С — по ней подставляются персональные цены вошедшему клиенту.
  6. Доработайте показ «вашей цены». В списке, карточке, корзине и кабинете выводите персональную цену с пометкой, соблюдайте кратность и условия.
  7. Сделайте персональный прайс и выгрузку. Вкладка «Мой прайс» в кабинете, выгрузка в Excel и PDF в цене клиента с проверкой прав на сервере.
  8. Настройте кэш персонального слоя. Вынесите персональные цены в динамику, кэшируйте только обезличенную статику — чтобы клиент не увидел чужую цену.
  9. Проверьте под клиентами. Зайдите под разными контрагентами и убедитесь: каждый видит только свою цену, прайс и выгрузка персональны, чужие цены не утекают, корзина совпадает со счётом 1С.

Последний шаг критичен и его часто недооценивают. Индивидуальные цены легко «выглядят правильно» под одним тестовым клиентом, но ломаются на пересечениях: у клиента и договорная цена, и акция; кэш смешал двух покупателей; связь с контрагентом потерялась. Проверка под несколькими реальными сценариями, включая осмотр исходного кода глазами клиента, ловит эти проблемы до того, как договорная цена одного партнёра окажется на экране у другого.

Слои индивидуальных цен 1. Ценовая политика — «как формируется цена и что важнее» 2. Соглашения и цены в 1С — «источник истины по клиентам» 3. Обмен — «перенести цены и условия на сайт» 4. Показ на сайте — «ваша цена нужному клиенту»
Схема: индивидуальные цены держатся на четырёх слоях — политика, соглашения в 1С, обмен и показ на сайте. Каждый слой отвечает за своё, вместе они дают персональную цену конкретному клиенту.

Частые ошибки

Эти промахи в индивидуальном ценообразовании повторяются чаще всего — зная их, вы избежите утечки договорных условий и расхождения цен с 1С:

Чек-лист

Короткий список для приёмки индивидуальных цен перед запуском:

  1. Базовый механизм настроен. Типы цен и группы заведены и связаны правами — есть каркас под персональность.
  2. Политика описана. Зафиксировано, где цена групповая, где договорная, как складываются скидки и какое правило приоритета.
  3. Соглашения в 1С готовы. Для клиентов с индивидуальными условиями созданы соглашения: тип цены, скидки, кратность.
  4. Обмен и сопоставление проверены. Типы цен 1С корректно сопоставлены с сайтом, персональные цены приходят по контрагенту.
  5. Связь клиентов настроена. Учётные записи связаны с контрагентами 1С, персональные цены подставляются вошедшему.
  6. «Ваша цена» видна везде. В списке, карточке, корзине и кабинете — персональная цена с пометкой, с кратностью и условиями.
  7. Прайс и выгрузка персональны. «Мой прайс» и выгрузка в Excel/PDF формируются в цене клиента с проверкой прав, без прямых ссылок.
  8. Кэш безопасен. Персональные цены не в общем кэше; клиент не видит чужую цену.
  9. Приоритет и корзина сходятся. Итог корзины совпадает со счётом 1С на пересекающихся случаях (акция + договорная).
  10. Проверено под клиентами. Витрина проверена под несколькими контрагентами, включая осмотр исходного кода — чужие цены не утекают.

Вывод

Индивидуальные цены B2B на 1С-Битрикс — это не одна настройка, а слоёная система. В основе — базовый механизм типов цен и групп, который даёт цены по категориям покупателей. Поверх него ложится настоящая персональность из 1С: договорные цены, соглашения об условиях продаж, персональные скидки и наценки, привязанные к контрагенту. Обмен переносит это на сайт, права решают, кто что видит, а правило приоритета выбирает итоговую цену. Клиент в результате видит «свою цену» в каталоге, карточке и личном кабинете и выгружает персональный прайс в Excel или PDF.

Два принципа держат всю конструкцию. Первый — единый источник истины: цены рождаются в 1С, сайт их показывает, и вручную на сайте их не дублируют, иначе они разойдутся со счётом. Второй — персональная цена принадлежит только своему клиенту: её нельзя держать в общем кэше, отдавать статическим файлом или прятать стилями, иначе договорные условия одного контрагента утекут к другому. Опишите ценовую политику и приоритет явно, настройте обмен соглашений, свяжите клиентов с контрагентами, вынесите персональные цены в динамику — и проверьте всё под несколькими клиентами. Разобрать конкретный сценарий под ваш каталог и условия работы с контрагентами можно в рамках нашей услуги — начните с сайта для B2B-компании или изучите смежные материалы в рубрике «B2B и опт».

Частые вопросы

Чем индивидуальные цены отличаются от оптовых цен по группам?

Оптовые цены по группам — это когда всем оптовикам одной категории показывается один общий прайс: у группы «Опт» одна цена, у группы «Дилеры» — другая. Индивидуальные цены идут дальше: у каждого конкретного контрагента может быть своя цена на один и тот же товар, отличная от цены его «соседей» по группе. Это результат персональных договорённостей — объёмов, истории закупок, условий договора. Технически групповые цены решаются штатным механизмом типов цен и групп, а индивидуальные — либо большим числом узких типов цен и групп, либо привязкой цен к соглашению/контрагенту из 1С. В реальном B2B оба уровня обычно работают вместе: групповой прайс как база и персональные корректировки поверх него.

Как договорные цены попадают на сайт из 1С?

Через обмен по формату CommerceML. В 1С договорные цены живут либо как отдельные типы цен, либо как соглашения об условиях продаж, привязанные к контрагенту или договору. При обмене на сайт передаются значения цен и признак, к кому они относятся. На стороне 1С-Битрикс эти цены сопоставляются с типами цен торгового каталога, а видимость каждого типа цены ограничивается правами — так контрагент видит только свою цену. Ключевой момент: 1С остаётся единым источником цен, а сайт лишь показывает то, что пришло обменом, нужному покупателю. Вручную договорные цены на сайте не ведут, иначе они разойдутся с учётной системой.

Что такое соглашение об условиях продаж и зачем оно нужно?

Соглашение об условиях продаж — это объект в 1С, где для конкретного контрагента или сегмента зафиксированы условия: какой тип цены применять, какие скидки и наценки действуют, валюта, кратность, отсрочка. По сути это «правила игры» с конкретным партнёром в одном месте. Для сайта соглашение удобно тем, что вместо ручной раздачи цен каждому клиенту вы описываете условие один раз в 1С, а обмен переносит его результат на витрину. Когда условия меняются, правят соглашение, а не десятки карточек. На сайте результат соглашения обычно проявляется как персональный тип цены и персональные скидки, привязанные к покупателю.

Как показать персональный прайс-лист и дать его скачать?

Персональный прайс формируется в цене конкретного покупателя и показывается только ему после входа. На витрине это отдельная страница «Мой прайс» в личном кабинете, где перечислены доступные товары с индивидуальными ценами, кратностью и остатками. Для офлайн-работы прайс выгружают в Excel или PDF — файл генерируется на лету в цене этого контрагента с проверкой прав на сервере. Важно не отдавать прайс статическим файлом по прямой ссылке: тогда его скачает любой, кто узнает адрес. Правильно — обработчик, который сверяет, кто запрашивает файл, и формирует его в цене именно этого клиента.

Какая цена победит: акция или договорная?

Это вопрос приоритета цен, и решается он политикой, а не «само собой». В B2B у одного товара для одного покупателя может одновременно существовать несколько цен: базовая, персональная договорная, акционная. Система должна знать, какую показать как итоговую. Обычно приоритет описывают явно: например, для конкретного клиента договорная цена может быть «защищённой» и не перебиваться общей акцией, либо наоборот — покупателю всегда показывается минимальная из доступных. Единственно верного ответа нет — важно, чтобы правило было сформулировано бизнесом и одинаково работало и на сайте, и в 1С, иначе цена в корзине разойдётся с ценой в счёте.

Почему персональные цены опасно кэшировать «как обычно»?

Потому что каталог для скорости кэшируется, и при общем кэше есть риск показать одному клиенту цену из кэша другого. Для индивидуальных цен это критично: контрагент А может увидеть договорную цену контрагента Б — это и ошибка, и утечка коммерческих условий. Поэтому персональные цены нельзя держать в общем кэше страницы. Их выносят в динамическую часть, которая считается для конкретного пользователя, а кэшируют только обезличенную статику — описание, фото, характеристики. Кэш каталога с ценами делают с учётом покупателя или его типа цены. Проектировать это нужно заранее, а не латать после того, как клиент пожаловался на чужую цену.

Сколько типов цен и групп реально заводить под индивидуальные цены?

Ровно столько, сколько разных ценовых политик у вас есть, — не больше. Если персональность сводится к нескольким уровням (опт, крупный опт, дилер, VIP), хватает нескольких типов цен и групп. Если у каждого крупного клиента действительно уникальная цена по договору, отдельный тип цены на каждого заводить непрактично — тогда персональность реализуют через соглашения и скидки из 1С, привязанные к контрагенту, а не через сотни типов цен. Плодить типы цен «на каждого» опасно: каждый тип — это отдельный прайс, права и обмен, которые надо поддерживать. Обычно комбинируют: групповые типы цен как каркас и персональные скидки/наценки поверх.

Какая редакция 1С-Битрикс нужна для индивидуальных цен?

Индивидуальные и договорные цены строятся на торговом каталоге, типах цен и обмене с 1С, поэтому нужна редакция с интернет-магазином — «Малый бизнес» или «Бизнес». Для развитого B2B с персональными прайсами, личным кабинетом дилера, гибкими правами на типы цен и полноценным обменом соглашений из 1С обычно берут «Бизнес»: она даёт больше возможностей по правам доступа, ценам, каталогу и производительности на больших прайсах. В редакции «Старт» интернет-магазина нет, поэтому ни типов цен, ни персональных прайсов там не настроить.

Поделиться:

Нужны индивидуальные и договорные цены на 1С-Битрикс?

Настроим типы цен и группы, персональные скидки и наценки, договорные цены и соглашения из 1С, персональный прайс с выгрузкой в Excel и PDF, приоритет цен и корректный кэш. Рассчитаем работу по вашим условиям.

Услуга «Сайт для B2B»

Игорь Воскресенский

Игорь Воскресенский — разработчик студии B2Bsite. С 2014 года команда собирает B2B-витрины и оптовые каталоги на 1С-Битрикс: индивидуальные и договорные цены, цены по группам, персональные прайсы, личные кабинеты дилеров и обмен с 1С для среднего и крупного бизнеса.

← Все статьи блога