Когда ко мне приходит запрос на b2b веб-сервис, первым делом уточняю не дизайн и не список фич, а кто конкретно будет с ним работать: менеджер по закупкам на стороне контрагента, бухгалтер, кладовщик или директор, который заходит раз в месяц посмотреть сводный отчёт. От этого зависит вся архитектура - модель доступа, набор ролей, интеграции с учётными системами заказчика. Сайт для частных покупателей продаёт эмоцией и кнопкой «купить сейчас», корпоративный сервис работает по другим правилам, и если их не заложить на старте, проект переписывают через полгода после запуска.
Чем корпоративный веб-сервис отличается от сайта для конечных покупателей
На обычном интернет-магазине посетитель сам принимает решение за минуту, платит картой и уходит. В b2b-сегменте решение почти всегда коллегиальное: заявку смотрит закупщик, согласовывает руководитель отдела, оплату проводит бухгалтерия по счёту, а не через эквайринг. Сама сделка растягивается на недели, иногда месяцы, и сервис должен фиксировать каждый шаг - кто одобрил, кто изменил цену, на каком этапе завис договор.
Публичности как таковой тоже нет: доступ выдаётся конкретным сотрудникам конкретных компаний, а не всем желающим. Из-за этого меняется и подход к нагрузке - вместо тысяч анонимных сессий в пик распродаж речь идёт о сотнях именованных пользователей, зато с высокими требованиями к стабильности и точности данных.
| Параметр | B2C-сайт | B2B веб-сервис |
|---|---|---|
| Кто принимает решение | Один человек, сразу | Несколько сотрудников, с согласованием |
| Оплата | Карта, эквайринг | Счёт, отсрочка платежа, ЭДО |
| Доступ | Публичная регистрация | Выдаётся вручную, роли и права |
| Интеграции | Логистика, платёжка | 1С, CRM, ЭДО, внутренние системы клиента |
| Цикл сделки | Минуты | Недели-месяцы |
Архитектура B2B-платформы: что закладываю на старте
Первый вопрос - обслуживает сервис одну компанию или сразу нескольких контрагентов через личные кабинеты. Во втором случае без мультиарендности не обойтись: у каждого контрагента свои цены, свои договорные условия, своя видимость остатков, и всё это нужно развести на уровне базы данных и прав доступа ещё до того, как нарисован первый экран.
Для фронтенда чаще беру React - админки и личные кабинеты с таблицами, фильтрами, массовыми действиями на нём собираются быстрее и держат сложную логику состояния лучше, чем плоский HTML. Бэкенд обычно на Laravel: там из коробки есть очереди, миграции, встроенная авторизация - то, что для корпоративного сервиса нужно сразу, а не «когда-нибудь потом». Разработка такого веб-сервиса у меня стартует от 150 000 ₽, а отдельная CRM-панель на React для отдела продаж - от 100 000 ₽ сверху, если её выносят в отдельный модуль.
Ещё на старте закладываю разделение окружений: тестовый контур для приёмки заказчиком, боевой - только после подписания акта. У корпоративных клиентов почти всегда есть свой ИТ-отдел или служба безопасности, которая проверяет сервис перед подключением, и переделывать архитектуру под их требования постфактум выходит дороже, чем учесть их сразу.
Бесплатный материал
🎁 Полезный скрипт в подарок
Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.
Без спама. Отписка в 1 клик.
Интеграции с 1С, CRM и корпоративными системами
Большая часть времени в b2b-проектах уходит не на интерфейс, а на стыковку с тем, что у клиента уже работает. Чаще всего это 1С - либо через веб-сервисы на OData, либо через выгрузку файлами обмена по расписанию. Первый вариант быстрее и надёжнее, но требует, чтобы 1С была правильно настроена на стороне клиента; второй - универсальнее, но с задержкой синхронизации в час-два.
Пример из практики: для дистрибьютора стройматериалов делал синхронизацию остатков и цен между 1С:Управление торговлей и веб-сервисом заказов - обмен раз в 15 минут через OData, с логированием каждой операции для бухгалтерии. Отдельно подключал ЭДО через Диадок, чтобы счета и накладные подписывались электронно без бумажной волокиты, и СДЭК API для расчёта доставки по регионам прямо в форме заказа.
Если задача - простой скрипт обмена данными между двумя системами по расписанию, это укладывается в автоматизацию на n8n от 25 000 ₽, я в таких случаях собираю сценарий, который следит за очередью заказов и подтягивает статусы. Если нужен полноценный бэкенд с бизнес-логикой поверх 1С и CRM - это уже стоимость API-разработки на Laravel, от 100 000 ₽. Часть таких сценариев обмена у меня уже отработана на прошлых проектах - готовые сценарии интеграции с 1С и CRM смотрите в библиотеке, это экономит время на старте.
Для уведомлений менеджеров о новых заявках или зависших согласованиях обычно ставлю Telegram-бота на aiogram - он дешевле и быстрее email-рассылок, а сотрудники реагируют на него в разы оперативнее.
// пример middleware с проверкой роли перед доступом к разделу закупок
function requireRole(role) {
return (req, res, next) => {
if (!req.user || !req.user.roles.includes(role)) {
return res.status(403).json({ error: 'Недостаточно прав' });
}
next();
};
}
app.get('/api/purchase-orders', requireRole('procurement_manager'), listOrders);
Роли, доступы и безопасность корпоративных данных
В корпоративном сервисе права доступа - не галочка в настройках, а часть бизнес-логики. Закупщик видит цены только своей компании, руководитель - сводку по всем сотрудникам компании, бухгалтер - только документы, без карточек товаров. Каждое такое разграничение прописывается на уровне API, а не скрывается кнопкой на фронтенде - иначе через консоль браузера можно получить данные, которые видеть не должен.
Отдельно веду журнал действий: кто зашёл, что изменил, какую заявку одобрил. Для многих корпоративных клиентов это не пожелание, а требование службы безопасности при подключении подрядчика. Контакты и данные сотрудников контрагентов храню на серверах в РФ - того требует 152-ФЗ о локализации персональных данных, и никакие Google Sheets или Airtable для таких задач не подходят в принципе, даже если это удобнее для черновой выгрузки.
Для входа в такие сервисы ставлю двухфакторную аутентификацию хотя бы для ролей с доступом к финансам, и ограничиваю время жизни сессии - 8-12 часов вместо стандартного месяца, как в b2c.
Долгий цикл сделки: как это влияет на функциональность
Поскольку решение по сделке принимает не один человек, сервису нужны версии коммерческих предложений: изменил менеджер условия - старая версия не потерялась, а осталась в истории с датой и автором правки. То же самое с договорами - печатная форма счёта или спецификации формируется автоматически из данных заказа, а не собирается вручную в Word каждый раз.
Цепочки согласования - это отдельный слой логики: заявка на сумму до 100 000 ₽ утверждает один сотрудник, выше - уже два, с уведомлением в Telegram каждому на своём этапе. Без этого закупщики звонят и спрашивают «а что с моей заявкой», а менеджер тратит время на ответы вместо работы. У меня в паре проектов такие цепочки собирались через n8n поверх готового бэкенда - дешевле, чем зашивать их в код и потом переписывать при каждом изменении регламента.
Поддержка и SLA после запуска
Корпоративный клиент ожидает не «напишем, если что», а конкретные сроки реакции: критичная ошибка - в течение нескольких часов, некритичная - в течение суток. Это прописывается в договоре отдельным пунктом с указанием часов и каналов связи, а не остаётся на словах.
Техподдержка у меня отдельная платная услуга, от 15 000 ₽/мес - в неё входит мониторинг, приоритетные фиксы и работа над мелкими доработками без отдельного техзадания на каждую мелочь. Для сервисов с интеграциями это особенно важно: у контрагента может обновиться версия 1С или поменяться формат выгрузки СДЭК, и без сопровождения такие вещи всплывают в самый неподходящий момент.
Когда нужен не сайт, а сервис
SaaS / SPA
от 300 000 ₽
Подробнее →Частые вопросы
Сколько стоит разработка b2b веб-сервиса?
Базовая разработка веб-сервиса у меня стартует от 150 000 ₽ - это личный кабинет с ролями, авторизацией и одной-двумя интеграциями. Если нужна отдельная CRM-панель на React, закладывайте ещё от 100 000 ₽, а сложные интеграции с 1С или ЭДО считаются отдельно в зависимости от того, что уже есть у заказчика.
Сколько времени занимает разработка корпоративного веб-сервиса?
На практике от 2 до 5 месяцев в зависимости от числа интеграций и глубины согласовательной логики. Личный кабинет с одной интеграцией собирается быстрее, а сервис с мультиарендностью, ЭДО и цепочками согласований требует больше времени на тестирование прав доступа.
Обязательно ли интегрироваться с 1С?
Нет, если у заказчика учёт ведётся в другой системе или вручную. Но если 1С уже используется для остатков, цен и документооборота, без синхронизации сервис быстро расходится с реальными данными, и пользователи перестают ему доверять.
Чем b2b веб-сервис отличается от обычной CRM?
CRM - инструмент для внутренней команды продаж, а b2b веб-сервис часто дают внешним пользователям - сотрудникам компаний-партнёров. Это меняет требования к безопасности и разграничению данных между разными контрагентами: в CRM все видят всех клиентов, а в b2b-сервисе контрагент должен видеть только свои данные и ничьи больше.