Як ми створили кастомну Q&A систему на 1С-Бітрікс
На сайті з 10 000 товарів щодня надходить до 50 питань від покупців. Без єдиної системи менеджери витрачають до 3 годин на день на відповіді в чатах, email та телефоні. Клієнти, не дочекавшись відповіді, йдуть до конкурентів — конверсія падає на 15–20%. Кастомна Q&A система на 1С-Бітрікс вирішує цю проблему: автоматизує прийом питань, модерацію, сповіщення та генерацію унікального контенту (UGC). UGC не лише підвищує лояльність, а й покращує SEO — пошуковики люблять свіжий текст на сторінках товарів. Система може замінити платний сервіс за 15 000 грн/міс. Кастомна ORM-модель працює в 3 рази швидше за готовий компонент. Ми — сертифіковані партнери 1С-Бітрікс з 7-річним досвідом. Гарантуємо якість та надаємо документацію. Ми пропонуємо кастомну Q&A систему на 1С-Бітрікс для вашого бізнесу. Виконуємо розробку під ключ — від архітектури до навчання менеджерів. Зв'яжіться з нами, ми підготуємо архітектуру під ваш проект.
Блок Q&A на картці товару дозволяє задати питання та миттєво отримати відповідь від магазину або інших покупців. Стандартного компонента в Бітрікс немає — ми реалізуємо його на кастомній ORM-моделі. На одному з проектів після впровадження повторних питань стало на 35% менше, а час першої відповіді скоротився до 2 годин. Економія на підтримці — до 12 000 грн на місяць при обсязі 1000 питань. Конверсія товарів з Q&A на 18% вища ніж без нього.
Як побудувати ORM-модель для Q&A системи?
Для системи Q&A достатньо двох зв'язаних таблиць. Таблиця b_product_question:
| Поле | Тип | Призначення |
|---|---|---|
| ID | int | Первинний ключ |
| PRODUCT_ID | int | ID товару |
| USER_ID | int | ID користувача (NULL = гість) |
| AUTHOR_NAME | varchar(255) | Ім'я автора питання |
| AUTHOR_EMAIL | varchar(255) | Email для сповіщення про відповідь |
| QUESTION | text | Текст питання |
| STATUS | enum | PENDING, APPROVED, REJECTED |
| CREATED_AT | datetime | Дата створення |
Таблиця b_product_answer (відповіді на питання):
| Поле | Тип | Призначення |
|---|---|---|
| ID | int | Первинний ключ |
| QUESTION_ID | int | FK → b_product_question.ID |
| USER_ID | int | Хто відповів |
| AUTHOR_NAME | varchar(255) | Ім'я відповідача |
| IS_OFFICIAL | tinyint(1) | Офіційна відповідь від магазину |
| ANSWER | text | Текст відповіді |
| STATUS | enum | PENDING, APPROVED |
| CREATED_AT | datetime | Дата створення |
Приклад ORM-класів ProductQuestionTable
namespace Your\Module; use Bitrix\Main\ORM\Data\DataManager; use Bitrix\Main\ORM\Fields\IntegerField; use Bitrix\Main\ORM\Fields\TextField; use Bitrix\Main\ORM\Fields\EnumField; use Bitrix\Main\ORM\Fields\DatetimeField; use Bitrix\Main\ORM\Fields\Relations\Reference; use Bitrix\Main\ORM\Query\Join; class ProductQuestionTable extends DataManager { public static function getTableName() { return 'b_product_question'; } public static function getMap() { return [ new IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new IntegerField('PRODUCT_ID', ['required' => true]), new IntegerField('USER_ID'), new TextField('AUTHOR_NAME'), new TextField('AUTHOR_EMAIL'), new TextField('QUESTION', ['required' => true]), new EnumField('STATUS', ['values' => ['PENDING', 'APPROVED', 'REJECTED'], 'default' => 'PENDING']), new DatetimeField('CREATED_AT', ['default' => function () { return new \Bitrix\Main\Type\DateTime(); }]), ]; } } ORM-класи ProductQuestionTable та ProductAnswerTable успадковуються від \Bitrix\Main\ORM\Data\DataManager. Зв'язок оформлюється через \Bitrix\Main\ORM\Fields\Relations\Reference для JOIN в одному запиті. Така архітектура в 2–3 рази швидша за стандартне рішення на компонентах. Детальніше про ORM — в офіційній документації та на Wikipedia.
Чому голосування за корисність в Q&A підвищує конверсію?
Коли покупець бачить, що відповідь допомогла іншим, він довіряє магазину. Ми додаємо таблицю b_product_answer_vote з полями ANSWER_ID, USER_ID, IP, IS_HELPFUL. Агреговані лічильники (HELPFUL_COUNT, UNHELPFUL_COUNT) зберігаємо прямо в b_product_answer для швидкого виведення без JOIN. Це скорочує час завантаження сторінки на 15%. Згідно з нашою статистикою, товари з Q&A та видимими голосами мають конверсію в покупку на 18% вище.
Як проходить життєвий цикл питання в Q&A?
Кожне питання проходить наступні етапи:
- Покупець відправляє питання → створюється запис
STATUS = PENDING. - Модератор отримує сповіщення на email (поштова подія
PRODUCT_QUESTION_NEW). - Модератор схвалює питання (
STATUS = APPROVED) — питання стає видимим на сторінці. - Менеджер або інший покупець залишає відповідь →
b_product_answerзSTATUS = PENDING. - Якщо відповідь потребує модерації — схвалюється аналогічно. Офіційні відповіді (
IS_OFFICIAL = 1) можуть публікуватися автоматично. - Після першої схваленої відповіді автор питання отримує сповіщення по email.
Налаштування сповіщень Q&A
Мінімальний набір поштових подій:
-
PRODUCT_QUESTION_NEW— нове питання очікує модерації. Отримувач: менеджер. -
PRODUCT_ANSWER_NEW— нова відповідь очікує модерації (якщо увімкнена модерація відповідей). -
PRODUCT_QUESTION_ANSWERED— ваше питання отримало відповідь. Отримувач: автор питання заAUTHOR_EMAIL.
Шаблони створюються в Налаштування → Поштові події. Змінні передаються через другий параметр CEvent::Send():
\CEvent::Send('PRODUCT_QUESTION_ANSWERED', SITE_ID, [ 'QUESTION_TEXT' => $question['QUESTION'], 'ANSWER_TEXT' => $answer['ANSWER'], 'PRODUCT_NAME' => $productName, 'PRODUCT_URL' => $productUrl, 'AUTHOR_EMAIL' => $question['AUTHOR_EMAIL'], 'AUTHOR_NAME' => $question['AUTHOR_NAME'], ]); Пошук по питаннях Q&A
На сторінках з великою кількістю питань (популярні товари) додається AJAX-пошук по тексту питання. Запит через ORM:
ProductQuestionTable::getList([ 'filter' => [ '=PRODUCT_ID' => $productId, '=STATUS' => 'APPROVED', '%QUESTION' => $searchQuery, ], 'select' => ['ID', 'AUTHOR_NAME', 'QUESTION', 'CREATED_AT'], 'order' => ['CREATED_AT' => 'DESC'], 'limit' => 10, ]); Символ % перед ключем у фільтрі D7 задає LIKE-пошук.
Адміністративний розділ Q&A
У /local/admin/product_questions.php виводиться таблиця питань з фільтрами за статусом, товаром, датою. Використовується стандартний клас CAdminList для швидкої реалізації пагінації та сортування без написання HTML вручну.
Що входить в розробку Q&A
- Документація по ORM-схемі та API.
- Міграції для створення таблиць.
- Адміністративний розділ для модерації.
- Налаштування поштових подій та шаблонів.
- Тестування на 5+ сценаріях (гість, авторизований, модератор).
- Навчання менеджерів роботі з системою.
Терміни та бюджет Q&A
| Масштаб | Склад | Термін | Вартість |
|---|---|---|---|
| Базовий | ORM-моделі, форма питання, виведення Q&A, сповіщення, модерація в ЛК | 4–6 днів | від 20 000 грн |
| Повний | Відповіді від покупців, пошук по питаннях, голосування за корисність, адміністративний розділ | 8–12 днів | від 40 000 грн |
Бюджет розраховується індивідуально в залежності від обсягу робіт. Маємо 7+ років досвіду з Бітрікс, більше 120 реалізованих проектів. Замовте консультацію — ми підготуємо рішення під ваш проект. Отримайте безкоштовний аудит поточної підтримки: залиште заявку на сайті.







