БонусБесплатный первый месяц абонентской поддержки при заказе разработки «под ключ»

Персональный ассортимент для B2B-клиента на 1С-Битрикс

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

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

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

Коротко

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

Зачем B2B-клиенту персональный ассортимент

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

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

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

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

Что такое ассортиментная матрица

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

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

ПонятиеОтвечает на вопросПример
КаталогЧто компания вообще продаётВесь товарный справочник
Ассортиментная матрицаЧто доступно этому контрагентуТовары по договору клиента
Признак доступностиВиден ли товар клиентуСвойство «доступен КА-1»
Связь клиент ↔ матрицаЧью матрицу показать вошедшемуПользователь ↔ контрагент 1С

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

Запомните разницу: каталог — «что есть у компании», матрица — «что доступно клиенту». Матрица не дублирует каталог, а фильтрует его по признаку доступности. Персональный ассортимент — это управление этим фильтром: кому какие разделы и товары показывать, а какие скрывать.

Кому и зачем ограничивают ассортимент

Ограничение ассортимента — не прихоть и не способ усложнить клиенту жизнь. За каждым сценарием стоит бизнес-логика, и понимать её важно, чтобы правильно спроектировать матрицу. Разберём типичные случаи, ради которых персональный ассортимент вообще затевают.

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

Эксклюзив по договору. Часть номенклатуры компания поставляет только одному партнёру на эксклюзивных условиях. Эти позиции нельзя показывать остальным клиентам — ни в каталоге, ни в поиске, ни в файлах выгрузки. Здесь ассортимент ограничивают жёстко, с полным скрытием.

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

Согласованный перечень по договору. В крупных контрактах прямо прописан список товаров, доступных клиенту. Всё, что вне списка, для него не существует — это доступный ассортимент по договору в чистом виде.

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

Один каталог — разный ассортимент по клиентам

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

Это принципиально меняет архитектуру. Вместо десятков витрин, которые надо синхронизировать, — одна витрина и слой доступности, который для каждого вошедшего клиента отбирает его позиции. Товар редактируется в одном месте, фото загружается один раз, а к какому контрагенту он относится — определяется признаком доступности и правами.

У такого подхода несколько важных следствий, которые нужно держать в голове при проектировании:

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

Способ 1: группы пользователей и права на разделы

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

Когда покупатель заходит на сайт, система смотрит, в каких он группах, какие разделы и товары этим группам доступны, и показывает только их. Раздел, закрытый для группы, не появляется в меню каталога; товар, недоступный группе, не выводится в списке и не открывается по прямой ссылке.

Уровень правЧто ограничиваетПример
Права на разделВидимость целой категорииБренд Б скрыт от дилеров бренда А
Права на товарВидимость отдельной позицииЭксклюзив открыт только партнёру
Группа пользователейПрофиль доступа покупателя«Дилеры Юг», «Эксклюзив»
Связь группы и клиентаВ какие группы входит контрагентКА-1 → группа «Дилеры бренда А»

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

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

Способ 2: свойство доступности по клиенту

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

Свойство доступности реализуют по-разному в зависимости от масштаба и того, как данные ведутся в 1С:

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

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

Способ 3: отдельные каталоги и матрицы

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

Типичные ситуации, где оправдан отдельный каталог:

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

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

Сравнение способов реализации

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

СпособКак работаетКогда подходитОграничение
Права на разделы и товарыГруппы + доступ к категориям и позициямМатрица по сегментам, немного профилейНе масштабируется на уникального клиента
Свойство доступностиПризнак «кому доступно» + фильтр каталогаИндивидуальные матрицы, много клиентовТребует доработки выборки и обмена
Отдельные каталоги-матрицыСамостоятельная витрина под сегментИзолированные направления, эксклюзивДорого поддерживать и синхронизировать
КомбинацияПрава — крупно, доступность — точечноРеальный B2B со сложной структуройНужен продуманный проект и обмен

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

Скрытие недоступных vs показ «под запрос»

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

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

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

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

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

Недоступный товар: скрыть или «под запрос» Сценарий 1: полное скрытие Товар А — виден Эксклюзив — нет в ответе сервера Товар В — виден чистая витрина, скрытого нет в коде Сценарий 2: «под запрос» Товар А — цена, «В корзину» Товар Б — «Цена под запрос» Товар В — цена, «В корзину» виден, но без цены и заказа — допродажа
Схема: недоступный товар можно полностью скрыть — тогда его нет в ответе сервера и его не найти в коде, — либо показать «под запрос» без цены и кнопки заказа как инструмент допродаж. Эксклюзив реализуют только скрытием.

Что видит клиент в каждом сценарии

Чтобы выбор между скрытием и «под запрос» был осознанным, полезно свести воедино, что именно видит клиент в разных ситуациях. Ниже — сравнение того, как одна и та же недоступная позиция выглядит для покупателя в зависимости от политики показа.

СитуацияВ списке каталогаВ поискеПо прямой ссылке
Доступен по матрицеВиден, с ценой и заказомНаходитсяОткрывается
Полностью скрытНе отображаетсяНе находитсяНедоступен (заглушка/404)
Показан «под запрос»Виден, без цены и кнопкиНаходитсяОткрывается без цены
Гость (не авторизован)Базовый ассортимент или входПо базовым правиламПо базовым правилам

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

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

Персональный каталог клиента в кабинете

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

Что отличает персональный каталог клиента от общего:

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

Доступный ассортимент по договору

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

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

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

Индивидуальные цены на фоне матрицы

Персональный ассортимент и индивидуальные цены — соседние, но разные слои персонализации. Ассортимент отвечает на вопрос «какие товары клиент видит», цены — «по какой цене он их покупает». Их важно не путать: можно ограничить состав товаров, оставив у видимых общий прайс, а можно показать общий ассортимент, но с персональными ценами. На практике оба механизма обычно работают вместе: клиент видит только свою матрицу и в ней — свои договорные цены.

Как эти два слоя сочетаются на витрине:

КомбинацияЧто видит клиентКогда применяют
Матрица + свои ценыТолько доступные товары, свои ценыКлассический B2B по договору
Матрица + общий прайсСвой ассортимент, единая ценаОграничен состав, цена одна для всех
Общий каталог + свои ценыВесь каталог, персональная ценаАссортимент общий, цены договорные
Матрица + «под запрос»Часть с ценой, часть без ценыДопродажи вне основной матрицы

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

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

Обмен ассортиментных матриц с 1С

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

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

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

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

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

Связь контрагента и пользователя

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

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

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

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

Быстрый заказ по своему ассортименту

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

Как матрица помогает быстрому заказу:

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

Поиск и фильтр в рамках доступного

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

Что нужно учесть, чтобы поиск и фильтры уважали матрицу:

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

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

Кэш и персональная выборка

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

Что нужно учитывать при кэшировании персональной выборки:

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

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

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

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

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

Что помогает держать персональную выборку быстрой на больших объёмах:

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

Реализация персонального ассортимента пошагово

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

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

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

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

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

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

Чек-лист

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

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

Вывод

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

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

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

Чем ассортиментная матрица отличается от обычного каталога?

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

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

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

Скрывать недоступные товары или показывать их «под запрос»?

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

Как ассортиментная матрица попадает на сайт из 1С?

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

Что такое доступный ассортимент по договору?

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

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

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

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

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

Какая редакция 1С-Битрикс нужна для персонального ассортимента?

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

Поделиться:

Нужен персональный ассортимент для B2B-клиентов на 1С-Битрикс?

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

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

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

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

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