Вебформат

Главная/Блог/Сайты и e-commerce

Сайты и e-commerce13 июля 202610 мин

Оптовик подключается сам: ИНН вместо анкеты, тариф вместо переговоров

Новый дилер вводит ИНН - и сайт сам узнаёт его компанию среди более чем 11 тысяч контрагентов из 1С, вычисляет тариф и открывает нужные ценовые колонки. Человек в процессе один: модератор проверяет документы и ставит одну отметку - она заполняет 14 полей профиля. Разбор, как устроено подключение оптовика без анкет и переговоров.

ИНН вместо анкеты - тариф из 1С
ИНН вместо анкеты - тариф из 1С

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

Почему подключение нельзя оставить оператору

Цена ошибки несимметрична.

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

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

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

Решение

Клиент вводит ИНН - сайт узнаёт компанию

Клиент вводит ИНН - и сайт узнаёт его компанию. Дальше всё происходит без человека.

Один реквизит - и клиент узнан: путь от ИНН до цены
Форма регистрации
Снабженец вводит ИНН, КПП и контакты - больше о компании не спрашивают ничего
поиск по ИНН
Справочник контрагентов
Более 11 тысяч записей - весь справочник приходит выгрузкой из 1С
найдено юридическое лицо - одно из шести лиц этой компании
Компания-владелец
Все шесть юридических лиц дилера принадлежат ей
Тариф закреплён здесь - за компанией целиком
свойство "Тип клиента"
Тип клиента: дилерский
Одна из 11 дилерских ступеней; значение пришло из 1С вместе с самой компанией
ценовая матрица открывает колонки: 741 правило
Цена этого покупателя
Подкатной домкрат: розничная цена около 10 250 ₽, для этого снабженца - около 7 700 ₽
≈7 700 ₽
Тариф закреплён за компанией, а не за юридическим лицом: какой из шести ИНН ни введёт сотрудник - он приземлится на один и тот же дилерский тариф. Оператор в этой цепочке не участвует: все звенья приходят из 1С.

Вот путь снабженца этого дилера. Он указал ИНН одного из шести юридических лиц своей компании. Сайт нашёл это юридическое лицо в справочнике из более чем 11 тысяч контрагентов, поднялся от него к компании-владельцу, взял её тариф и открыл соответствующие ценовые колонки. Подкатной домкрат, который розничный покупатель видит примерно за 10 250 ₽, для этого снабженца стоит около 7 700 ₽.

Ключевое здесь - где именно закреплён тариф. Он привязан не к юридическому лицу, а к компании целиком. Поэтому какой из шести ИНН ни введи - результат один и тот же. Скидка отражает отношения с компанией, а не отдельную строку в реестре юридических лиц, и система устроена именно так.

Форма, которая не спрашивает лишнего

У формы две вкладки. Юридическое лицо вводит ИНН и КПП, предприниматель - только ИНН: сайт проверяет прямо при вводе, что "ИНН индивидуального предпринимателя состоит из 12 цифр". Реквизиты компании, банковские счета, юридический адрес - ничего этого не спрашивают: всё уже есть в справочнике.

Узнавание происходит незаметно. Клиент нажимает "Зарегистрироваться", и в этот момент сайт находит его компанию среди тысяч записей. Ни выпадающих списков, ни уточняющего вопроса "ваша ли это компания?" - клиент даже не догадывается, что его узнали.

Справочник, в котором идёт поиск, целиком приходит из 1С: более 11 тысяч контрагентов, из них 6 210 - компании и предприниматели. На сайте его никто не ведёт: появился в учётной системе новый клиент - через несколько секунд он есть и на сайте.

Тонкость, которую клиент не видит: предприниматель в 1С заведён как контрагент-физическое лицо, а не как организация. Поэтому вкладка "Индивидуальный предприниматель" ищет его среди физических лиц, а вкладка "Юридическое лицо" - среди организаций. Разницу учётной системы приняла на себя форма, а не человек.

Тариф вычисляется, а не назначается

Тип клиента - это то, что превращает витрину в персональную. Он определяет, какие ценовые колонки открыты покупателю, а значит - какую цену тот видит в каталоге, по какой цене фильтрует и сортирует, что попадает в его корзину и счёт.

Один и тот же товар стоит по-разному для пяти разных типов клиента. Розничный покупатель платит за подкатной домкрат около 10 250 ₽, постоянный - на 5-12% меньше, оптовый клиент - примерно на 15%, дилер - примерно на четверть. Разница между крайними значениями - около 2 550 ₽ на каждой единице, и умножается она на объём дилерской закупки.

