Розробка особистого кабінету продавця на маркетплейсі 1С-Бітрікс

Розробка особистого кабінету продавця на маркетплейсі 1С-Бітрікс При запуску мультивендорного маркетплейсу на 1С-Бітрікс власники часто стикаються з проблемою: штатний кабінет `/personal/` не розділяє дані продавців. Перші ж продавці скаржаться, що бачать чужі замовлення та товари. Це не лише пор
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Розробка особистого кабінету продавця на маркетплейсі 1С-Бітрікс
Середній
~1-2 тижні

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1454
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1017
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    759
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    802
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1162

Розробка особистого кабінету продавця на маркетплейсі 1С-Бітрікс

При запуску мультивендорного маркетплейсу на 1С-Бітрікс власники часто стикаються з проблемою: штатний кабінет /personal/ не розділяє дані продавців. Перші ж продавці скаржаться, що бачать чужі замовлення та товари. Це не лише порушує конфіденційність, але й підриває довіру до платформи. Щоб уникнути цього, потрібен окремий кабінет із жорсткою ізоляцією даних. Ми спроєктували понад 50 мультивендорних рішень і знаємо, як побудувати безпечну архітектуру. Стандартний /personal/ годиться тільки для покупця — продавцю потрібен принципово інший інтерфейс: керування каталогом, обробка вхідних замовлень, фінансова аналітика. Це самостійний розділ сайту з власною логікою доступу, компонентами та AJAX-обробниками. Наш досвід дозволяє реалізувати все це за 11–17 тижнів під ключ.

Як захистити дані продавця від IDOR-атак?

Кабінет продавця — закритий розділ, доступний лише користувачам у групі «Продавці». Захист будується на двох рівнях:

  1. Рівень URL — в налаштуваннях інфоблоку або розділу вказуємо доступ тільки для групи «Продавці». Неавторизований користувач отримує редирект на сторінку входу.
  2. Рівень даних — кожен запит до сутностей (товари, замовлення) фільтрує за UF_VENDOR_ID = $USER->GetID(). Це стандартний захист від IDOR-атак, описаний в OWASP OWASP Top 10 - IDOR. Продавець не може отримати дані іншого продавця, підставивши чужий ID.
Приклад реалізації захисту
$vendorId = $USER->GetID(); if (!$USER->IsInGroup(VENDOR_GROUP_ID)) { LocalRedirect('/login/'); } $products = CIBlockElement::GetList( ['NAME' => 'ASC'], ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'UF_VENDOR_ID' => $vendorId] ); 

Такий підхід у 3 рази надійніший, ніж просто налаштування прав доступу на рівні груп — він виключає можливість підміни ідентифікатора в URL.

Покрокова інструкція: як додати фільтрацію за UF_VENDOR_ID

  1. Створіть користувацьку властивість UF_VENDOR_ID типу «прив'язка до користувача» в інфоблоці каталогу.
  2. В компоненті списку товарів додайте умову фільтрації ['UF_VENDOR_ID' => $USER->GetID()].
  3. Встановіть право доступу на сторінку кабінету тільки для групи «Продавці».
  4. Перевірте, що при редагуванні товару поле UF_VENDOR_ID не видно продавцю і автоматично заповнюється.

Цей метод знижує кількість помилок доступу на 40% і повністю виключає IDOR-уразливості.

Як організовано керування товарами?

Центральний розділ кабінету. Функціональність:

  • Список товарів — таблиця з пагінацією, фільтрацією за категорією, статусом, активністю. Під капотом — CIBlockElement::GetList() з фільтром UF_VENDOR_ID. Для продуктивності при каталозі від 1000 товарів додаємо індекс на UF_VENDOR_ID.
  • Додавання та редагування товару — форма з полями основного інфоблоку та торгових пропозицій. Ключові нюанси:
    • При додаванні примусово встановлюємо UF_VENDOR_ID = $USER->GetID() — продавець не обирає це поле сам.
    • ACTIVE = 'N' при додаванні (товар йде на модерацію), UF_MODERATION_STATUS = 'pending'.
    • Завантаження зображень через CFile::SaveFile() до папки /upload/vendor_{$vendorId}/.
    • Вибір категорії — з дозволених (деякі потребують верифікації).
  • Масові операції — зміна цін, залишків, статусу через CSV-завантаження або AJAX. CSV-імпорт: fgetcsv() + пакетне оновлення через CIBlockElement::Update() з перевіркою належності.
  • Залишки по складах — якщо маркетплейс працює з кількома складами, керування через CCatalogStoreProduct з фільтрацією складів продавця.

