Розробка модуля швидкого замовлення для 1С-Бітрікс
Швидке замовлення — це шлях до покупки в один крок: користувач вводить лише ім'я і телефон, решту бере на себе менеджер. Конверсія у такої схеми вища, ніж у повному оформленні замовлення, особливо на мобільних пристроях. У Бітрікс немає готового компонента швидкого замовлення — його роблять поверх стандартного модуля sale.
Де розташовується модуль
Модуль реєструється в local/modules/vendor.quickorder/. Ключові файли:
-
lib/QuickOrderHandler.php— бізнес-логіка створення замовлення -
lib/Notification.php— відправка сповіщень -
components/vendor/quickorder.form/— компонент форми -
install/db/install.sql— створення таблиці логів
Створення замовлення через Sale API
Швидке замовлення в Бітрікс реалізується через API модуля sale. Товар додається в корзину програмно, потім створюється замовлення:
use Bitrix\Sale\Order;
use Bitrix\Sale\Basket;
use Bitrix\Sale\BasketItem;
$order = Order::create(SITE_ID, null); // null = гостьове замовлення
$order->setPersonTypeId(1);
$basket = Basket::create(SITE_ID);
$item = $basket->createItem('catalog', $productId);
$item->setFields([
'QUANTITY' => 1,
'CURRENCY' => \Bitrix\Currency\CurrencyManager::getBaseCurrency(),
'LID' => SITE_ID,
'PRODUCT_PROVIDER_CLASS' => \CCatalogProductProvider::class,
]);
$order->setBasket($basket);
$propertyCollection = $order->getPropertyCollection();
$propPhone = $propertyCollection->getPhone();
if ($propPhone) {
$propPhone->setValue($phone);
}
$order->setField('USER_DESCRIPTION', $comment);
$order->save();
Статус нового замовлення встановлюється в «Новий» (зазвичай N) або в спеціальний статус «Швидке замовлення», який створюється окремо в довіднику статусів модуля sale.
Таблиця логів швидких замовлень
Крім створення замовлення в системі, пишемо лог у окрему таблицю b_quickorder_log — це дозволяє будувати статистику без розбору всієї таблиці b_sale_order:
| Поле | Тип | Назначення |
|---|---|---|
| ID | int auto_increment | — |
| ORDER_ID | int | ID створеного замовлення в b_sale_order |
| PRODUCT_ID | int | ID товара |
| PHONE | varchar(20) | Телефон |
| NAME | varchar(255) | Ім'я |
| SOURCE_URL | varchar(2048) | Сторінка, з якої оформлено замовлення |
| UTM_SOURCE | varchar(100) | UTM-мітки |
| CREATED_AT | datetime | — |
| PROCESSED_AT | datetime | Коли менеджер взяв в роботу |
Валідація на сервері
Форма швидкого замовлення мінімальна — ім'я і телефон. Валідація телефону на сервері через регулярний вираз з урахуванням форматів: +7 (999) 123-45-67, 89991234567, +375 29 123-45-67. Після нормалізації зберігаємо у форматі E.164.
Захист від флуда: перевіряємо в таблиці b_quickorder_log, скільки замовлень з цієї IP за останню годину. При перевищенні порогу (наприклад, 5 замовлень) повертаємо помилку без створення замовлення.
Сповіщення
Після успішного створення замовлення спрацьовують два сповіщення:
Для менеджера — поштова подія QUICKORDER_NEW з шаблоном, що включає ім'я клієнта, телефон, назву та фото товара, посилання на замовлення в адміністративній частині. Додатково можна налаштувати SMS через API інтегрованого SMS-провайдера.
Для клієнта — необов'язкове SMS-підтвердження: «Ваше замовлення прийнято, менеджер зв'яжеться з вами протягом 15 хвилин».
Інтеграція з CRM
Якщо на проекті підключений модуль CRM (власний або Bitrix24), при створенні швидкого замовлення автоматично створюється лід. Дані передаються через \Bitrix\Crm\LeadTable::add() або через REST API Bitrix24 (crm.lead.add). Поле SOURCE_ID ліда встановлюється в значення «Швидке замовлення з сайту».
Кнопка на карточці товара
Кнопка «Купити в 1 клік» розташовується в шаблоні компонента bitrix:catalog.element. При кліку відкривається модальне вікно з формою — або через bitrix:sale.order.ajax з кастомним шаблоном, або через власний AJAX-компонент. Модальне вікно не повинно перезавантажувати сторінку і обов'язково мати коректно при включеному кешуванні компонента карточки товара (форма підгружається окремим некешованим AJAX-запитом).
Терміни розробки
| Масштаб | Склад | Тривалість |
|---|---|---|
| Базовий | Форма, створення замовлення в sale, email-сповіщення менеджеру |
3–4 дні |
| Стандартний | + Антифлуд, лог в БД, UTM-параметри, SMS-сповіщення | 6–8 днів |
| Розширений | + Інтеграція з CRM, аналітика за джерелами, A/B тест форм | 10–13 днів |







