Настройка тикет-системы поддержки покупателей 1С-Битрикс
В 1С-Битрикс есть встроенный модуль технической поддержки (support). Он работает, но часто его функциональности не хватает: нет удобной очереди для операторов, нет SLA, нет статистики по времени ответа. Задача настройки — либо довести штатный модуль до рабочего состояния для конкретного бизнеса, либо выстроить кастомную тикет-систему поверх инфраструктуры Битрикс.
Штатный модуль support
Модуль support Битрикс создаёт тикеты в таблице b_support_ticket. Структура: заголовок, описание, статус, ответственный, категория, приоритет. Сообщения хранятся в b_support_message.
Включение модуля: Настройки → Настройки продукта → Модули → Служба технической поддержки. После включения раздел /support/ появляется в публичной части сайта.
Типовая настройка включает:
- Категории обращений (доставка, оплата, возврат, товар, другое)
- Статусы (новый, в работе, ожидает ответа, решён, закрыт)
- Группы поддержки и распределение ответственных
- Шаблоны автоответа при создании и закрытии тикета
Привязка тикета к заказу
Стандартный модуль не связан с модулем sale. Добавляем эту связь через пользовательские поля тикета:
// Добавление UF-поля к тикетам
$userTypeManager = \Bitrix\Main\UserTypeManager::getInstance();
$userTypeManager->Add([
'ENTITY_ID' => 'SUPPORT',
'FIELD_NAME' => 'UF_ORDER_ID',
'USER_TYPE_ID' => 'integer',
'XML_ID' => 'order_id',
'SORT' => 100,
'MULTIPLE' => 'N',
'MANDATORY' => 'N',
'EDIT_FORM_LABEL' => ['ru' => 'Номер заказа'],
'LIST_COLUMN_LABEL' => ['ru' => 'Заказ'],
]);
В форме создания тикета в личном кабинете добавляем выпадающий список заказов пользователя. При выборе заказа UF_ORDER_ID заполняется автоматически.
Кастомная тикет-система на базе Битрикс
Если требования выходят за рамки штатного модуля (SLA, мультибрендовость, сложная маршрутизация), строим кастомную систему.
Схема данных:
CREATE TABLE bl_support_ticket (
id SERIAL PRIMARY KEY,
number VARCHAR(20) UNIQUE NOT NULL, -- SUP-20240312-0042
user_id INT REFERENCES b_user(ID),
order_id INT, -- b_sale_order.ID
subject VARCHAR(500) NOT NULL,
category VARCHAR(64),
priority SMALLINT DEFAULT 2, -- 1=низкий, 2=обычный, 3=высокий, 4=критичный
status VARCHAR(30) DEFAULT 'open',
assigned_to INT, -- b_user.ID оператора
group_id INT, -- группа операторов
sla_deadline TIMESTAMP,
first_reply_at TIMESTAMP,
resolved_at TIMESTAMP,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE bl_support_message (
id SERIAL PRIMARY KEY,
ticket_id INT REFERENCES bl_support_ticket(id),
author_id INT REFERENCES b_user(ID),
body TEXT NOT NULL,
is_internal BOOLEAN DEFAULT false, -- внутренняя заметка оператора
created_at TIMESTAMP DEFAULT NOW()
);
SLA и эскалация
SLA рассчитывается при создании тикета на основе категории и приоритета:
class SlaCalculator
{
private array $slaMatrix = [
'critical' => ['first_reply' => 60, 'resolution' => 240], // минуты
'high' => ['first_reply' => 240, 'resolution' => 1440],
'normal' => ['first_reply' => 480, 'resolution' => 2880],
'low' => ['first_reply' => 1440,'resolution' => 5760],
];
public function calculateDeadline(string $priority): \DateTime
{
$minutes = $this->slaMatrix[$priority]['resolution'];
return (new \DateTime())->modify("+{$minutes} minutes");
}
}
Агент каждые 15 минут проверяет тикеты с истекающим SLA и эскалирует — меняет ответственного или приоритет, отправляет уведомление руководителю.
Форма создания тикета в личном кабинете
Форма с выбором категории, темой и описанием проблемы. Если пользователь пришёл со страницы заказа — order_id предзаполнен. После отправки — email с номером тикета, ссылкой для отслеживания.
Компонент оператора в административной части: очередь тикетов с фильтрами (статус, категория, ответственный, SLA-просроченные), интерфейс ответа с шаблонами, кнопка изменения статуса.
Автоответы и шаблоны
Шаблоны сообщений хранятся в bl_support_templates. Оператор выбирает шаблон из выпадающего списка — тело сообщения заполняется с плейсхолдерами (имя клиента, номер заказа, ссылка на отслеживание).
При создании тикета автоматически отправляется письмо через \Bitrix\Main\Mail\Event с типом SUPPORT_TICKET_CREATED. При ответе оператора — SUPPORT_TICKET_REPLY.
Сроки
| Этап | Срок |
|---|---|
| Схема БД + репозитории | 2 дня |
| Форма создания + ЛК | 3 дня |
| Интерфейс оператора | 4 дня |
| SLA + эскалация + агент | 2 дня |
| Email-уведомления + шаблоны | 1 день |
| Тестирование | 2 дня |
| Итого | 2 недели |







