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

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка кастомной Q&A системы для товаров на 1С-Битрикс
Средний
~1-2 недели
Часто задаваемые вопросы

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

Этапы разработки

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1330
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    924
  • 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
    672
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    815
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    714
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1051

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

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

Блок Q&A на карточке товара позволяет задать вопрос и мгновенно получить ответ от магазина или других покупателей. Стандартного компонента в Битрикс нет — мы реализуем его на кастомной ORM-модели. На одном из проектов после внедрения повторных вопросов стало на 35% меньше, а время первого ответа сократилось до 2 часов. Экономия на поддержке — до 12 000 рублей в месяц при объёме 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 реализованных проектов. Закажите консультацию — мы подготовим решение под ваш проект. Получите бесплатный аудит текущей поддержки: оставьте заявку на сайте.