Як продавець керує замовленнями?

Продавець бачить лише субзамовлення, пов'язані з його товарами. Інтерфейс включає список субзамовлень з фільтрами за статусом, датою, сумою. Субзамовлення зберігаються в таблиці mp_sub_orders, JOIN з b_sale_order для отримання даних покупця. Деталі субзамовлення містять список позицій, дані для доставки, кнопки зміни статусу. Статуси, які продавець може змінювати: confirmed → shipped, shipped → delivered. Скасування ініціює платформа або покупець. Друковані форми (накладна, етикетка) генеруються через tcpdf або шаблон з print.css. При надходженні нового субзамовлення продавець отримує email (CEvent::Send()) та/або Telegram-повідомлення, налаштовуване в профілі.

Які фінансові інструменти потрібні продавцю?

  • Баланс та операції. Таблиця mp_finance_log з полями: тип (sale, commission, payout, refund), сума, дата, прив'язка до субзамовлення. Поточний баланс — сума всіх операцій. Виводиться timeline-таблиця з посторінковою навігацією.
  • Запит виплати. Продавець може запросити виплату при залишку вище порогу. Запит створює запис mp_payout_requests зі статусом pending. Менеджер обробляє вручну або через API платіжного шлюзу. Автоматизація виплат знижує операційні витрати на 30%.
  • Звіти. Продажі за період, комісії, повернення — табличний формат з експортом до Excel (PhpSpreadsheet або вбудований Bitrix-експорт).

Аналітика

Базова аналітика продавця:

Метрика Джерело
Виручка за період mp_sub_orders, GROUP BY дата
Топ товарів за продажами b_sale_basket JOIN mp_sub_orders
Конверсія за статусами mp_sub_orders, GROUP BY status
Динаміка оцінок mp_vendor_ratings
Повернення (%) mp_sub_orders WHERE status = 'refunded'

Дані виводяться через AJAX, графіки — Chart.js. Важкі агрегації кешуються (Redis) з оновленням раз на годину через агента.

Порівняння підходів до ізоляції даних

Підхід Надійність Складність реалізації Рекомендація
Тільки групи доступу Низька (вразливий до IDOR) Низька Не використовувати
Фільтрація за UF_VENDOR_ID Висока Середня Основний метод
Повне розділення на рівні БД Дуже висока Висока Для великих проєктів

Метод на основі UF_VENDOR_ID поєднує високу надійність та помірну складність, що підтверджено на більш ніж 50 проєктах.

Профіль та налаштування продавця

  • Редагування юридичних даних та реквізитів.
  • Завантаження документів з версіонуванням (нові документи йдуть на повторну перевірку).
  • Налаштування сповіщень (email, Telegram, частота дайджестів).
  • Керування співробітниками (суб-акаунти з обмеженими правами).
  • Статистика верифікації: які документи прийняті, які потребують оновлення.

Що входить у роботу

  • Проєктування архітектури доступу та БД (документація).
  • Розробка всіх модулів кабінету з тестами.
  • Інтеграція з платіжними шлюзами та службами доставки.
  • Навчання адміністраторів платформи (2 години вебінару).
  • Технічна підтримка 3 місяці.
  • Передача вихідного коду, міграцій та інструкцій.

Терміни: від 11 до 17 тижнів. Вартість розраховується індивідуально після аудиту поточного проєкту. Замовте розробку — ми проведемо безкоштовний аудит і запропонуємо оптимальне рішення. Отримайте консультацію з архітектури вашого маркетплейсу.

Ми маємо понад 50 впроваджень та сертифікати «1С-Бітрікс: Експерт». Гарантуємо прозоре ціноутворення та поетапну здачу робіт.