-15%Скидка 15% на разработку сайта или магазина при старте до конца месяца

Кастомизация оформления заказа (sale.order.ajax)

Кастомизация компонента оформления заказа sale.order.ajax в 1С-Битрикс: шаблон, свойства, события

Оформление заказа — это последний метр воронки, где отваливается больше всего готовых покупателей. Лишнее обязательное поле, недоступный нужный способ доставки, непонятный шаг — и корзина брошена уже на кассе. Поэтому форму заказа почти всегда кастомизируют под свой сценарий. Проблема в том, что делают это часто неправильно: правят ядро, хардкодят поля в шаблоне — и теряют все доработки при первом же обновлении.

Этот материал — практическое how-to по кастомизации компонента sale.order.ajax в 1С-Битрикс: как устроен компонент, почему нельзя трогать ядро, как копировать шаблон, добавлять свойства заказа, ограничивать доставку и оплату и менять логику через события так, чтобы кастомизация пережила обновления. Если форма заказа сложная или тормозит, точечно её приводит в порядок аудит и оптимизация.

Коротко

  • sale.order.ajax — штатный AJAX-компонент оформления заказа; кастомизируют его через шаблон и события, не через ядро.
  • Файлы в /bitrix/components/bitrix/ править нельзя — они перезаписываются при обновлении.
  • Доп. поля добавляют как свойства заказа, а логику меняют обработчиками событий D7 (например, OnSaleOrderBeforeSaved).
  • Ограничения доставки и оплаты держат на сервере, а не прячут способы через JavaScript в шаблоне.

Зачем вообще трогать оформление заказа

Стандартная форма оформления заказа в 1С-Битрикс универсальна, а значит, никому не подходит идеально. Универсальность означает много полей и шагов «на все случаи», тогда как конкретному магазину нужен свой короткий и понятный путь. Каждое лишнее действие на кассе стоит части конверсии, поэтому форму подгоняют под реальный сценарий покупки.

Типовые причины кастомизации:

Как устроен sale.order.ajax

Чтобы кастомизировать компонент грамотно, надо понимать его устройство. sale.order.ajax — это комплексный компонент, который отвечает за всю страницу оформления и работает через AJAX: при любом изменении (смена доставки, региона, количества) он пересчитывает заказ и обновляет форму без перезагрузки страницы.

Внутри он оперирует несколькими сущностями:

Логика (component.php) собирает эти данные и отдаёт их в шаблон (template.php), а фронтенд обеспечивает AJAX-пересчёт. Понимание этого разделения — ключ к правильной кастомизации: верстку и вывод меняют в шаблоне, справочные данные — в настройках, а бизнес-логику — в событиях, не трогая саму логику компонента в ядре.

Как задача превращается в результат Задачачто решаемПодходкак делаемРеализацияна 1С-БитриксПроверкаметрики, тестыРезультатэффект для бизнеса
Схема: любая доработка проходит путь от постановки задачи к реализации на 1С-Битрикс и проверке по метрикам — важен измеримый результат, а не факт правки.

Главное правило: не править ядро

Самая дорогая ошибка — открыть файлы компонента в /bitrix/components/bitrix/sale.order.ajax/ и начать их править. Всё в этой папке принадлежит ядру и перезаписывается при обновлении. После ближайшего апдейта все правки бесследно исчезнут, а магазин может сломаться. Это правило не имеет исключений.

Запомните границу: всё в /bitrix/components/bitrix/ и /bitrix/modules/ — это ядро, его не трогают. Ваши изменения живут в шаблоне сайта, в папке /local/ и в обработчиках событий. Нарушение этой границы = потеря работы при каждом обновлении.

Правильная кастомизация распределяется по трём безопасным местам: внешний вид и вывод — в скопированном шаблоне компонента; справочные данные (свойства, ограничения) — в настройках; бизнес-логика — в обработчиках событий. Ни одно из этих мест не затрагивается обновлением ядра, поэтому доработки сохраняются.

Копирование шаблона компонента

Кастомизация вывода начинается с копирования шаблона компонента из ядра в своё пространство. Порядок такой:

  1. Скопируйте шаблон. Возьмите штатный шаблон компонента и перенесите его в свой шаблон сайта или в /local/templates/, не трогая оригинал в /bitrix/.
  2. Правьте копию. Меняйте вывод, разметку и порядок блоков только в своей копии шаблона.
  3. Держите структуру. Сохраняйте ожидаемые компонентом имена полей и точки AJAX, чтобы не сломать пересчёт.
  4. Выносите стили и скрипты. CSS и JS формы держите в ассетах шаблона, а не вперемешку с логикой.

