Разработка кастомной Q&A системы для товаров на 1С-Битрикс

Разработка системы вопрос-ответ по товарам 1С-Битрикс На сайте с 10 000 товаров ежедневно поступает до 50 вопросов от покупателей. Без единой системы менеджеры тратят до 3 часов в день на ответы в чатах, email и телефоне. Клиенты, не дождавшись ответа, уходят к конкурентам — конверсия падает на 1
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка кастомной Q&A системы для товаров на 1С-Битрикс
Средний
~1-2 недели

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

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1455
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1018
  • 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 Appointment Booking Widget for a Medical Center
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    804
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1162

Разработка системы вопрос-ответ по товарам 1С-Битрикс

На сайте с 10 000 товаров ежедневно поступает до 50 вопросов от покупателей. Без единой системы менеджеры тратят до 3 часов в день на ответы в чатах, email и телефоне. Клиенты, не дождавшись ответа, уходят к конкурентам — конверсия падает на 15–20%. Кастомная система Q&A на 1С-Битрикс решает эту проблему: автоматизирует приём вопросов, модерацию, уведомления и генерацию уникального контента (UGC). UGC не только повышает лояльность, но и улучшает SEO — поисковики любят свежий текст на страницах товаров. Свяжитесь с нами, мы подготовим архитектуру под ваш проект.

Блок Q&A на карточке товара позволяет задать вопрос и мгновенно получить ответ от магазина или других покупателей. Стандартного компонента в Битрикс нет — мы реализуем его на кастомной ORM-модели. На одном из проектов после внедрения повторных вопросов стало на 35% меньше, а время первого ответа сократилось до 2 часов. Экономия на поддержке — до $110–160 в месяц при объёме 1000 вопросов.

Как построить ORM-модель для вопросов и ответов?

Для системы 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.

Почему голосование за полезность повышает конверсию?

Когда покупатель видит, что ответ помог другим, он доверяет магазину?

Мы добавляем таблицу b_product_answer_vote с полями ANSWER_ID, USER_ID, IP, IS_HELPFUL. Агрегированные счётчики (HELPFUL_COUNT, UNHELPFUL_COUNT) храним прямо в b_product_answer для быстрого вывода без JOIN. Это сокращает время загрузки страницы на 15%. Согласно нашей статистике, товары с Q&A и видимыми голосами имеют конверсию в покупку на 18% выше.

Как проходит жизненный цикл вопроса?

Каждый вопрос проходит следующие этапы:

  1. Покупатель отправляет вопрос → создаётся запись STATUS = PENDING.
  2. Модератор получает уведомление на email (почтовое событие PRODUCT_QUESTION_NEW).
  3. Модератор одобряет вопрос (STATUS = APPROVED) — вопрос становится виден на странице.
  4. Менеджер или другой покупатель оставляет ответ → b_product_answer с STATUS = PENDING.
  5. Если ответ требует модерации — одобряется аналогично. Официальные ответы (IS_OFFICIAL = 1) могут публиковаться автоматически.
  6. После первого одобренного ответа автор вопроса получает уведомление по email.

Уведомления

Минимальный набор почтовых событий:

  • 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'], ]); 

Поиск по вопросам

На страницах с большим количеством вопросов (популярные товары) добавляется 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-поиск.

Административный раздел

В /local/admin/product_questions.php выводится таблица вопросов с фильтрами по статусу, товару, дате. Используется стандартный класс CAdminList для быстрой реализации пагинации и сортировки без написания HTML вручную.

Что входит в разработку

  • Документация по ORM-схеме и API.
  • Миграции для создания таблиц.
  • Административный раздел для модерации.
  • Настройка почтовых событий и шаблонов.
  • Тестирование на 5+ сценариях (гость, авторизованный, модератор).
  • Обучение менеджеров работе с системой.

Сроки и бюджет

Масштаб Состав Срок
Базовый ORM-модели, форма вопроса, вывод Q&A, уведомления, модерация в ЛК 4–6 дней
Полный Ответы от покупателей, поиск по вопросам, голосование за полезность, административный раздел 8–12 дней

Бюджет рассчитывается индивидуально в зависимости от объёма работ. Имеем 7+ лет опыта с Битрикс, более 120 реализованных проектов. Закажите консультацию — мы подготовим решение под ваш проект. Получите бесплатный аудит текущей поддержки: оставьте заявку на сайте.