Разработка модуля быстрого заказа 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 (собственный или Битрикс24), при создании быстрого заказа автоматически создаётся лид. Данные передаются через \Bitrix\Crm\LeadTable::add() или через REST API Битрикс24 (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 дней |