Папка /local/ — предпочтительное место для кастомизаций: она отделена от ядра и удобна для переноса между окружениями и версионирования. Так шаблон формы заказа становится частью вашего кода, который вы контролируете, а не частью обновляемого ядра.

Свойства заказа вместо хардкода

Частая ошибка — добавлять новые поля прямо в шаблон формы как обычный HTML. Такое поле не сохранится в заказ, не уйдёт в 1С и не будет доступно в админке. Правильный путь — заводить дополнительные данные как свойства заказа в настройках торгового каталога.

Тогда значение автоматически сохраняется в заказ, отображается в админке и передаётся в 1С при обмене CommerceML. Это принципиально важно для сценариев, где данные заказа должны попасть в учётную систему, — например, реквизиты юрлица для B2B. Отдельные свойства покупателя корректно доедут до 1С только если заведены как свойства заказа, а не как поля в вёрстке.

Ограничения доставки и оплаты

Показывать всем все способы доставки и оплаты — плохо: клиент выбирает недоступный ему вариант и упирается в ошибку. Правильно — ограничивать список под условия заказа, и делать это на стороне сервера, а не пряча кнопки в JavaScript.

В 1С-Битрикс для этого есть штатный механизм ограничений:

Держать эту логику на сервере критично: то, что спрятано только на фронтенде через JavaScript, легко обходится и не защищает от некорректных заказов. Серверные ограничения гарантируют, что недоступный способ не пройдёт, даже если клиент попробует его подставить. Для сложных интеграционных сценариев расчёт доставки иногда выносят во внешние сервисы через REST и вебхуки с учётом безопасности.

События заказа и обработчики

Когда нужно вмешаться в саму логику оформления — пересчитать что-то, проверить, отправить данные во внешнюю систему, — используют события, а не правку компонента. Битрикс на архитектуре D7 генерирует события на этапах жизни заказа, и вы подписываете на них свой код.

Так бизнес-логика живёт вне ядра и вне верстки: она переживает обновления, легко тестируется и не смешивается с выводом. Это тот же подход к работе с данными и сущностями, что и в D7 ORM. Если логики много, её оформляют как собственный модуль на Битрикс с понятной структурой, а не как россыпь правок в init.php.

Одностраничное оформление и UX

Помимо технической корректности, форма заказа должна быть удобной — от этого напрямую зависит конверсия. Одна из главных UX-развилок: одностраничное или многошаговое оформление.

Выбор делают по аудитории и сложности заказа, а не по моде, и обязательно проверяют на реальной конверсии. Красивая одностраничная форма, которая не собирает нужные для B2B данные, хуже, чем чуть более длинная, но рабочая.

Производительность формы заказа

Форма заказа пересчитывается при каждом изменении, поэтому её производительность заметна пользователю напрямую. Если каждый AJAX-пересчёт тянет тяжёлые запросы и грузит много скриптов, оформление ощутимо тормозит именно там, где клиент уже готов платить.

Скорость оформления — это скорость последнего шага воронки, где цена задержки максимальна. Оптимизация формы заказа часто даёт прямой прирост завершённых заказов.

Тестирование и деплой кастомизации

Оформление заказа — критичный узел: ошибка здесь означает потерянные заказы или неверные данные в учёте. Поэтому кастомизацию не выкатывают сразу на прод.

  1. Тестовый стенд. Все правки обкатывают на копии данных, а не на боевом магазине.
  2. Проверка сценариев. Тестируют оформление для разных типов плательщиков, регионов, способов доставки и оплаты.
  3. Проверка обмена. Убеждаются, что свойства заказа корректно уходят в 1С.
  4. Контролируемый деплой. Выкладка через понятный процесс с бэкапом и возможностью отката.

Управляемая выкладка правок формы заказа — часть общей культуры CI/CD и деплоя на Битрикс. Кастомизацию, живущую в /local/ и в событиях, легко переносить между стендом и продом без ручного копирования файлов.

Частые ошибки кастомизации

Чек-лист доработки оформления

  1. Шаблон скопирован. Кастомизация вывода — в своём шаблоне или /local/, ядро не тронуто.
  2. Поля — свойства заказа. Доп. данные заведены как свойства, привязаны к плательщику, уходят в 1С.
  3. Ограничения на сервере. Доставка и оплата ограничены штатным механизмом, а не JavaScript.
  4. Логика в событиях. Вмешательство в заказ — через обработчики D7 в модуле или init.php.
  5. UX выверен. Одно- или многошаговое оформление выбрано по аудитории, минимум обязательных полей.
  6. Форма быстрая. Справочники кэшируются, лишние запросы и скрипты убраны.
  7. Обмен проверен. Свойства заказа корректно доходят до 1С.
  8. Деплой безопасен. Правки обкатаны на стенде, выложены с бэкапом и откатом.

