Налаштування рейтингу та відзивів про продавців маркетплейсу 1С-Bitrix
Система відзивів про продавців — це не те саме, що відзиви про товари в стандартному модулі Каталог. Відзив про продавця прив'язаний до конкретного замовлення, може бути залишений тільки покупцем, який дійсно отримав товар, і впливає на видимість продавця в каталозі.
Зберігання відзивів та рейтингу
Стандартний компонент blog.post.list / forum для цього не підходить. Потрібен HL-інфоблок або користувацька таблиця:
Таблиця відзивів mp_vendor_reviews:
| Поле | Тип | Описание |
|---|---|---|
| ID | int, AI | |
| VENDOR_ID | int | FK на продавця |
| USER_ID | int | FK на покупця |
| ORDER_ID | int | FK на замовлення/суб-замовлення |
| RATING | tinyint | 1–5 |
| TEXT | text | Текст відзиву |
| STATUS | varchar | pending / approved / rejected |
| CREATED_AT | datetime | |
| MODERATED_AT | datetime |
Індекс на (VENDOR_ID, STATUS) — для швидкого розрахунку рейтингу.
Рейтинг продавця зберігається в таблиці продавців денормалізовано: UF_RATING (float) та UF_RATING_COUNT (int). Оновлюється після кожного схвореного відзиву.
Логіка: хто та коли може залишити відзив
Тільки покупець, чиє суб-замовлення перейшло у статус delivered, може залишити відзив. Перевірка при спробі залишити відзив:
$canReview = MpSubOrderTable::getList([
'filter' => [
'VENDOR_ID' => $vendorId,
'USER_ID' => $userId,
'STATUS' => 'delivered',
'!REVIEW_ID' => false // ще не залишав відзив
]
])->fetch();
Повторний відзив на того ж продавця в рамках одного замовлення — заборонено. На інше замовлення — дозволено.
Модерація відзивів
Нові відзиви переходять у статус pending. Модератор схвалює або відхиляє через адміністративний інтерфейс. При схваленні — перерахунок рейтингу продавця:
$stats = MpVendorReviewTable::getList([
'select' => ['AVG_RATING' => new ExpressionField('AVG_RATING', 'AVG(RATING)'), 'CNT'],
'filter' => ['VENDOR_ID' => $vendorId, 'STATUS' => 'approved']
])->fetch();
VendorTable::update($vendorId, [
'UF_RATING' => round($stats['AVG_RATING'], 2),
'UF_RATING_COUNT' => $stats['CNT']
]);
Відзиви без модерації можливі, але ризиковані — спам та фальсифікація.
Відображення рейтингу
Рейтинг та відзиви виводяться на сторінці продавця та на карточках його товарів. Шаблони компонентів читають UF_RATING з таблиці продавців — це швидко. Список відзивів — окремий AJAX-запит з пагінацією, щоб не навантажувати сторінку повністю.
Терміни
Зберігання відзивів, логіка доступу, перерахунок рейтингу, базова модерація — 1–2 тижні. Додавання відповідей продавця на відзиви, сортування за рейтингом у каталозі — додатково 3–5 днів.







