Евгений Жуков пишет: Передавайте в обработчике в списке параметров для CSaleBasket::Update некий ключ - признак того, что повторно обработчик запускать не надо.
Еще раз посмотрел документацию, ума не приложу, какой ключ Вы имеете ввиду. Напишите пожалуйста, что это за ключ
Евгений Жуков пишет: Посмотрите OnBasketAdd и OnBasketUpdate
Если обрабытывать OnBasketAdd, так она и так добавляется правильно - проблема в том, что потом цена пересчитывается Если OnBasketUpdate, то изменить цену на нужную можно только ф-цией CSaleBasket::Update т.е. получается бесконечный цикл
Евгений Жуков пишет: Как вариант - хранить цену как свойство товара в корзине и работать с обработчиками событий интернет-магазина.
Может подскажите с какими событиями работать? Потому что если обрабатывать событие OnBasketUpdate и записывать в поле "PRICE" цену набора(отличную от цены каталога) то будет зацикливание, а другое событие, я чего-то не могу придумать
Евгений Жуков пишет: Описание события и его параметров есть по приведенной выше ссылке. Документация сейчас в работе.
А, да сорри пропустил действительно есть
Цитата
Евгений Жуков пишет: Увы, в этом случае проблему необходимо решать, реализуя свои callback-функции.
Дело в том, что один продукт сохраняется с разными ценами(в зависимости от набора доп.предложений - они сохраняются, как свойства записи в корзине - массив $arFields["PROPS"] в функции CSaleBasket::Add), то есть цена продукта в корзине зависит не только от ид продукта, но и от ида записи в корзине, а у callback-функции в аргументах только product_id и как получить ид записи не понятно(это относится и к обработке события OnGetOptimalPrice ) И еще я теперь, как научили ставлю $arFields['CALLBACK_FUNC'] = '' и $arFields['ORDER_CALLBACK_FUNC'] = '' так, что они не должны пересчитывать цену
Евгений Жуков пишет: Описание события и его параметров есть по приведенной выше ссылке. Документация сейчас в работе.
А, да сорри пропустил действительно есть
Цитата
Евгений Жуков пишет: Увы, в этом случае проблему необходимо решать, реализуя свои callback-функции.
Дело в том, что один продукт сохраняется с разными ценами(в зависимости от набора доп.предложений - они сохраняются, как свойства записи в корзине - массив $arFields["PROPS"] в функции CSaleBasket::Add), то есть цена продукта в корзине зависит не только от ид продукта, но и от ида записи в корзине, а у callback-функции в аргументах только product_id и как получить ид записи не понятно(это относится и к обработке события OnGetOptimalPrice ) И еще я теперь, как научили ставлю $arFields['CALLBACK_FUNC'] = '' и $arFields['ORDER_CALLBACK_FUNC'] = '' так, что они не должны пересчитывать цену
amorfis пишет: Если добавляет товар в корзину через метод CSaleBasket::Add(), то передайте в массив параметры CALLBACK_FUNC и ORDER_CALLBACK_FUNC равными пустой строке и тогда функции не будут срабатывать.
Спасибо за поддержку, но не помогло т.е. сохраняю с одной ценой, а в корзине и в заказе отображается цена из каталога
Это интересно, но я не нашел события в документации Какие поля оно принимает? И есть один ньюанс: сейчас стоит редакция "1С-Битрикс: Управление сайтом 9.5.2" может быть есть решение для этой версии?
Всем доброго времени суток! Есть такая задача : нужно добавить товар в корзину по цене отличной от цены товара в каталоге Причем так чтобы на странице корзины и в заказе (состав заказа) отбражалась новая цена
я добавляю в корзину товар функцией CSaleBasket::Add($arFields); где в поле массива $arFields "PRICE" стоит новая цена $arFields["PRICE"] = $new_price
Но потом цена пересчитывается(как я понимаю функцией название которой берется из поля записи таблицы корзины "CALLBACK_FUNC") и устанавливается цена из каталога
P.S. Я переопределил функцию коллбэк в файле init.php Суть задачи в том, что один и тот же товар добавляется в корзину с разными наценками(доп. предложения) т.е. в корзине получаются разные записи с разной ценой для одного и того же товара, а в функции "CALLBACK_FUNC" в параметрах только ид товара и нет ида записи в корзине и надо чтобы, как я уже написал выше, для одного и того же товара было несколько записей в корзине с разными ценами соответствующими разным наборам(товар +различный набор доп. опций), потому что разные наборы это по сути разные товары.
Или может быть Вы предложите другое решение для дополнительных предложений Буду рад любой помощи