Налаштування тікет-системи підтримки покупців у 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 тижні |







