Опишите доработку или сценарий — обсудим вместе с другими клиентами.
Предзаказы
Технические данные
Совместимые редакции
- Программа для ЭВМ "1С-Битрикс: Управление сайтом". Лицензия Малый бизнес
- Программа для ЭВМ "1С-Битрикс: Управление сайтом". Лицензия Бизнес
Описание
ПредзаказыМодуль превращает «Нет в наличии» в продажу: покупатель оформляет предзаказ обычным заказом через корзину, встаёт в очередь на поставку и получает товар, как только он поступит на склад. Магазин заранее видит спрос, собирает предоплату и распределяет ограниченную партию честно — по времени оплаты или оформления заказа.
Сценарии- Новинка до старта продаж — сбор предзаказов до поступления товара на склад: даты приёма, ожидаемая дата поставки, все покупки в период приёма — предзаказы.
- Товар закончился — пока товар есть, он продаётся как обычно; когда остаток закончился, покупка становится «предзаказом со сроком» («Поставка через 14 дн.»).
- B2B-сезонные закупки — оптовые клиенты формируют заявки заранее: предзаказ доступен выбранным группам покупателей, задаются минимальное количество и крайний срок приёма заявок.
- Лимитированные партии — 50 штук, 200 желающих: лимит приёма, максимум на покупателя, очередь по времени оплаты, лист ожидания для тех, кто не попал в партию.
Как это работает
- Менеджер создаёт кампанию предзаказа и добавляет в неё товары или торговые предложения. Пока кампания принимает предзаказы, модуль разрешает покупку товара при нулевом остатке, а после окончания приёма возвращает товару прежнюю настройку.
- Покупатель добавляет товар в корзину кнопкой «Оформить предзаказ» в карточке товара или обычной кнопкой покупки. Позиция получает в корзине отметку «Предзаказ» с ожидаемой датой поставки, правила кампании проверяются при добавлении в корзину и ещё раз при оформлении заказа.
- После оформления заказа покупатель получает письмо с местом в очереди. Оплата, изменение количества, отмена и отгрузка заказа отражаются в предзаказе автоматически.
- Когда товар поступает на склад, модуль распределяет его по очереди, резервирует товар в заказах и сообщает покупателям, что товар поступил.
Возможности
- Кампании предзаказа с датами приёма, ожидаемой датой поставки или сроком поставки в днях.
- Два режима: предзаказ на любую покупку в период приёма или только при нехватке остатка.
- Очередь на поставку по времени оплаты (товар получают оплаченные предзаказы в порядке оплаты) или по времени оформления заказа.
- Размер ожидаемой партии и лимит приёма на каждый товар: покупатель видит, попадает ли он в партию или стоит в листе ожидания.
- Минимальное количество в заказе, максимум на одного покупателя, доступ по группам покупателей.
- Три источника поступлений: рост остатка в торговом каталоге (с учётом резерва), проведённые документы складского учёта (приход, оприходование) или ручная регистрация.
- Строгая очередь: товар не уходит к более позднему предзаказу, пока не обеспечен более ранний.
- Резервирование товара в заказе, как только предзаказ получил товар.
- Компонент «Кнопка предзаказа» для карточки товара: условия кампании, сколько осталось мест, предзаказы покупателя с местом в очереди.
- Отметка предзаказа в списках товаров одним запросом в result_modifier.php шаблона каталога.
- Снятие резерва с позиции заказа, которая потеряла товар (отмена оплаты, изменение количества, отклонение), и перевод заказа в выбранный статус, когда все его предзаказы обеспечены.
- Кампании для отдельных сайтов, выбор товаров из каталога в карточке кампании.
- Реестр предзаказов с фильтром, сохранёнными наборами фильтров, выгрузкой в Excel и действиями: обеспечить вне очереди, повторить письмо о поступлении, отклонить с письмом, снять с очереди.
- Журнал очереди по каждой кампании: поступления, распределение, оплаты, отмены.
- Письма покупателю (предзаказ принят, товар поступил, предзаказ отклонён) и менеджеру (новые предзаказы) через почтовые шаблоны, которые можно изменить.
- Шаблон оформления заказа sale.order.ajax менять не нужно.
- Права доступа к модулю по группам пользователей, сохранение данных при удалении модуля.
Установка и настройка
- Установите модуль. Нужны модули «Интернет-магазин», «Торговый каталог» и «Информационные блоки».
- Создайте кампанию в разделе «Магазин > Предзаказы > Кампании» и добавьте товары.
- Подключите компонент «Кнопка предзаказа» в шаблоне карточки товара (bitrix:catalog.element) на месте надписи «Нет в наличии». Готовый код — на вкладке «Подключение» в настройках модуля.
- Проверьте тексты писем в почтовых шаблонах XLOGIC_PREORDER_* и укажите e-mail менеджера в настройках модуля.
Что нужно знать
- Для автоматического определения поступлений у товаров должен вестись учёт количества в торговом каталоге. Если остатки не ведутся, отключите автоопределение и регистрируйте поступления вручную.
- Поступления проверяет агент (по умолчанию раз в 5 минут). Рекомендуется перевести агенты на cron, чтобы очередь обслуживалась вовремя независимо от посещаемости сайта.
- Для товаров с торговыми предложениями в кампанию добавляются предложения, а не сам товар.
- Товар может состоять только в одной активной кампании.
- Отклонение предзаказа не отменяет заказ и не возвращает оплату автоматически — это делает менеджер в заказе.
Модуль позволяет продавать товар, которого ещё нет на складе. Покупатель оформляет предзаказ обычным заказом через корзину и встаёт в очередь на поставку. Когда товар поступает, модуль распределяет его по очереди, резервирует в заказах и сообщает покупателям. Предзаказ — это позиция заказа, оформленная во время кампании, поэтому оплата, доставка и работа с заказом остаются штатными.
Что нужно для работы- Модули «Интернет-магазин» (sale), «Торговый каталог» (catalog) и «Информационные блоки» (iblock).
- Учёт количества товара в торговом каталоге — для автоматического определения поступлений и режима «только при нехватке остатка». Для поступлений по документам нужен включённый складской учёт. Если остатки не ведутся, поступления регистрируются вручную.
- Агенты, лучше на cron: агент модуля проверяет поступления, распределяет товар и открывает или закрывает приём предзаказов по датам кампаний.
1. Установка
- Установите модуль из Маркетплейса или в разделе «Настройки > Настройки продукта > Модули».
- При установке создаются таблицы модуля, агент очереди, почтовые события и шаблоны писем, компонент «Кнопка предзаказа» и пункт меню «Магазин > Предзаказы».
2. Настройки модуля
Откройте «Магазин > Предзаказы > Настройки» или «Настройки > Настройки продукта > Настройки модулей > Предзаказы».
Вкладка «Настройки»
- Источник поступлений:
- Рост остатка в каталоге (по умолчанию). Агент сравнивает остаток товара в каталоге — доступное количество плюс резерв — с прошлой проверкой. Рост остатка считается поступлением и распределяется по очереди. Резервирование и снятие резерва поступлением не считаются.
- Документы складского учёта. Проведённый документ «Приход товара» или «Оприходование товара» сразу регистрирует поступление товаров кампании, агент распределяет его по очереди при ближайшем запуске. Отмена проведения забирает из очереди товар, который ещё не распределён; уже выданный предзаказам товар остаётся у них, журнал кампании показывает сколько. Нужен включённый складской учёт. Возвраты и ручная правка остатков поступлением не считаются.
- Вручную в карточке кампании — если остатки в каталоге не ведутся.
- Рост остатка в каталоге (по умолчанию). Агент сравнивает остаток товара в каталоге — доступное количество плюс резерв — с прошлой проверкой. Рост остатка считается поступлением и распределяется по очереди. Резервирование и снятие резерва поступлением не считаются.
- Резервировать товар обеспеченного предзаказа (включено). Как только предзаказ получил товар, товары его заказа резервируются, чтобы этот товар не купил другой покупатель. Если предзаказ теряет товар, а заказ остаётся (отмена оплаты, изменение количества, отклонение или снятие с очереди менеджером), агент снимает резерв с этой позиции заказа.
- Статус заказа, когда товар поступил — в этот статус переводится заказ, все предзаказы которого обеспечены, чтобы склад видел заказ к сборке. Статус не меняется, если заказ уже продвинут дальше. По умолчанию статус не меняется.
- Период проверки, минут (по умолчанию 5). Как часто запускается агент очереди.
- Предзаказов на товар за один запуск (по умолчанию 500). Остальные будут обеспечены при следующем запуске.
- Письма покупателю (включено) — о принятии предзаказа, о поступлении товара и об отклонении.
- E-mail менеджера — куда сообщать о новых предзаказах. Если поле пустое, используется e-mail отдела продаж из настроек интернет-магазина.
- Агент — показывает, активен ли агент очереди, когда он запускался и когда запустится. Если агент пропал, сохраните настройки — он будет создан заново.
Вкладка «Подключение» — готовый код для шаблонов сайта (см. раздел 4).
Вкладка «Доступ» — права групп пользователей: «чтение» позволяет просматривать кампании и реестр, «запись» — изменять кампании, регистрировать поступления и работать с очередью.
3. Кампания предзаказаКампании находятся в разделе «Магазин > Предзаказы > Кампании». Нажмите «Добавить кампанию».
Вкладка «Кампания»
- Активна. Неактивная кампания не принимает предзаказы и не распределяет поступления. Предзаказы в очереди при этом сохраняются.
- Название — видно менеджеру и покупателю в письме о принятии предзаказа.
- Сценарий — тип кампании для удобства менеджера. Рекомендуемые настройки для каждого сценария приведены в разделе 5.
- Приём предзаказов с / до. Пустые даты — без ограничения. После окончания приёма новые предзаказы не принимаются, но очередь продолжает обслуживаться, пока кампания активна.
- Ожидаемая дата поставки — покупатель видит «Поставка ожидается 01.11.2026».
- Срок поставки, дней — используется, если дата поставки не задана: покупатель видит «Поставка через 14 дн.», в предзаказ записывается дата заказа плюс срок. Если не задано ни то, ни другое, покупатель видит «Дата поставки уточняется».
- Только при нехватке остатка.
- Включено: пока товар есть на складе, он продаётся обычным порядком. Предзаказом становится покупка сверх остатка, а также любая покупка, пока в очереди кто-то ждёт, — чтобы новый покупатель не обошёл очередь.
- Выключено: в период приёма любая покупка товара — предзаказ. Остаток, который уже есть на складе в момент добавления товара в кампанию, отдаётся очереди.
- Включено: пока товар есть на складе, он продаётся обычным порядком. Предзаказом становится покупка сверх остатка, а также любая покупка, пока в очереди кто-то ждёт, — чтобы новый покупатель не обошёл очередь.
- Очередь на поставку.
- «По времени оплаты» — товар получают только оплаченные предзаказы, в порядке оплаты заказов. Неоплаченные ждут и встают в очередь в момент оплаты.
- «По времени оформления» — в порядке оформления заказов, оплата не требуется.
- «По времени оплаты» — товар получают только оплаченные предзаказы, в порядке оплаты заказов. Неоплаченные ждут и встают в очередь в момент оплаты.
- Минимальное количество в заказе — например, для оптовых заявок.
- Максимум на одного покупателя — сумма всех предзаказов покупателя по товару, 0 — без ограничения. Для гостей проверяется при оформлении заказа.
- Группы покупателей — кому доступен предзаказ. Если группы не выбраны, предзаказ доступен всем. Остальные покупатели могут купить товар только из наличия.
- Сайты — поле есть, если сайтов несколько. На каких сайтах принимаются предзаказы; если сайты не выбраны — на всех. На остальных сайтах товар продаётся только из наличия, кнопка предзаказа там не показывается.
- Текст для покупателя — показывается в блоке предзаказа в карточке товара: условия оплаты, дата старта продаж и т.п. Только текст, без HTML.
Вкладка «Товары и очередь»
- Нажмите «Выбрать из каталога…» и отметьте товары или торговые предложения в окне поиска по каталогу — их ID попадут в поле «ID товаров или торговых предложений». ID можно вписать и вручную, через запятую или с новой строки. Для товара с торговыми предложениями укажите предложения: товар с предложениями целиком добавить нельзя.
- Партия — сколько товара ожидается. Покупатель видит, попадает ли он в партию: «Ваше место в очереди: 37, вы в пределах ожидаемой партии» или «…сверх ожидаемой партии — вы в листе ожидания». 0 — размер партии неизвестен.
- Лимит приёма — сколько всего принимать в предзаказ. Лимит может быть больше партии: лишние покупатели встанут в лист ожидания. Когда лимит исчерпан, кнопка предзаказа заменяется надписью «Все места в партии заняты». 0 — без ограничения.
- Таблица товаров показывает остаток и резерв в каталоге, сколько принято, сколько ждёт и сколько обеспечено (число предзаказов / количество), сколько поступило и сколько ещё не распределено.
- Чтобы убрать товар из кампании, отметьте «Убрать» и сохраните. Это возможно, только когда по товару нет предзаказов в очереди.
- Товар может состоять только в одной активной кампании.
Вкладка «Журнал» — последние 100 событий очереди: создание предзаказов, оплаты, поступления, выделение товара, отмены, кто выполнил действие.
Действия с очередью (под формой кампании):
- Проверить сейчас — при поступлениях по росту остатка запускает проверку остатков, не дожидаясь агента.
- Зарегистрировать поступление — при поступлениях вручную или по документам (например, для корректировки): выберите товар, укажите, сколько пришло, и товар сразу распределится по очереди.
- Распределить — отдаёт нераспределённый остаток ожидающим предзаказам. Обычно это делает агент, например после оплаты заказа.
- Отклонить всех ожидающих — когда партия закончилась: ожидающие предзаказы получают статус «Отклонён», покупателям уходит письмо с указанной причиной. Заказы при этом не отменяются и оплата не возвращается — сделайте это в заказах.
4. Вывод на сайте
Карточка товара. Скопируйте шаблон компонента bitrix:catalog.element в шаблон сайта и на месте надписи «Нет в наличии» и кнопки покупки подключите компонент «Кнопка предзаказа»:
<?php $APPLICATION->IncludeComponent('xlogic:preorder.button', '', ['PRODUCT_ID' => $arResult['ID'],
'BASKET_URL' => $arParams['BASKET_URL'],
], $component); ?>
Для товара с торговыми предложениями передайте ID выбранного предложения. Параметры компонента:
- ID товара или торгового предложения (PRODUCT_ID).
- Показывать предзаказы покупателя и место в очереди (SHOW_QUEUE, по умолчанию «да»).
- Страница корзины (BASKET_URL) — ссылка в сообщении после добавления товара.
- Время кеширования — кешируются только условия кампании; остаток, оставшиеся места и очередь покупателя считаются при каждом показе.
Блок показывается, когда покупка товара будет предзаказом, когда приём ещё не начался («Приём предзаказов начнётся …») или когда у покупателя уже есть предзаказы этого товара. В блоке — отметка «Предзаказ», ожидаемая поставка, текст кампании, крайний срок приёма, сколько осталось мест, минимальное количество, поле количества и кнопка «Оформить предзаказ». Если предзаказ доступен только отдельным группам, покупатель видит об этом сообщение. Внешний вид меняется копированием шаблона компонента в шаблон сайта.
Списки товаров. Чтобы пометить предзаказные товары в bitrix:catalog.section, в result_modifier.php шаблона получите отметки одним запросом:
$info = \Xlogic\Preorder\Service\CampaignManager::getProductsInfo(array_column($arResult['ITEMS'], 'ID'));foreach ($arResult['ITEMS'] as &$item) {
$item['XLOGIC_PREORDER'] = $info[$item['ID']] ?? null;
}
unset($item);
В элементе будут ключи IS_PREORDER (покупка будет предзаказом) и EXPECTED_TEXT (ожидаемая поставка), которые выводятся в template.php. Сайты кампании учитываются по текущему сайту; другой сайт передаётся вторым параметром getProductsInfo().
Корзина и оформление заказа менять не нужно. Позиция-предзаказ получает в корзине свойство «Предзаказ» с ожидаемой поставкой. Правила кампании (группы, минимум, максимум на покупателя, лимит) проверяются при добавлении в корзину и ещё раз при оформлении заказа; если правило нарушено, покупатель видит причину, например «осталось в предзаказ только 3».
5. Настройка сценариевНовинка до старта продаж
- Сценарий «Новинка до старта продаж», даты приёма — до старта продаж, ожидаемая дата поставки.
- «Только при нехватке остатка» — выключено: любая покупка в период приёма — предзаказ.
- Очередь — по времени оплаты, если нужна предоплата, или по времени оформления.
- После поставки предзаказы обеспечиваются по очереди. Когда приём закончился и очередь пуста, остаток уходит в обычную продажу.
Товар закончился
- Сценарий «Товар закончился», без дат, срок поставки в днях, например 14.
- «Только при нехватке остатка» — включено: товар продаётся из наличия, а когда остаток закончился, покупатель видит «Поставка через 14 дн.» и оформляет предзаказ.
- Очередь — по времени оформления.
- Пришедший товар сначала обеспечивает очередь, остаток сверх неё уходит в обычную продажу.
B2B-сезонные закупки
- Сценарий «B2B-сезонные закупки», «Группы покупателей» — оптовые группы, минимальное количество в заказе, «Приём до» — крайний срок приёма заявок.
- Очередь — по времени оформления, оплата не требуется.
- Розничные покупатели могут купить товар только из наличия.
Лимитированная партия (50 штук, 200 желающих)
- Сценарий «Лимитированная партия», «Только при нехватке остатка» — выключено, очередь — по времени оплаты.
- На вкладке «Товары и очередь»: партия — 50, лимит приёма — например 200 (лишние 150 встанут в лист ожидания), «Максимум на одного покупателя» — 1.
- Товар получают первые оплатившие. Если товар уже на складе, он распределяется сразу после оплаты, при следующем запуске агента.
- Если оплативший отменил заказ, его товар переходит к следующему в очереди. Когда партия распродана, нажмите «Отклонить всех ожидающих» и верните оплату в заказах.
6. Очередь и статусы предзаказов
Все предзаказы находятся в разделе «Магазин > Предзаказы > Реестр предзаказов». Статус меняется сам вслед за заказом:
- В очереди — предзаказ ждёт товар. В колонке «Очередь» показано место в очереди; при очереди по времени оплаты неоплаченный предзаказ ждёт оплаты.
- Товар поступил — предзаказ получил товар, товары заказа зарезервированы, покупатель получил письмо. Заказ можно собирать и отгружать.
- Отгружен — заказ отгружен.
- Отклонён — партия закончилась, покупатель получил письмо.
- Отменён — заказ отменён или удалён, товар удалён из заказа, либо предзаказ снят с очереди менеджером.
Как события заказа влияют на очередь:
- Оплата заказа фиксирует время оплаты — оно определяет место в очереди по времени оплаты.
- Отмена оплаты при очереди по времени оплаты возвращает уже обеспеченный предзаказ в очередь, а его товар — следующему.
- Изменение количества в заказе возвращает обеспеченный предзаказ в очередь с новым количеством.
- Отмена или удаление заказа снимает предзаказ с очереди; выделенный ему товар переходит следующему.
- Отгрузка заказа завершает предзаказ.
Очередь строгая: если следующему предзаказу не хватает пришедшего количества, товар не уходит более позднему предзаказу, а ждёт следующего поступления. Нераспределённый остаток виден в колонке «Не распределено» на вкладке «Товары и очередь».
Действия в реестре (в меню строки или для отмеченных строк):
- Обеспечить вне очереди — отдать товар предзаказу, не дожидаясь его очереди.
- Повторить письмо о поступлении — для предзаказов со статусом «Товар поступил».
- Отклонить с письмом — покупатель получит письмо об отклонении.
- Снять с очереди без письма — заказ при этом не меняется.
Фильтр реестра: кампания, статус («в очереди и обеспеченные» — все открытые), ID и название товара, ID заказа и покупателя, оплата. Наборы фильтров можно сохранять, список — выгружать в Excel кнопкой над списком. Так же устроен список кампаний.
7. ПисьмаТексты писем редактируются в разделе «Настройки > Настройки продукта > Почтовые и СМС события > Почтовые шаблоны»:
- XLOGIC_PREORDER_CREATED — предзаказ принят: товар, количество, номер заказа, ожидаемая поставка и место в очереди.
- XLOGIC_PREORDER_ARRIVED — товар поступил и закреплён за заказом.
- XLOGIC_PREORDER_DECLINED — предзаказ не может быть выполнен, с причиной.
- XLOGIC_PREORDER_MANAGER — менеджеру: новые предзаказы в заказе со ссылками на заказ и реестр.
Письмо покупателю уходит на e-mail, указанный при оформлении заказа, а если его нет — на e-mail пользователя.
8. Удаление модуляПри удалении товарам кампаний возвращается их собственная настройка «Разрешить покупку при отсутствии товара», и покупки перестают оформляться как предзаказы. Флажок «Сохранить кампании, предзаказы, почтовые шаблоны и настройки» оставляет данные: после повторной установки кампании продолжат работу.
Что нужно знать- Пока кампания принимает предзаказы, модуль включает у её товаров «Разрешить покупку при отсутствии товара». Не меняйте эту настройку у товаров кампании вручную: после окончания приёма модуль вернёт товару прежнее значение.
- При поступлениях по росту остатка агент видит изменение остатка между двумя проверками. Если за это время товар и поступил, и был отгружен, поступлением считается только разница. Поэтому держите период проверки небольшим и переведите агенты на cron — или ведите поступления документами складского учёта.
- Если остатки поступают в каталог порциями при обмене с 1С или складом, каждая порция распределяется по очереди при очередной проверке.
- Резерв с позиции заказа, которая потеряла товар, снимается агентом при ближайшем запуске; при отклонении и снятии с очереди в реестре — сразу.
- Отклонение предзаказа не отменяет заказ и не возвращает оплату.
- Ошибки модуля записываются в журнал событий («Настройки > Инструменты > Журнал событий», тип «Предзаказы: ошибка») и не прерывают оформление заказа.
Сайт: xlogic.ru
Время работы: пн–пт с 10:00 до 19:00 (МСК, UTC+3).
Время реакции на заявку: в течение 1 рабочего дня
Установите этот модуль прямо сейчас!
Для этого укажите адрес сайта:
Подтвердите что сама лицензия у вас куплена