Всего типов клиента 19, из них 11 - дилерские ступени. Ни один из них не заводится на сайте руками: справочник повторяет учётную систему, и новый тип, появившийся в 1С, возникает на сайте сам и сам подключается к ценовой матрице. Матрица - это 741 правило: 19 типов клиента на 13 категорий товара. Подробно ценовая механика разобрана в разборе персональных цен.

Сама же цепочка "юридическое лицо - компания - тариф" не рвётся ни разу: компания-владелец заполнена у всех контрагентов справочника. Это значит, что тариф вычислим для любого клиента базы - в том числе для того, кто ещё ни разу не заходил на сайт. Он не назначается при регистрации, он к этому моменту уже существует.

Одна отметка - четырнадцать полей

Быстро - не значит без контроля. Между регистрацией и дилерскими ценами стоит человек, но его работа сведена к одному вопросу: настоящая ли это компания и тот ли человек её представляет.

Одна отметка модератора - четырнадцать заполненных полей
Регистрация: занимает минуту
Снабженец вводит ИНН и контакты
Сайт находит компанию, создаёт заявку на подключение и сразу вычисляет тариф
письмо "Заявка на модерацию" со ссылкой "Открыть заявку"
Модератор
Проверяет документы и ставит одну отметку: настоящая ли компания и тот ли человек её представляет
решение применяется само
Профиль покупателя
14 полей заполняются без ручного ввода: контрагент, тип клиента, реквизиты, права на просмотр заказов коллег
Заказы последних дней
Дооформляются на юридическое лицо - заказы "от физического лица" не остаются
последнее слово - за учётной системой
Тариф пересчитан заново
Тип клиента из формы перекрывается расчётом по цепочке из 1С - выдать тариф вручную не может даже модератор
Заявка - обычный элемент списка в административной панели: отдельного интерфейса модерации нет, а решение принимается одной отметкой. Всё остальное - следствие: четырнадцать полей профиля заполняются без единого ручного ввода.

Заявка на подключение создаётся сама в момент регистрации - с уже подобранным контрагентом, уже вычисленным тарифом и приложенными документами. Модератор получает письмо "Заявка на модерацию" со ссылкой "Открыть заявку", проверяет документы и ставит одну отметку.

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

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

До одобрения дилерских цен не существует

Пока заявка не одобрена, сотрудник дилерской компании ходит по сайту как обычный розничный посетитель: каталог открыт целиком, карточки, характеристики и наличие - на месте, но цены розничные, а кнопка оформления заказа не работает. В корзине он видит объяснение: "Ваш аккаунт в данный момент проходит процедуру подтверждения. Дождитесь окончания этой процедуры, чтобы продолжить оформление заказа".

Было

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

Стало

После отметки модератора: тот же товар, та же страница, тот же вход. Изменился только тип клиента в профиле - и вся витрина пересчиталась: каталог, фильтры по цене, корзина, счёт.

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

Тот же принцип держит и оформление заказа: попытка отправить заказ в обход формы упирается в проверку на стороне сервера: "Оформление заказа недоступно. Обратитесь к администратору". Витрина, кнопка и сервер проверяют одно и то же независимо друг от друга.

Условия меняются в 1С - новый тариф получает вся команда

Тариф приходит к клиенту не только в момент регистрации.

Смена условий в 1С доезжает до каждого сотрудника клиента
1С:ERP
Коммерческий отдел переводит компанию на новые условия - меняет ей тариф
Выгрузка уходит на сайт: очередь проверяется каждые ~10 секунд
сайт замечает смену тарифа у компании
Все юридические лица компании
У регионального дилера их шесть: два общества и четыре предпринимателя
по юридическим лицам - к людям
Все сотрудники с учётными записями
Тип клиента обновляется каждому одним проходом
при следующем открытии каталога
Команда снабжения видит новые цены
Каталог, фильтры по цене, корзина, счёт
Обратная волна: тариф приходит не только "к клиенту при регистрации", но и "от 1С ко всем, кого он касается". Менеджеру не нужно помнить, сколько у дилера юридических лиц и на какие из них оформлены сотрудники.

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

Свежесть здесь измеряется секундами: очередь выгрузок из 1С сайт проверяет каждые ~10 секунд.


Как это устроено внутри

Общая картина - на схеме: тариф нигде не хранится "у пользователя", он вычисляется цепочкой справочников, каждый из которых приходит из 1С.

