Когда пользователь доходит до оформления заказа, каждый дополнительный шаг отсеивает 5–10% покупателей?
Многостраничный checkout из 3–4 этапов даёт гарантированную потерю 15–25% клиентов на пути к оплате. Одностраничный режим ONE_PAGE компонента bitrix:sale.order.ajax решает эту проблему: все блоки — данные покупателя, доставка, оплата — отображаются на одной странице и обновляются через AJAX без перезагрузок. Мы реализовали десятки таких checkout'ов для проектов с каталогами от 50 000 до 500 000 товаров и знаем все подводные камни. Настройка одностраничного оформления заказа (checkout) в 1С-Битрикс требует не просто включения режима, но и доработок — сохранения данных в localStorage, кэширования расчётов доставки, обработки таймаутов AJAX-запросов. Подробнее о технологии AJAX можно прочитать в Wikipedia. Официальная документация по компоненту — dev.1c-bitrix.ru. Закажите настройку checkout и сократите отвал на 15% прямо сейчас.
Подключение режима ONE_PAGE
В параметрах компонента на странице оформления заказа:
$APPLICATION->IncludeComponent(
'bitrix:sale.order.ajax',
'',
[
'DELIVERY_MODE' => 'ONE_PAGE',
'SHOW_DELIVERY_PICTURE' => 'Y',
'SHOW_DELIVERY_DESCRIPTION' => 'N',
'PAY_FROM_ACCOUNT' => 'N',
'SHOW_VAT' => 'N',
]
);
В режиме ONE_PAGE компонент при изменении любого поля (смена города, выбор службы доставки) отправляет AJAX-запрос и обновляет зависимые блоки — стоимость доставки, доступные платёжные системы.
Настройка AJAX-обновления блоков
В шаблоне одностраничного checkout за AJAX-обновление отвечает объект orderAjax — он инициализируется в order_ajax.php шаблона. При изменении поля «Город» вызывается orderAjax.updateDelivery(), которая:
- Запрашивает доступные службы доставки для указанного города через
\Bitrix\Sale\Delivery\Services\Manager::getRestrictedObjectsList() - Рассчитывает стоимость каждой через
\Bitrix\Sale\Delivery\Services\Base::calculate() - Обновляет блок доставки без перезагрузки страницы
Если расчёт занимает больше 1–2 секунд (например, внешний API СДЭК медленно отвечает) — пользователь видит крутящийся лоадер. Это нормально, но стоит добавить таймаут и кеширование расчётов по коду города и весу корзины.
Как ускорить одностраничный checkout?
Самое узкое место — расчёт доставки через внешние сервисы. Мы используем кэширование с ключом {city_id}_{weight}_{price} и TTL 30 минут. Это снизило время загрузки checkout на 40% на одном из проектов. Дополнительно внедряем отложенную загрузку блоков оплаты — они подгружаются только после выбора доставки. Сравнение режимов: ONE_PAGE лучше MULTI_STEP, так как сокращает отвал на 10–15% и ускоряет оформление в 2-3 раза.
Почему стандартный checkout теряет данные при F5?
Компонент не хранит введённые данные ни в сессии, ни в localStorage. При перезагрузке страницы все поля становятся пустыми — для пользователя это катастрофа. Решение: добавить обработчик onchange на все поля формы, который пишет данные в localStorage, и при DOMContentLoaded восстанавливать их. Реализация занимает 2–3 часа и dramatically улучшает UX.
Сравнение режимов: ONE_PAGE vs MULTI_STEP
| Параметр | ONE_PAGE | MULTI_STEP |
|---|---|---|
| Количество страниц | 1 | 3–4 |
| Обновление | AJAX | Перезагрузка |
| Отвал пользователей | 5–10% | 15–25% |
| Время до оплаты | 30–60 сек | 60–120 сек |
| Сложность настройки | Средняя | Низкая |
| Сохранение данных | Требуется доработка | Встроено |
ONE_PAGE сокращает количество страниц в 3–4 раза и уменьшает отвал на 10–15% по сравнению с MULTI_STEP.
Подробнее о кэшировании расчётов доставки
Кэширование реализуется через `Bitrix\Main\Data\Cache`. Ключ формируется как `delivery_calc_{city_id}_{weight}_{price}`. TTL устанавливается 30 минут. Это позволяет сократить время ответа на 40% и снизить нагрузку на внешние API.Типичные проблемы и их решения
| Проблема | Решение |
|---|---|
| Потеря данных при F5 | Сохранение полей в localStorage |
| Медленные расчёты доставки | Кэширование по городу/весу |
| Конфликт с SEO-плагинами | noindex страницы checkout |
| Некорректные несколько отгрузок | Кастомная разработка подсекций |
Что входит в работу
- Аудит текущего checkout и конфигурации компонента.
- Переключение на режим ONE_PAGE с настройкой шаблона под дизайн.
- Реализация localStorage-сохранения данных формы.
- Кэширование расчётов доставки (по городу, весу, цене).
- Доработка AJAX-логики (таймауты, лоадеры, исключения).
- Тестирование на корзинах различного объёма (до 500+ товаров).
- Передача документации и доступов.
Сроки настройки
Переключение на режим ONE_PAGE и настройка шаблона — от 1 до 2 рабочих дней. Добавление localStorage-сохранения, кэширования расчётов доставки и доработок AJAX-логики — от 2 до 4 дней. Сроки уточняются после анализа вашего проекта.
Компания и опыт
Мы занимаемся разработкой на 1С-Битрикс и Битрикс24 более 7 лет. Реализовали 40+ checkout'ов для интернет-магазинов с товарооборотом до 2 млн ₽/мес. Гарантируем стабильность решения: предоставляем страховку от сбоев — если после внедрения checkout работает некорректно, исправляем бесплатно в течение 30 дней. Средняя экономия клиентов составляет существенную сумму за счёт снижения отвала. Получите консультацию по вашему проекту — свяжитесь с нами для оценки checkout.







