Евгений Жуков пишет: Передавайте в обработчике в списке параметров для 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" может быть есть решение для этой версии?