+7 499 938 8452 пн.-пт. 10:00 – 17:00

Не нашли ответы на свои вопросы в наших публикациях? Задайте вопрос в службу техподдержки!


1. Когда нужна эта настройка

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

Без бонусов оформление заказа работает как обычно.

Если после оплаты бонусами сумма все еще выше порога — доставка остается бесплатной.

Если после оплаты бонусами сумма становится ниже порога — скидка на доставку снимается, а итог заказа сразу обновляется.

Пересчет затрагивает сам объект заказа, стоимость доставки и итоговые суммы в checkout (процедуре заказа), а не только отображение на странице.

2026-03-31_19-13-25.png

2026-03-31_20-33-33.png
Данный механизм включается в настройках модуля галочкой "
Проверять правила работы с корзиной, меняющие стоимость доставки".

2. Что было добавлено в модуль в версии 3.10

Для работы механизма используются два события оформления заказа и пересчет скидок через объект скидок заказа. Это позволяет работать с текущими скидками заказа и корректно обновлять данные компонента оформления:

sale::OnSaleComponentOrderCreated — нужен для раннего пересчета объекта заказа, когда покупатель меняет сумму бонусной оплаты.

sale::OnSaleComponentOrderResultPrepared — нужен для обновления checkout (в процедуре заказа) после расчета: подставляет актуальные суммы доставки, итоговой суммы и бонусной оплаты в данные компонента.

Поиск скидки доставки сделан динамическим: модуль определяет, какая именно скидка заказа влияет на доставку, и временно отключает только ее.



3. Как подготовить пример для проверки

Для демонстрации удобно использовать простую бизнес-схему: правило корзины делает доставку бесплатной при сумме заказа от заданного порога, а покупатель может частично оплатить заказ бонусами в стандартной процедуре.

Настройте правило корзины на скидку доставки, например 100% скидку на доставку при сумме заказа от 3900 ₽.

Убедитесь, что в оформлении заказа доступен блок бонусного счета и можно вводить сумму бонусной оплаты.

Подберите товар или корзину так, чтобы до оплаты бонусами заказ проходил по порогу бесплатной доставки, а после оплаты — уже нет.


 2026-03-31_19-16-18.png

4. Как работает пересчет

После ввода суммы бонусов модуль запускает проверку.

1. Сначала модуль получает сумму бонусной оплаты из request и данных checkout (процедуры заказа).

2. Далее он находит текущие скидки заказа, которые реально влияют на стоимость доставки.

3. Затем модуль временно отключает только скидку доставки и пересчитывает заказ через объект скидок заказа.

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

5. Модуль еще раз пересчитывает скидки, понимает, должна ли бесплатная доставка сохраниться, и возвращает реальные цены корзины.

6. В финале выполняется обычный пересчет реального заказа, а checkout получает обновленные суммы доставки и итога.


2026-03-31_19-17-16.png

5. Что должно получиться в результате

Если до списания бонусов корзина проходила по порогу бесплатной доставки, а после списания перестала проходить, посетитель сразу увидит платную доставку и новый итог заказа. Никаких дополнительных обновлений страницы, ручного сохранения или правок в ядре Битрикс не требуется.


Сценарий

Что ожидаем

Что проверить

Бонусы не используются

Поведение не меняется

Доставка и итог считаются как раньше

После бонусов сумма все еще выше порога

Бесплатная доставка сохраняется

Цена доставки остается 0 ₽

После бонусов сумма стала ниже порога

Скидка на доставку снимается

Цена доставки становится платной, итог обновляется

Покупатель меняет сумму бонусов несколько раз

Пересчет каждый раз актуален

Нет задвоения скидок и зависших старых сумм


6. Важно учитывать

Если на проекте используется сильно доработанная или полностью кастомная процедура заказа, может понадобиться дополнительная адаптация.

Для корректной работы оба sale-события должны быть включены в настройках модуля.

Логика не требует правок в /bitrix/modules/* и не меняет ядро Битрикс.

Если на сайте используется несколько правил доставки и несколько скидок, модуль работает с текущими скидками заказа и ищет те, которые реально влияют на доставку.

  



Назад в раздел



Часто задаваемые вопросы по модулям экспорта

Видео плейлист по настройке модулей экспорта