Прайс-лист для дилеров на сайте: формирование, доступ и проверка выгрузки
Прайс-лист для дилеров на сайте — это набор правил, а не один файл: какие типы цен существуют, кто из партнёров какую колонку видит, что именно попадает в выгрузку и как быстро изменение цены доходит до дилера. Ниже — как описать эти правила, собрать матрицу экспорта, проверить результат на тестовых данных и не сломать действующие договорённости с партнёрами.
Что решает прайс-лист для дилеров и где границы задачи
Прямая задача — выдать каждому партнёру его цены в понятном виде и в нужный момент. Дилер не должен видеть розничную колонку как рабочую, не должен получать устаревший файл и не должен скачивать то, на что у него нет прав. Если эти три условия выполняются, прайс-лист работает; если хотя бы одно нарушено, партнёры начинают вести собственные таблицы, а компания теряет контроль над ценами.
Почему это вообще отдельная задача. В рознице цена одна, и вопрос доступа почти не возникает. В дилерской сети цены разные, и как только появляется вторая колонка, появляется риск: партнёр увидит не свою цену, скачает чужой файл или будет работать по устаревшим данным. Каждый такой случай — это либо потеря маржи, либо спор с партнёром, либо ручная переписка менеджера. Прайс-лист для дилеров на сайте нужен именно для того, чтобы такие случаи были исключением, а не нормой.
Границы задачи стоит очертить сразу, иначе проект расползётся. Прайс-лист отвечает за формирование, доступ и выгрузку цен. Он не заменяет договор с партнёром, не определяет юридические условия сотрудничества и не подменяет бухгалтерию. Условия скидок, отсрочек и лимитов фиксируются в договоре и внутренних регламентах, а сайт лишь отражает уже согласованные правила.
Отдельно нужно решить, где заканчивается прайс-лист и начинается личный кабинет партнёра. Прайс-лист — это про цены и их выгрузку. Личный кабинет шире: там могут быть статус партнёра, документы по заказам, состояние взаиморасчётов. Смешивать их в одном разделе неудобно: партнёру нужен быстрый доступ к ценам, а не длинная страница со всем сразу. Если вы только планируете дилерский контур, разумно сначала описать прайс-лист, а уже потом расширять его до полноценного кабинета — общий подход к такому контуру описан в материале про разработка интернет-магазина.
Ещё одна граница — источник цен. Прайс-лист не придумывает цены, он их показывает. Значит, нужно заранее определить, откуда берётся каждая колонка: из учётной системы, из ручной таблицы или из отдельного справочника. Пока источник не определён, любые настройки выгрузки будут держаться на честном слове.
Какие данные нужны, чтобы прайс-лист для дилеров на сайте собирался корректно
Прежде чем что-то настраивать, соберите входные данные. Их немного, но каждая позиция влияет на результат.
Типы цен и ценовые колонки
Определите, сколько ценовых колонок существует в компании. Обычно это розничная цена, одна или несколько дилерских, возможно, цена для крупных партнёров или для конкретного региона. В системах управления сайтом, где каталог строится на типах цен, можно завести несколько типов цен и для каждого задать права доступа — какие пользователи могут покупать по этой колонке. Это штатный механизм, а не доработка.
Важно не путать «сколько колонок существует» и «сколько колонок видит конкретный дилер». Это разные вещи, и об этом ниже.
Статусы дилеров и группы доступа
Дилеры редко равны между собой. У кого-то статус выше, у кого-то ниже, кто-то работает по предоплате, кто-то по отсрочке. Статус партнёра — это то, что связывает конкретного пользователя с конкретной ценовой колонкой. Если статусы уже есть в учётной системе, их нужно перенести или синхронизировать; если нет — описать словами и зафиксировать в регламенте. Без этого связка «партнёр — цена» будет держаться на памяти менеджера.
Форматы выгрузки
Партнёры работают в разных программах, поэтому формат выгрузки — предмет договорённости. Кто-то просит таблицу, кто-то — обменный файл для своей учётной системы. В системах класса 1С-Битрикс обмен с внешними системами часто реализуется через импорт и экспорт CSV и XML. Точный набор форматов определяется тем, что реально поддерживают системы ваших дилеров, а не тем, что удобно разработчику.
Ответственные и частота обновления
Нужно назвать человека, который отвечает за актуальность цен, и человека, который отвечает за настройку выгрузки. Это разные роли. Первый следит за тем, чтобы цены в источнике были верными, второй — за тем, чтобы они доходили до партнёров. Без явного ответственного прайс-лист быстро расходится с реальностью.
Матрица экспорта прайсов: как описать правила выгрузки
Матрица экспорта — это рабочий документ, который превращает разговоры в конкретные правила. Каждая строка матрицы — это один сценарий выгрузки: кому, что и в каком виде отдаём. Пока матрица не заполнена, настройка превращается в угадывание.
| Сценарий | Кому доступен | Какие цены попадают | Формат | Частота обновления | Ответственный |
|---|---|---|---|---|---|
| Базовая дилерская выгрузка | Все активные дилеры | Дилерская колонка | Таблица | По регламенту | Менеджер по ценам |
| Выгрузка для крупных партнёров | Дилеры со статусом выше базового | Отдельная колонка | Таблица и обменный файл | По регламенту | Менеджер по ценам |
| Выгрузка по региону | Дилеры конкретного региона | Региональная колонка | Таблица | По регламенту | Региональный менеджер |
| Полный прайс для внутреннего пользователя | Сотрудники | Все колонки | Таблица | По регламенту | Руководитель отдела |
| Пробная выгрузка для нового партнёра | Кандидат в дилеры | Ограниченный набор позиций | Таблица | Разово | Менеджер по партнёрам |
Столбцы матрицы стоит читать так. «Сценарий» — понятное название, по которому вы потом будете искать настройку. «Кому доступен» — группа пользователей или статус. «Какие цены попадают» — конкретная колонка, а не «цены вообще». «Формат» — то, что реально откроется у партнёра. «Частота обновления» — не «постоянно», а привязанная к событию или расписанию. «Ответственный» — человек, а не отдел.
Матрица полезна ещё и тем, что обнажает конфликты. Например, если два сценария претендуют на одну и ту же колонку, но с разными форматами, это повод уточнить условия, а не настраивать оба наугад. А если у сценария нет ответственного, значит, за него никто не отвечает, и он рано или поздно сломается.
Как формируется прайс-лист по условиям конкретного клиента
«По условиям клиента» — не значит «уникальная разработка под каждого». Это значит, что набор правил собирается из заранее описанных блоков: ценовая колонка, набор полей, формат, способ доставки. Задача — чтобы комбинация блоков давала нужный партнёру результат.
Что именно варьируется
Варьироваться может немногое, и это хорошо. Ценовая колонка — раз. Набор полей в выгрузке — два: кому-то нужен артикул и цена, кому-то ещё остаток и кратность упаковки. Формат — три. Способ получения — четыре: скачивание из личного кабинета, файл по ссылке, обмен с учётной системой партнёра. Всё остальное — общее для всех.
Такой подход удобен тем, что новый партнёр не требует новой разработки. Он получает комбинацию уже существующих блоков, а вы — предсказуемый результат.
Как связать статус дилера и ценовую колонку
Связка «статус — колонка» должна быть однозначной. Если у партнёра статус меняется, меняется и доступная ему колонка, причём без ручного вмешательства. В системах, где есть группы пользователей и типы цен с правами доступа, это настраивается штатно: цена привязывается к группе, а партнёр попадает в группу по своему статусу.
Полезный приём, который встречается в описаниях дилерских решений: партнёру можно показать все ценовые колонки, но разрешить покупку только по той, на которую у него есть права. Это даёт дилеру понимание, к чему он может стремиться, и одновременно не даёт купить по чужой цене. Решение о таком показе — вопрос политики компании, а не техники.
Актуальность и права скачивания
Два свойства, которые чаще всего ломают доверие к прайс-листу: устаревшие цены и лишние права.
Права на просмотр и на покупку
Просмотр и покупка — разные права. Дилер может видеть несколько колонок, но оформлять заказ только по своей. Это снижает риск ошибок и споров. Права стоит проверять не только на уровне интерфейса, но и на уровне выгрузки: если партнёр скачивает файл, в файле не должно быть колонок, на которые у него нет прав. Скрытая на странице колонка, которая утекает в файл, — это та же утечка, только незаметнее.
Актуальность и версии
У прайс-листа должна быть понятная дата актуальности. Партнёр должен видеть, на какой момент цены верны, и понимать, когда ждать следующего обновления. Если цены меняются часто, стоит подумать о версионировании: старая версия не удаляется мгновенно, а помечается как неактуальная. Это помогает разбирать спорные заказы.
Отдельно решите, что происходит при расхождении. Если дилер оформил заказ по старой цене, а цена уже изменилась, нужен понятный регламент: до какого момента действует прежняя цена и кто принимает решение. Это организационный вопрос, и его лучше закрыть до запуска, а не после первой жалобы.
Учебный пример: прайс-лист для дилеров на сайте для условной компании
Данные ниже условные и приведены только для разбора логики.
Входные условия. Компания продаёт оборудование через дилерскую сеть. Есть три ценовые колонки: розничная, базовая дилерская и партнёрская для крупных дилеров. Дилеры делятся на два статуса. Часть партнёров просит выгрузку в виде таблицы, часть — обменный файл для своей учётной системы. Цены обновляются по регламенту, ответственный — менеджер по ценам.
Шаги.
1. Заполняем матрицу экспорта: три сценария для дилеров плюс один внутренний. 2. Связываем статусы с ценовыми колонками: базовый статус — базовая колонка, крупный дилер — партнёрская. 3. Настраиваем права: дилер видит свою колонку как рабочую, покупка — только по ней. 4. Определяем форматы: таблица для одной группы партнёров, обменный файл для другой. 5. Назначаем ответственного за актуальность и фиксируем дату актуальности в выгрузке.
Проверка. Заходим под тестовым пользователем каждого статуса и смотрим: видит ли он свою колонку, скрыта ли чужая, скачивается ли файл в нужном формате, совпадает ли дата актуальности с регламентом. Затем проверяем, что при смене статуса меняется доступная колонка. И отдельно — что в скачанном файле нет лишних колонок.
Наблюдаемый результат. Каждый партнёр получает свою цену в своём формате, лишние колонки не утекают, у прайс-листа есть понятная дата. Если что-то из этого не выполняется, проблема локализуется в конкретном шаге, а не «где-то в настройках».
Как проверить результат и принять работу
Проверка — это не «посмотреть, что красиво». Это набор конкретных действий под разными ролями.
- Заполнена матрица экспорта, у каждого сценария есть ответственный.
- Для каждого статуса дилера определена ровно одна рабочая ценовая колонка.
- Тестовый пользователь каждого статуса видит только положенные ему колонки.
- Покупка доступна только по разрешённой колонке.
- Выгрузка формируется в согласованном формате и открывается у партнёра.
- В скачанном файле нет колонок, на которые у пользователя нет прав.
- В прайс-листе видна дата актуальности.
- Смена статуса дилера меняет доступную колонку без ручных правок.
- Определён регламент на случай расхождения цены в момент заказа.
- Назначены ответственные за актуальность цен и за настройку выгрузки.
Если по какому-то пункту нет однозначного ответа, работу принимать рано. Отдельно стоит проверить, как ведёт себя прайс-лист при обновлении каталога: не появляются ли в выгрузке позиции без цены и не пропадают ли нужные. Такой разбор удобно делать в рамках аудит интернет-магазина — что проверяют и что будет в отчёте, если речь идёт о действующем проекте.
Типичные ошибки и ограничения
Ошибки в этой задаче повторяются, и почти все они организационные, а не технические.
- Одна колонка на всех. Когда дилерская цена одна, а статусы разные, партнёры начинают договариваться в обход сайта.
- Права только в интерфейсе. Колонка скрыта на странице, но попадает в файл выгрузки. Это утечка.
- Нет даты актуальности. Партнёр не понимает, свежий ли у него файл, и перестаёт доверять прайсу.
- Формат «как удобно нам». Если файл не открывается у дилера, он вернётся к своей таблице.
- Нет ответственного. Цены в источнике и на сайте расходятся, и никто не замечает.
- Ручная смена колонок. Пока статус и колонка связаны вручную, рано или поздно кто-то получит чужую цену.
Ограничения тоже стоит назвать честно. Прайс-лист не решает вопрос договорных условий и не заменяет юридическую работу. Он не гарантирует, что партнёр не передаст файл дальше, — от этого защищают договор и регламент, а не настройка. И он не отменяет ручную сверку в спорных случаях: автоматизация снижает рутину, но не убирает ответственность за цены.
Какие исходные данные подготовить для оценки
Чтобы оценить работу, подрядчику нужен не «сайт с прайсом», а конкретика. Подготовьте:
- список ценовых колонок и их назначение;
- список статусов дилеров и правила перехода между ними;
- какие поля должны попадать в выгрузку;
- в каких форматах партнёры готовы принимать файлы;
- как часто меняются цены и кто за это отвечает;
- откуда берутся цены: учётная система, таблица, справочник;
- сколько партнёров и как они распределены по статусам;
- нужен ли обмен с учётными системами партнёров или достаточно скачивания.
Чем точнее этот список, тем меньше сюрпризов в процессе. Общая логика стоимости такой работы — в материале про то, Сколько стоит разработка интернет-магазина: из чего складывается цена; прайс-лист для дилеров оценивается по тем же принципам: объём правил, число сценариев, интеграции.
Чем прайс-лист для дилеров отличается от обычного прайса на сайте?
Обычный прайс показывает одну цену всем. Дилерский строится на нескольких ценовых колонках и правах доступа: каждый партнёр видит свою цену, а покупка доступна только по разрешённой колонке.
Можно ли показать дилеру несколько ценовых колонок?
Да, это вопрос политики компании. Часто партнёру показывают несколько колонок, но покупать разрешают только по его. Такой подход встречается в описаниях дилерских решений и помогает мотивировать рост в сети.
Как часто нужно обновлять прайс-лист?
Частота определяется регламентом компании, а не техникой. Важно, чтобы у прайса была видимая дата актуальности и назначенный ответственный за обновление цен.
Что делать, если дилер оформил заказ по старой цене?
Нужен заранее описанный регламент: до какого момента действует прежняя цена и кто принимает решение. Это организационный вопрос, его стоит закрыть до запуска.
Нужен ли обменный файл, если дилер готов скачивать таблицу?
Не обязательно. Формат выбирается по тому, что реально поддерживают системы партнёров. Если таблицы достаточно, обменный файл — лишняя сложность.
Заменяет ли прайс-лист договор с дилером?
Нет. Прайс-лист отражает уже согласованные условия, но не определяет их. Юридические условия сотрудничества фиксируются в договоре и внутренних регламентах.