Здравствуйте. Столкнулся со следующей проблемой.
Есть крупный сайт, синхронизированный с 1С заказчика. В нем 2 каталога - каталог товаров и каталог услуг (инфоблоки у них разные, но по сути и то и то - товары).
Дело в том, что у элементов каталога услуг - 9 ! типов цен. Эта цена зависит от определенного свойства пользователя.
Цена в каталоге определяется следующим образом. Перед вызовом catalog.section или catalog.element определяется это свойство пользователя и в зависимости от него в параметр вызова компонента каталога передается "PRICE_CODE" => 'код_цены'
Все бы хорошо, и цены правильно выбираются и отображаются, но в корзину летит цена минимальная из всех типов (тут стоит учесть что может быть несколько типов цен с одинаковым минимальным значением). Так же скажу, что ни одна из 9 цен не являются базовой.
Что пытался делать я:
Есть крупный сайт, синхронизированный с 1С заказчика. В нем 2 каталога - каталог товаров и каталог услуг (инфоблоки у них разные, но по сути и то и то - товары).
Дело в том, что у элементов каталога услуг - 9 ! типов цен. Эта цена зависит от определенного свойства пользователя.
Цена в каталоге определяется следующим образом. Перед вызовом catalog.section или catalog.element определяется это свойство пользователя и в зависимости от него в параметр вызова компонента каталога передается "PRICE_CODE" => 'код_цены'
Все бы хорошо, и цены правильно выбираются и отображаются, но в корзину летит цена минимальная из всех типов (тут стоит учесть что может быть несколько типов цен с одинаковым минимальным значением). Так же скажу, что ни одна из 9 цен не являются базовой.
Что пытался делать я:
- Полез в компонент и увидел что для добавления используется функция Add2BasketByID, которая тип цены не учитывает судя по всему. Попробовал вместо нее Add2Basket которая аргументом принимает id цены определенного товара. Жестко в коде передал ей айдишник цены одного товара (не минимальной цены конечно же), но в корзине оказалась все равно не она. Вернул все на место.
- Воспользовался событием OnBeforeBasketAdd. Сделал там выборку нужной цены и подставил ее id и значение в $arFields. Тут вроде как появилась надежда - при добавлении в корзину из каталога нужная цена успешно подменялась - это было видно по обновляемой ajax малой корзине на странице. Но стоит зайти в большую корзину - все цены услуг в корзине сбрасываются на минимальные. Тут же удалял значение "CALLBACK_FUNC" в arFields (вычитал в каком то блоге) - тоже не помогло.
- Хотел сделать CSaleBasket::Update() в событии OnBasketAdd, но оно вообще не срабатывает (проверял несколькими способами)
