Страница «Мои заказы» — это витрина истории покупок в личном кабинете. В 1С-Битрикс её собирает комплексный компонент bitrix:sale.personal.order, который отвечает за список заказов, детальную карточку, отмену и повтор. Разберём, как он работает и что настраивать, чтобы страница была быстрой, понятной покупателю и корректно связанной с оплатой и корзиной.
Что показывает страница «Мои заказы»
Страница агрегирует все заказы авторизованного пользователя: номер, дату, сумму, текущий статус, состояние оплаты и доставки. Для покупателя это основной инструмент самообслуживания — узнать, оплачен ли заказ, отслеживать доставку, повторить покупку или отменить оформленный, но ещё не собранный заказ.
Технически данные берутся из модуля sale — таблиц заказов, оплат (payment) и отгрузок (shipment). Компонент фильтрует записи по текущему USER_ID, поэтому чужие заказы физически недоступны: даже подставив ID в URL, покупатель увидит только свои. Это стандартная и важная гарантия приватности.
bitrix:sale.personal.section, где страница заказов идёт как один из разделов SEF-навигации наряду с профилями, подписками и внутренним счётом.Компонент sale.personal.order и его страницы
Комплексный компонент bitrix:sale.personal.order работает в SEF-режиме и внутри маршрутизирует запрос на один из трёх простых компонентов-страниц:
sale.personal.order.list— список заказов с постраничной навигацией и фильтром;sale.personal.order.detail— детальная карточка одного заказа: состав корзины, оплаты, отгрузки, история статусов;sale.personal.order.cancel— форма отмены заказа с указанием причины.
Каждой странице соответствует свой URL-шаблон в настройках SEF. Разделение удобно тем, что можно кастомизировать шаблон только детальной карточки, не трогая список, и наоборот. Шаблоны лежат в /bitrix/components/bitrix/sale.personal.order.list/templates/ и соседних папках; для правок копируйте их в свой шаблон сайта, а не редактируйте в системной директории.
Ключевые параметры настройки
При размещении компонента через визуальный редактор задаются пути между страницами и режим ЧПУ. Основные параметры:
| Параметр | Назначение |
|---|---|
SEF_MODE | Включение ЧПУ и шаблоны URL для list / detail / cancel |
PATH_TO_BASKET | Путь к корзине — куда ведёт кнопка «Повторить заказ» |
PATH_TO_PAYMENT | Страница оплаты для кнопки «Оплатить» |
ORDERS_PER_PAGE | Количество заказов на страницу списка |
HISTORIC_STATUSES | Статусы, при которых заказ считается завершённым (архивным) |
ALLOW_INNER | Показ оплаты с внутреннего счёта покупателя |
Важно согласовать SEF_FOLDER компонента с физическим расположением страницы (обычно /personal/orders/). Если пути к корзине или оплате указаны неверно, кнопки действий будут вести в никуда — это самая частая ошибка при переносе кабинета на новый шаблон.
Статусы, оплата и отгрузка
Отображение состояния заказа строится на трёх независимых осях, и их важно не путать:
- Статус заказа — управляемый в админке справочник (по умолчанию
N«Принят» иF«Выполнен», плюс любые ваши промежуточные). Настраивается в Магазин → Настройки → Статусы заказа. - Оплата — флаг
PAYEDна объекте payment; заказ может иметь несколько оплат. - Отгрузка — флаг
DEDUCTED/ разрешение отгрузкиALLOW_DELIVERYна объекте shipment.
В шаблоне списка эти значения обычно выводятся цветными бейджами. Логика «оплачен» и «доставлен» больше не завязана на единственное поле заказа, как было в старых версиях, — в актуальной объектной модели \Bitrix\Sale\Order оплата и доставка вынесены в отдельные коллекции. Это стоит учитывать при доработке шаблона.
Отмена и повтор заказа
Отмену обрабатывает страница sale.personal.order.cancel. Покупатель указывает причину, заказу проставляется флаг CANCELED = Y, а компонент выполняет проверку прав: отменить можно только собственный и, как правило, ещё не отгруженный заказ. Разрешать ли отмену на поздних этапах — вопрос бизнес-логики, которую задают через список отменяемых статусов.
Повтор заказа копирует состав старой корзины в текущую и перебрасывает покупателя на PATH_TO_BASKET. Механизм полезен для регулярных закупок в B2B. Тонкий момент: товары могли подорожать, смениться в остатках или вовсе исчезнуть из каталога — при повторе Битрикс подставляет актуальные цены и наличие, а недоступные позиции отсекает. Стоит явно предупреждать покупателя, что корзина пересобрана по текущим условиям.
Кастомизация и производительность
Дизайн страницы правится через переопределённый шаблон компонента в /local/templates/. Для добавления собственных данных (например, трек-номера или ссылки на закрывающие документы) используйте arResult в result_modifier.php, а не хардкод в template.php — так проще поддерживать код при обновлениях.
Список заказов — потенциально тяжёлая страница: для постоянного клиента это десятки записей с подгрузкой корзин и свойств. Рекомендации по скорости:
- ограничьте
ORDERS_PER_PAGEразумным числом (10–20) и включите постраничную навигацию; - не запрашивайте полный состав корзины в списке — детали грузите на карточке заказа;
- учтите, что персональные страницы не кэшируются композитным сайтом целиком — оптимизируйте сами запросы к
sale.
Итог
Страница «Мои заказы» на компоненте bitrix:sale.personal.order — это связка из списка, детальной карточки, отмены и повтора, где всё держится на корректных путях между страницами и правильном отображении трёх независимых состояний: статуса, оплаты и отгрузки. Аккуратная настройка SEF, разумная пагинация и чистая кастомизация через result_modifier.php дают покупателю удобный и быстрый кабинет.
Мы в B2Bsite проектируем и дорабатываем личные кабинеты на 1С-Битрикс: настраиваем страницу заказов, привязываем оплату и доставку, синхронизируем статусы с 1С и ускоряем тяжёлые страницы. Если нужен работающий и понятный раздел «Мои заказы» — поможем собрать его под вашу логику.
Частые вопросы
Каким компонентом делается страница «Мои заказы»?
Комплексным компонентом bitrix:sale.personal.order. В SEF-режиме он маршрутизирует запросы на страницы списка, детальной карточки, отмены и повтора заказа.
Может ли покупатель увидеть чужие заказы, подставив ID в адрес?
Нет. Компонент фильтрует заказы по ID авторизованного пользователя, поэтому чужой заказ не откроется даже при прямом указании его номера в URL.
Чем статус заказа отличается от признака оплаты?
Статус — это управляемый справочник этапов обработки. Оплата (флаг PAYED) и отгрузка — отдельные состояния. Заказ может быть выполнен, но не оплачен, и наоборот.
Как работает кнопка «Повторить заказ»?
Она копирует состав прежнего заказа в текущую корзину и перенаправляет на страницу корзины. Цены и наличие подставляются актуальные, недоступные товары отсекаются.
Можно ли запретить отмену заказа после отгрузки?
Да. Логика отмены на sale.personal.order.cancel опирается на статусы: настройте, при каких статусах отмена доступна, и на поздних этапах кнопка отмены пропадёт.
Где править внешний вид страницы?
Скопируйте шаблоны компонентов sale.personal.order.list и .detail в свой шаблон сайта в /local/templates/ и правьте там. Системные файлы в /bitrix/ трогать нельзя.
Почему список заказов медленно грузится?
Обычно из-за большого числа заказов и подгрузки состава корзин в списке. Уменьшите ORDERS_PER_PAGE, выносите детали на карточку и оптимизируйте запросы к модулю sale.
Кэшируется ли страница «Мои заказы»?
Персональные страницы не отдаются из общего композитного кэша целиком, так как содержат данные конкретного пользователя. Оптимизировать нужно сами запросы к базе.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.