Вывод

Кастомизация оформления заказа на 1С-Битрикс — это работа с последним и самым важным шагом воронки. Делать её нужно правильно: копировать шаблон в /local/, добавлять данные через свойства заказа, ограничивать доставку и оплату штатным механизмом на сервере и менять логику через события D7. Тогда доработка переживёт обновления, а не рассыплется при первом апдейте.

Ключевая граница проста: ядро не трогают, всё живёт в шаблоне, настройках и обработчиках. Соблюдайте её, обкатывайте правки на стенде и следите за скоростью пересчёта — и форма заказа станет и удобной для клиента, и обновляемой для вас, и корректной для учёта в 1С.

Частые вопросы

Что такое sale.order.ajax и зачем его кастомизируют?

Это штатный компонент 1С-Битрикс, отвечающий за страницу оформления заказа: он собирает корзину, свойства покупателя, службы доставки и системы оплаты и оформляет заказ через AJAX без перезагрузки страницы. Кастомизируют его, потому что стандартная форма редко совпадает с нужным сценарием: где-то надо убрать лишние поля, где-то добавить свойства, ограничить доставку по региону или изменить порядок шагов.

Можно ли править файлы компонента напрямую в bitrix?

Категорически нет. Всё в папке /bitrix/components/bitrix/ перезаписывается при обновлении, и ваши правки исчезнут. Кастомизацию делают только через копирование шаблона компонента в свой шаблон сайта (папку local или /bitrix/templates/), а логику меняют через события и обработчики, а не редактированием ядра. Это главное правило безопасной доработки.

Как добавить своё поле в форму заказа?

Дополнительные данные покупателя добавляют как свойства заказа в настройках торгового каталога (тип заказа и свойства), а не хардкодят в шаблоне. Свойство можно сделать обязательным, привязать к типу плательщика и выводить в нужном месте формы через шаблон компонента. Тогда значение автоматически сохраняется в заказ и уходит в 1С при обмене, а не теряется.

Как ограничить доставку или оплату по условиям?

Через штатные ограничения служб доставки и систем оплаты: их привязывают к сумме заказа, весу, местоположению, типу плательщика. Для нестандартной логики (например, самовывоз только для своего города) используют пользовательские ограничения и обработчики событий оформления. Прятать способы доставки прямо в шаблоне через JavaScript ненадёжно — логику держат на стороне сервера.

Как изменить логику заказа, не ломая обновляемость?

Через систему событий D7. Битрикс генерирует события на этапах создания и сохранения заказа (например, OnSaleOrderBeforeSaved), и в обработчик подписывают свой код в отдельном модуле или в init.php. Так бизнес-логика живёт вне шаблона и вне ядра, переживает обновления и не смешивается с версткой. Это правильный способ вмешаться в процесс оформления.

Почему кастомная форма заказа часто тормозит?

Обычно из-за тяжёлого шаблона с лишними запросами на каждый AJAX-пересчёт, отсутствия кэширования справочных данных и подключения множества скриптов. Форма заказа пересчитывается при каждом изменении (смена доставки, региона, количества), и если каждый пересчёт тянет тяжёлые запросы, страница ощутимо тормозит. Оптимизируют за счёт кэша, уменьшения запросов и аккуратного фронтенда.

Стоит ли делать одностраничное оформление заказа?

Часто да: одностраничная форма (все шаги на одном экране) снижает число отвалов по сравнению с многошаговой. sale.order.ajax это поддерживает. Но важно не перегрузить экран: для сложных B2B-сценариев с юрлицами и договорами иногда логичнее разбить на шаги. Решение принимают по аудитории и сложности заказа, а не по моде, и проверяют на реальной конверсии.

Как не потерять кастомизацию при обновлении Битрикс?

Держать все правки вне ядра: шаблон компонента — в своём шаблоне сайта или в local, логику — в событиях и модулях, конфигурацию — в настройках, а не в коде. Тогда обновление ядра и компонентов не затрагивает ваши изменения. Дополнительно перед обновлением делают бэкап и обкатывают его на тестовом стенде, чтобы поймать несовместимости заранее.

Поделиться:

Нужно доработать форму заказа без потери обновляемости?

Кастомизируем sale.order.ajax правильно: свойства заказа, ограничения доставки и оплаты, логика через события. Рассчитаем работу по вашему сценарию.

Аудит и оптимизация 1С

Игорь Воскресенский

Команда B2Bsite. С 2014 года разрабатываем интернет-магазины и порталы на 1С-Битрикс: кастомизируем оформление заказа, доставку и оплату с сохранением обновляемости и обмена с 1С.

← Все статьи блога