Написал новую статью о том как сделать собственный компонент заказа: https://verstaem.com/lessons/making-sa...r-ajax-d7/ Статья получилась большая, с большим количеством форматирования, поэтому полный текст по ссылке
Штатный bitrix:sale.order.ajax очень сложно кастомизировать. Я думаю никто не будет со мной спорить. Битриксовцы подумали над процедурой заказа, о том как заказ должен выглядеть в идеале, а потом реализовали придуманную процедуру в продукте. Все сделано хорошо, однако если у заказчика представления по процедуре заказа отличаются от штатной реализации, то изменить шаблон компонента bitrix:sale.order.ajax практически нереально. Собственно сами битриксовцы на одной из конференций предложили писать отдельный компонент заказа. В этой статье я покажу один из вариантов по реализации такого компонента. И может быть попутно поясню непонятные моменты по созданию заказа на API. Само API по созданию заказа получилось прям отличное, несмотря на сложности кастомизации sale.order.ajax. Если вдруг разработчики читают эту статью, то спасибо вам, прямо приятно работать
По большей части вся статья только про серверный код.
Содержимое статьи: 1 Компонент 1.1 Создание виртуального заказа 1.2 Добавляем свойства заказа 1.3 Добавляем отгрузку (службу доставки) 1.4 Добавляем платежную систему 1.5 Подключение шаблона и сохранение 2 Шаблон компонента 2.1 Корзина 2.2 Работа со свойствами 2.2.1 Форма 2.2.2 Отображаемое местоположение 2.2.3 Получение свойства по коду 2.3 Прочие возможности 2.3.1 Стоимость доставки и заказа 2.3.2 Выбранная служба доставки 2.3.3 Выбранная система оплаты 2.4 Итого по шаблону 3 Добавляем ООП 3.1 Расширяем корзину 3.2 Расширяем заказ 3.3 Итого по ООП 4 Прикручиваем ajax 4.1 Actions компонента 4.2 Поиск местоположений 4.3 Метод расчета стоимости доставки 5 Общий итог
TL;DR При каждом вызове компонента, неважно аяксом или на странице создаем объект заказа. По необходимости добавляем новые методы в объекты корзины и заказа. В шаблоне компонента пользуемся объектом заказа напрямую, $arResult скорее всего не пригодится. При ответе аяксом возвращаем json где передаем чистые данные + сразу html нужного куска шаблона.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».