Оформление заказа в интернет-магазине на 1С-Битрикс собирает штатный компонент sale.order.ajax. Он отвечает за корзину-подтверждение, ввод свойств, выбор доставки и оплаты — и делает это на одной AJAX-странице. Разберём, как его подключить и настроить правильно.
Что такое sale.order.ajax
bitrix:sale.order.ajax — актуальный компонент оформления заказа из модуля Интернет-магазин (sale). Именно он используется в готовых решениях линейки «Аспро», «Крайт», а также в стандартном шаблоне bitrix24 и eshop. В отличие от старого пошагового мастера, он выводит все блоки заказа — покупатель, доставка, оплата, свойства — на одной странице и перерисовывает их через AJAX без полной перезагрузки.
Компонент работает поверх содержимого корзины (basket): товары к оформлению он берёт из текущей корзины пользователя, а на выходе создаёт объект заказа (\Bitrix\Sale\Order) и передаёт управление на страницу оплаты или в личный кабинет. Стандартная точка размещения — страница /personal/order/make/.
Подключение на странице
Разместить компонент можно двумя способами. Первый — через визуальный редактор: перетащить компонент «Оформление заказа (AJAX)» из вкладки «Магазин» на страницу. Второй — вставить вызов в PHP-код шаблона страницы напрямую:
$APPLICATION->IncludeComponent(
"bitrix:sale.order.ajax",
"", // шаблон, например .default или ваш кастомный
array(
"PATH_TO_BASKET" => "/personal/cart/",
"PATH_TO_PAYMENT" => "/personal/order/payment/",
"ALLOW_AUTO_REGISTER" => "Y",
"DELIVERIES_PER_PAGE" => "9",
"PAY_SYSTEMS_PER_PAGE" => "9",
),
false
);Обязательное условие — на сайте должны быть подключены модули sale и catalog, а у пользователя непустая корзина. Если корзина пуста, компонент выводит соответствующее сообщение и не даёт перейти к заказу.
- PATH_TO_BASKET — куда возвращать по ссылке «Изменить корзину»;
- PATH_TO_PAYMENT — страница с компонентом
sale.order.paymentдля оплаты после создания заказа; - PATH_TO_AUTH — страница авторизации для незарегистрированных.
Ключевые параметры
Настройки компонента управляют логикой оформления, а не только внешним видом. Разберём те, что влияют на поведение чаще всего.
| Параметр | Назначение |
|---|---|
ALLOW_AUTO_REGISTER | Автоматически регистрировать покупателя по e-mail/телефону при оформлении. |
SEND_NEW_USER_NOTIFY | Отправлять ли письмо с данными о созданной учётной записи. |
DELIVERY_NO_AJAX | Отключить AJAX-подгрузку служб доставки (для сложных калькуляторов). |
DELIVERY_TO_PAYSYSTEM | Порядок расчёта: доставка зависит от оплаты или наоборот. |
USE_PREPAYMENT | Включение предоплаты через агрегаторы (PayPal express и т. п.). |
DISABLE_BASKET_REDIRECT | Оставаться на странице заказа при пустой корзине вместо редиректа. |
Отдельно стоит параметр COMPATIBLE_MODE — режим совместимости со старым ядром продаж (D7 против устаревшего API). На новых проектах его держат в N.
Свойства, доставка и оплата в один шаг
Главная особенность sale.order.ajax — оформление на одной странице. Все блоки заказа рендерятся сразу, а пересчёт происходит через BX.ajax при каждом изменении: выбрал город — пересчиталась доставка, выбрал доставку — обновился список платёжных систем и итоговая сумма.
Порядок и взаимозависимость блоков задаёт параметр DELIVERY_TO_PAYSYSTEM. Значение d2p означает «сначала доставка, потом оплата» (оплата фильтруется по выбранной доставке), p2d — наоборот. Это важно, если, например, «Наложенный платёж» должен быть доступен только для курьерской доставки, а не для самовывоза.
Свойства заказа (ФИО, телефон, адрес, комментарий) берутся из настроек Магазин → Настройки → Свойства заказа и распределяются по группам свойств. Компонент сам выводит поля согласно их привязке к типам плательщика (физлицо/юрлицо) и порядку сортировки.
ЧПУ и SEF-режим
Компонент поддерживает человекопонятные URL. Включите параметр SEF_MODE = Y и задайте шаблоны путей в блоке SEF_URL_TEMPLATES. Тогда шаги и служебные страницы получат читаемые адреса вместо GET-параметров.
index—#SECTION_ID#/или корень оформления;- страница успешного оформления и вывода деталей заказа;
- обработка внешних платёжных систем (возврат от эквайринга).
SEF удобно комбинировать с ЧПУ каталога, но требует корректного правила в urlrewrite.php. Если после включения SEF страница оформления отдаёт 404, первым делом проверьте правило перенаправления и совпадение PATH_TO_ORDER с реальным адресом страницы.
Отличие от sale.order.full
В экосистеме Битрикса встречаются два похожих компонента, и их часто путают.
| Критерий | sale.order.ajax | sale.order.full |
|---|---|---|
| Интерфейс | Одна страница, AJAX-пересчёт | Пошаговый мастер, перезагрузки |
| Статус | Актуальный, развивается | Устаревший, для совместимости |
| Кастомизация | Шаблоны + result_modifier, JS-события | Ограниченная, старый API |
| Рекомендация | Все новые магазины | Только legacy-проекты |
Практический вывод простой: для новых магазинов и редизайнов используйте sale.order.ajax. К sale.order.full обращаются лишь при сопровождении старых сайтов, где переезд на AJAX-оформление ещё не сделан. Оба работают с одним ядром продаж, поэтому сами заказы, статусы и свойства между ними совместимы.
Итог
sale.order.ajax — стандартный и рекомендуемый способ оформления заказа в 1С-Битрикс: одна страница, живой пересчёт доставки и оплаты, гибкие свойства и поддержка SEF. Для запуска достаточно подключить компонент, указать пути и связать location-свойство со службами доставки. Тонкости начинаются при кастомизации шаблона, интеграции нестандартных калькуляторов доставки и обмене заказами с 1С.
Если нужно собрать оформление заказа под задачи вашего магазина — настроить свойства, доставку и оплату, ускорить AJAX-пересчёт или связать заказы с учётной системой — мы поможем. Занимаемся разработкой и интеграцией магазинов на Битрикс под ключ.
Частые вопросы
Какой компонент отвечает за оформление заказа в 1С-Битрикс?
Штатный компонент bitrix:sale.order.ajax из модуля «Интернет-магазин». Он выводит корзину-подтверждение, свойства покупателя, доставку и оплату на одной AJAX-странице.
Чем sale.order.ajax отличается от sale.order.full?
sale.order.ajax оформляет заказ на одной странице с AJAX-пересчётом и является актуальным. sale.order.full — устаревший пошаговый мастер с перезагрузками, его оставляют только на старых проектах.
Почему при выборе города не считается доставка?
Чаще всего location-свойство заказа не связано со службами доставки. Проверьте привязку местоположения в настройках свойства и в настройках самих служб доставки.
Можно ли сделать так, чтобы оплата зависела от доставки?
Да, за это отвечает параметр DELIVERY_TO_PAYSYSTEM. Значение d2p фильтрует платёжные системы по выбранной доставке, p2d делает наоборот.
Как включить ЧПУ на странице оформления заказа?
Включите параметр SEF_MODE = Y и настройте шаблоны в SEF_URL_TEMPLATES, а также правило в urlrewrite.php. SEF влияет на внешние страницы: детали заказа, оплату и возврат от платёжной системы.
Нужно ли регистрировать покупателя при оформлении?
Не обязательно. Параметр ALLOW_AUTO_REGISTER = Y автоматически создаёт учётную запись по e-mail или телефону, а оформление без регистрации настраивается отдельно.
Какие модули нужны для работы компонента?
Должны быть установлены и подключены модули sale (Интернет-магазин) и catalog (Торговый каталог). Также у пользователя должна быть непустая корзина.
Как кастомизировать форму оформления заказа?
Скопируйте шаблон компонента в свой сайтовый шаблон и правьте template.php, result_modifier.php и JS-обработчики AJAX-событий. Логику ядра при этом менять не нужно.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.