Как лучше исправить обновление стоимости заказа при удалении товара из объединенного с корзиной оформления заказа?

Ссылка скопирована
1 ответ

Сейчас ситуация такая: при удалении товара из объединенной страницы корзины и оформления заказа не пересчитывает результирующий сумму заказа
Кто знает как исправить?

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Web-разработка Ответ

В 1С-Битрикс стоимость заказа при удалении товара из объединённой корзины и оформления заказа обычно не обновляется из-за того, что удаление товара происходит отдельно, а пересчёт order/ajax-компонента не вызывается. Нужно не просто удалить позицию из basket, а инициировать штатный refresh оформления заказа.

Если используется стандартный sale.order.ajax, проверьте, не сломаны ли события компонента и не переопределён ли JS шаблона. В нормальной схеме после изменения корзины должен выполняться пересчёт: доставка, скидки, итоговая сумма, купоны и свойства заказа.

На фронте обычно нужно после удаления товара вызвать обновление order component, а не только убрать строку из DOM. В зависимости от шаблона это может быть BX.Sale.OrderAjaxComponent.sendRequest() или штатное событие/метод вашего кастомного компонента.

if (window.BX && BX.Sale && BX.Sale.OrderAjaxComponent) {
  BX.Sale.OrderAjaxComponent.sendRequest();
}

if (window.BX && BX.Sale && BX.Sale.OrderAjaxComponent) { BX.Sale.OrderAjaxComponent.sendRequest(); }

Но слепо вставлять этот код нельзя: в разных версиях и кастомных шаблонах имя объекта может отличаться. Сначала откройте консоль и проверьте, существует ли объект компонента. Также посмотрите Network: после удаления товара должен уходить ajax-запрос на пересчёт заказа. Если его нет — проблема в JS. Если запрос есть, но сумма старая — проблема уже в обработчике или кэше данных корзины.

На backend-стороне проверьте, что удаление идёт через API корзины, а не прямым SQL/самодельным endpoint. После изменения basket должны пересчитываться скидки и order:

  • удалить basket item;
  • сохранить корзину;
  • пересчитать order/delivery/payment;
  • вернуть актуальный HTML или JSON итогов.

Итог: не обновляйте только визуальную строку товара. Привяжите удаление к штатному механизму пересчёта sale.order.ajax или явно вызывайте refresh компонента после успешного удаления. Так сумма, доставка и скидки будут синхронны с реальной корзиной.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно