Как изменить цену товара в Битрикс 1С при добавлении его в корзину?

Как изменить цену для всех товаров в корзине в битриксе 1с после нажатия на кнопку добавления товара, а не только после добавления второго товара, как это происходит в данный момент?
  • 30 мая 2024 г. 10:21
Ответы на вопрос 2
Для изменения цены товара в Битрикс 1С при добавлении его в корзину, вам потребуется использовать обработчик события OnBeforeBasketAdd в своем модуле или компоненте. В этом обработчике вы сможете изменить цену товара перед его добавлением в корзину.

Чтобы изменить цену для всех товаров в корзине после нажатия на кнопку добавления товара, вам нужно перехватить событие клика на кнопку добавления товара с помощью JavaScript. После этого вы сможете изменить цену всех товаров в корзине с помощью AJAX запроса к серверу.

Вот пример кода, который позволит вам изменить цену для всех товаров в корзине после нажатия на кнопку добавления товара:

```javascript
// Обработчик клика на кнопке добавления товара
$('.add-to-cart-btn').on('click', function(){
    // Ваш код для изменения цены товаров
    
    // AJAX запрос к серверу для обновления цен всех товаров в корзине
    $.ajax({
        type: 'POST',
        url: '/bitrix/components/my_module/update_cart_prices.php',
        data: { /* Данные для обновления цен */ },
        success: function(response){
            // Обработка успешного ответа от сервера
        },
        error: function(response){
            // Обработка ошибки при запросе к серверу
        }
    });
});
```

В файле update_cart_prices.php вы сможете обработать AJAX запрос и изменить цены всех товаров в корзине. Не забудьте добавить этот файл в компонент или модуль Битрикс 1C.

Надеюсь, это поможет вам решить вашу задачу! Если у вас возникнут дополнительные вопросы, не стесняйтесь спрашивать.
Видимо вы хотите изменить цену добавляемого в корзину item. 
При этом рассуждаете так - цена item'a корзины предоставляется провайдером товара, следовательно если я заменю провайдер на свой, и буду менять в нем цену, то товар попадет корзину по нужной мне цене.
С виду логично.

Посмотрим что происходит когда реально item добавляется в корзину:
Битрикс создает item, вычисляя его цену провайдером по умолчанию, далее перед добавлением item'a в корзину, битрикс вызывает ваш обработчик, который заменяет класс провайдера, после чего добавляет товар в корзину )))

Какая у него цена? Ну логично же что она осталась той же что была на этапе создания item, то что вы потом поменяли класс провайдера, никак на цене уже созданного itema не скжажетися вплоть до нового пересчет корзины.

Пересчитайте принудительно после замены провайдера. Кажется есть или метод специальный, или save для item надо вызвать.

И да - цена тут меняется НЕ У ТОВАРА, а у пункта корзины.
Похожие вопросы