Middle Интернет-магазин Рекомендуется

Корзина и заказы: Sale API

Работа с интернет-магазином ведется строго через объектную модель модуля sale: операции с позициями корзины выполняются через класс Basket, а создание и модификация заказа — через методы объекта Order. Прямое обновление таблиц через ORM Internals\*Table обходит жизненный цикл заказа, приводя к потере истории изменений, сбоям расчета скидок и блокировке почтовых уведомлений.

Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.

Что нужно понимать

  • 1
    Bitrix\Sale\Basket и Order
  • 2
    Свойства заказа и покупатели
  • 3
    Статусы, оплаты, отгрузки
  • 4
    Резервирование и гонки при оформлении
  • 5
    Внутренний счёт покупателя

Материалы

Проверь себя

Скрипт переводит заказы в другой статус через OrderTable::update(). Статус меняется, а письма не уходят и в 1С заказ не попадает. Почему?

ORM-запись минует объектную модель: события, история, уведомления и пересчёт не запускаются. Нужно Order::load(), setField('STATUS_ID') и Order::save().

Заказчик жалуется на дубли заказов при двойном клике по кнопке «Оформить». Что защитит?

Собственный реестр операций с уникальным ключом, зарезервированным до Order::create(). Индекс XML_ID уникальность не гарантирует, а Order::lock() защищает редактирование, не создание.

Чем Basket::save() отличается от Order::save() для корзины уже оформленного заказа?

Корзину заказа отдельно не сохраняют: Basket::save() обойдёт пересчёт заказа, скидки и историю. После изменения позиции зовут Order::save() целиком.

Почему списание с внутреннего счёта нельзя делать как «прочитать баланс, вычесть, записать»?

Между чтением и записью другой процесс меняет счёт. UpdateAccount() принимает дельту и работает с логической блокировкой, но отрицательный баланс не запрещает и повтор не отличает — нужен свой ключ операции, а оплата заказа идёт через внутреннюю платёжную систему.

Не сходится?

Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти