Товар ещё не поступил на склад, но карточка уже в каталоге. Средний магазин теряет 15-20% заказов из-за отсутствия предзаказа. Стандартный Битрикс показывает кнопку «Нет в наличии» и предлагает подписку на уведомление. Клиент уходит: он хочет купить сейчас, а не ждать письма через неделю. Мы решаем эту задачу функционалом предзаказа — клиент оформляет заказ на отсутствующий товар, фиксирует цену и место в очереди. Магазин получает прогнозируемый спрос и меньше потерянных лидов. На практике это увеличивает конверсию на 30% и снижает отток клиентов в 3 раза по сравнению с подпиской на уведомление.
Почему предзаказ лучше уведомления о поступлении?
Модуль catalog.subscribe — это только подписка на email. Когда CATALOG_AVAILABLE становится Y, клиенту приходит письмо. Ни заказа, ни фиксации цены, ни очереди. Предзаказ — полноценный заказ со специальным статусом. Товар резервируется, оплата может быть полной, частичной (задаток) или отложенной. При поступлении заказ переводится в обработку. По нашим данным, внедрение предзаказа увеличивает число успешных покупок отсутствующего товара на 40-60%.
Как обойти ограничение корзины Битрикс?
Главная техническая проблема: ядро не позволяет добавить в корзину товар с нулевым остатком. Метод \Bitrix\Catalog\Product\Basket::addProduct() проверяет CATALOG_AVAILABLE и возвращает ошибку. Два рабочих подхода:
Виртуальный склад предзаказов. Создаётся отдельный склад «Предзаказ» в Магазин → Склады. Для товаров, помеченных для предзаказа, на этом складе устанавливается количество, равное лимиту. Товар становится CATALOG_AVAILABLE = Y, а реальный склад пуст. При обработке менеджер видит резерв на складе «Предзаказ» и понимает ситуацию. Плюс: не требует модификации ядра. Минус: искажает остатки в отчётах, нужна дисциплина обмена с 1С.
Обработчик события. Подписка на OnBeforeBasketAdd или OnSaleBasketItemBeforeSaved перехватывает проверку наличия. Если товар помечен PREORDER_AVAILABLE = Y, валидация остатков пропускается. Этот способ в 5 раз чище архитектурно, но требует тестирования с каждым обновлением модуля sale, так как механизм проверки меняется.
Инструкция: настройка предзаказа за 7 шагов
- Включите свойство
PREORDER_AVAILABLEдля инфоблока товаров. - Создайте дополнительные статусы заказа: PP (предзаказ принят), PW (ожидание поставки), PR (товар поступил).
- Реализуйте обработчик
OnBeforeBasketAdd, который разрешает добавление товара сPREORDER_AVAILABLE = Y. - Настройте автоматический переход PP → PR через
OnStoreProductUpdateпри поступлении товара. - Добавьте поле
PREORDER_LIMITв карточку товара и проверяйте его при добавлении в корзину. - Реализуйте очередь:
ORDER BY DATE_INSERT ASCв выборке предзаказов. - Протестируйте сценарии: полная оплата, задаток, частичная оплата при поступлении.
Статусы заказа
Для предзаказов создаются дополнительные статусы в Магазин → Статусы заказов:
| Код | Название | Описание |
|---|---|---|
| PP | Предзаказ принят | Заказ создан, товар отсутствует |
| PW | Ожидание поставки | Товар заказан у поставщика |
| PR | Товар поступил | Можно переводить в сборку |
Автоматизация перехода PP → PR реализуется через обработчик OnStoreProductUpdate. При изменении остатка на основном складе проверяются заказы в статусе PP с этим товаром. Если остаток достаточен — статус меняется на PR, клиенту отправляется уведомление.
Как настроить частичную оплату?
Три стратегии:
Полная предоплата. Клиент платит сразу. Простая схема, но рискованная для покупателя — при срыве поставки нужен возврат.
Задаток. При оформлении создаётся оплата на фиксированный процент (обычно 10-20%). Реализуется через кастомное правило корзины или два Payment: первый — задаток (активный), второй — остаток (отложенный). \Bitrix\Sale\Payment::setField('SUM', $depositAmount).
Оплата при поступлении. Заказ без оплаты. Когда товар приходит, менеджер активирует платёж, клиент получает ссылку. Для онлайн-оплаты используется \Bitrix\Sale\PaySystem\Service::initiatePay().
Лимиты и очередь
Без лимитов предзаказ превращается в проблему: 500 клиентов оформили, а поставка — 50 единиц. Лимит задаётся через свойство товара PREORDER_LIMIT. Текущее количество предзаказов считается запросом к b_sale_basket с фильтром IS_PREORDER = Y и связью с незавершёнными заказами. Очередь формируется по дате создания заказа — ORDER BY DATE_INSERT ASC. При поступлении товара приоритет отдаётся ранним заказам.
Что входит в работу
- Анализ требований: определение триггеров предзаказа, лимитов, схем оплаты.
- Проектирование архитектуры: выбор подхода (виртуальный склад или обработчик).
- Реализация: доработка шаблона компонента
catalog.element, настройка статусов, событий. - Интеграция с платёжными системами (задаток/полная предоплата).
- Тестирование сценариев: от добавления в корзину до перехода статусов.
- Документация по поддержке и передача доступов.
- Обучение менеджеров работе с предзаказами.
Сроки
| Масштаб | Что входит | Срок |
|---|---|---|
| Базовый | Кнопка предзаказа, виртуальный склад, статусы | от 4 дней |
| Полный | Задаток, автосмена статусов, лимиты, уведомления, интеграция с 1С | от 8 дней |
Стоимость рассчитывается индивидуально после аудита текущего проекта. Если хотите получить консультацию или оценить проект — свяжитесь с нами. Наш опыт в разработке под Битрикс позволяет гарантировать стабильную работу даже при высоких нагрузках.
Подробнее о статусах заказов: документация 1С-Битрикс.
Закажите разработку предзаказа и получите консультацию инженера бесплатно. Мы реализуем функционал, который увеличит выручку и сократит количество упущенных заказов.