Устройство подключения: тариф вычисляется цепочкой справочников
1С:ERP
Источник истины: контрагенты, компании, типы клиента - всё приходит выгрузками
выгрузки; новые типы клиента создаются сами
Справочник контрагентов
Юридические лица с реквизитами: ИНН, КПП, банк
Справочник компаний
Тариф закреплён здесь, а не на юридическом лице
Типы клиента
19 сегментов: розница, опт, 11 дилерских ступеней
поиск по ИНН и расчёт по цепочке
Служба подключения
Создаёт заявку, переносит решение модератора в 14 полей профиля
Пересчитывает тариф заново - поверх ручного ввода
тип клиента и отметка о подключении
Профиль покупателя
Два поля решают всё: по какой цене показывать каталог и можно ли оформлять заказ
Тариф нигде не вводится руками: он вычисляется цепочкой из трёх справочников, каждый из которых приходит из 1С. Профиль покупателя хранит результат расчёта, а решение модератора отвечает лишь на вопрос "это настоящая компания?".
РешениеКак сделано
Подбор компанииПоиск по ИНН среди более чем 11 тысяч контрагентов прямым запросом к справочнику, в момент отправки формы. Вкладка предпринимателя ищет среди контрагентов-физических лиц: так предприниматель заведён в 1С
Расчёт тарифаЦепочка из трёх справочников: юридическое лицо → компания-владелец → тип клиента. Тариф - свойство компании, поэтому все её юридические лица получают один тип
Заявка на подключениеОбычный элемент списка в панели управления: реквизиты, документы, отметка о решении. Отдельного интерфейса модерации нет - модератор работает в штатной административной панели
Перенос решенияСохранение элемента списка запускает перенос 14 полей в профиль покупателя: контрагент, тип клиента, реквизиты, права на просмотр заказов коллег и оформление на другие юридические лица
Приоритет расчётаПосле переноса полей тип клиента пересчитывается по цепочке заново и перекрывает значение из формы; свойство самой заявки при этом тоже приводится к расчётному
Права доступаДва поля профиля: отметка о подключении (можно ли оформлять заказ) и тип клиента (по какой цене). Группы пользователей платформы не участвуют
Розничная видимостьНе отдельная ветка и не отдельный шаблон: у неодобренного покупателя личный тип клиента просто не запрашивается, вместо него подставляется розничный
Обратная волнаСмена тарифа компании в 1С перехватывается на сохранении справочника: обратным обходом находятся все её юридические лица и все их пользователи, тип обновляется каждому
Новые типы клиентаСоздаются обработчиком обмена сами: тип, появившийся в 1С, возникает в справочнике сайта и подключается к ценовой матрице без участия разработчика
Дооформление заказовПри одобрении заказы последних дней получают привязку к юридическому лицу и идентификатор компании из 1С, после чего помечаются к передаче в учётную систему

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

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

Что это дало бизнесу

РаньшеСтало
Реквизиты нового клиента диктовались по телефону и вводились рукамиКлиент вводит один ИНН - компания узнаётся в справочнике из 1С
Оператор искал компанию в 1С и назначал тариф вручнуюТариф вычисляется цепочкой "юридическое лицо - компания - тип клиента": назначать нечего
Ошибку в тарифе первым находил клиентРасчёт перекрывает ручной ввод даже у модератора; последнее слово всегда за 1С
Смена условий дилера - обход всех его сотрудников вручнуюУсловия меняются в 1С - новый тариф получает вся команда клиента одним проходом
Закрытые цены берегла внимательность оператораДо одобрения дилерских цен не существует: их не прячут - их не рассчитывают
Подключение занимало дниПодключение занимает минуту и одну отметку модератора

В цифрах

ПоказательЗначение
Контрагентов в справочнике сайтаболее 11 тысяч - весь справочник приходит выгрузкой из 1С
Из них компаний и предпринимателей6 210 - их и находит поиск по ИНН
Типов клиента19, из них 11 - дилерские ступени
Правил ценовой матрицы741 - 19 типов клиента на 13 категорий товара
Полей профиля, заполняемых одной отметкой модератора14
Контрагентов со связью "юридическое лицо - компания"100% - тариф вычислим для любого клиента базы
Подхват выгрузок из 1Сочередь проверяется каждые ~10 секунд
Разброс цены одного товара по типам клиентапримерно от 7 700 до 10 250 ₽ (пример из рабочего каталога)

Подключение оптовиков - часть большой B2B-платформы: каталог, дилерский кабинет и двусторонний обмен с 1С. Что вошло в проект целиком - в кейсе B2B e-commerce платформы.

Хотите, чтобы оптовики подключались сами?

Расскажите, как у вас устроено подключение новых клиентов: кто назначает условия и где они хранятся. Покажем на живом проекте, как регистрация по ИНН снимает эту работу с менеджеров.