Не так давно я задался целью (но мысли были всегда) получить близкий к настоящим реалиям магазин, где все было бы реально быстро. Быстрый вывод, быстрый фильтр, быстрый список. Если фильтр еще в процессе рождения, то подход к скидкам я готов представить на суд 
[spoiler]
Здесь хочу предупредить, что этот модуль не подходит под стандартные компоненты каталога, а только под компоненты собственного производства, в которых можно отключить вывод скидок.
Вообще, скидки Битрикс мне не нравились никогда. Они сносили коту под хвост любую архитектуру, ибо требовали расчет скидки на каждой итерации в выводе списка товаров. Это ужас, но это дань универсальности. Я понимаю вендора, и не говорю, что это плохо.
Я уже давно пытался предпринять нечто такое, что позволило бы считать скидки разом перед выводом списка товаров. В принципе, оное получилось, работало, пока... не появился Битрикс 12.0, который дал очень мощный конструктор скидок, вместе с ним давший еще больший геморрой в производительности. К сожалению (или к счастью), я не сторонник товарищей "это выпустил Битрикс, мы просто переодели", и было решено положить этому конец.
Так родился до ужаса простой, но действенный подход к организации скидок: А давайте их загоним в свойства?! А апдейтить будем на агенте. Что получим? Мы получим настолько быстрый каталог товаров (список) насколько вы сами его сделаете таким. А скидки не убьют вашу производительность, и будут применяться к товарам мгновенно.
Сказано?


Как видите, часть товаров получила скидку 12%, а некоторые - 16%. Дело за малым - далее надо эти свойства вывести в списке товаров и обработать их соответствующе (а вот теперь понимаете, почему стандартные компоненты не подходят? потому что они потянут за собой все равно весь шквал скидок и расчетов).
Да, и знаете какой тут побочный плюс? Вы можете теперь все ваши товары разгруппировать по скидкам и вывести это в разделе - раздел 20%, раздел 50%, раздел "все по 100 рублей!". И эти разделы формируются автоматически и быстро. Чувствуете мощь?
Да, решение далеко не для конечного клиента, но становится мощным орудием в руках грамотных интеграторов (как минимум). Первая цель для меня - чтобы магазины моих клиентов работали быстро.
Ну а теперь вкратце о технической реализации. Агент бегает по измененным товарам (за определенный период), и высчитывает для них скидки. Так, как они высчитываются при обычном выводе. Если скидка есть - проставляет. Скидка пропадает - убирает. Если произошли изменения скидок - сбрасывает управляемый кеш каталога. Если изменяем скидки или добавляем новый - пересчитываются все товары. Тонкости еще в процессе отладки (хотя модуль себя уже зарекомендовал), открыт к пожеланиям и комментариям.
Некоторые ограничения:
Решение платное, 1000 руб., без помощи в интеграции, "как есть". Присутствует демо-период 10 дней, в течение которого вы сможете понять, устраивает ли вас такой подход.

[spoiler]
Здесь хочу предупредить, что этот модуль не подходит под стандартные компоненты каталога, а только под компоненты собственного производства, в которых можно отключить вывод скидок.
Вообще, скидки Битрикс мне не нравились никогда. Они сносили коту под хвост любую архитектуру, ибо требовали расчет скидки на каждой итерации в выводе списка товаров. Это ужас, но это дань универсальности. Я понимаю вендора, и не говорю, что это плохо.
Я уже давно пытался предпринять нечто такое, что позволило бы считать скидки разом перед выводом списка товаров. В принципе, оное получилось, работало, пока... не появился Битрикс 12.0, который дал очень мощный конструктор скидок, вместе с ним давший еще больший геморрой в производительности. К сожалению (или к счастью), я не сторонник товарищей "это выпустил Битрикс, мы просто переодели", и было решено положить этому конец.
Так родился до ужаса простой, но действенный подход к организации скидок: А давайте их загоним в свойства?! А апдейтить будем на агенте. Что получим? Мы получим настолько быстрый каталог товаров (список) насколько вы сами его сделаете таким. А скидки не убьют вашу производительность, и будут применяться к товарам мгновенно.
Сказано?


Как видите, часть товаров получила скидку 12%, а некоторые - 16%. Дело за малым - далее надо эти свойства вывести в списке товаров и обработать их соответствующе (а вот теперь понимаете, почему стандартные компоненты не подходят? потому что они потянут за собой все равно весь шквал скидок и расчетов).
Да, и знаете какой тут побочный плюс? Вы можете теперь все ваши товары разгруппировать по скидкам и вывести это в разделе - раздел 20%, раздел 50%, раздел "все по 100 рублей!". И эти разделы формируются автоматически и быстро. Чувствуете мощь?
Да, решение далеко не для конечного клиента, но становится мощным орудием в руках грамотных интеграторов (как минимум). Первая цель для меня - чтобы магазины моих клиентов работали быстро.
Ну а теперь вкратце о технической реализации. Агент бегает по измененным товарам (за определенный период), и высчитывает для них скидки. Так, как они высчитываются при обычном выводе. Если скидка есть - проставляет. Скидка пропадает - убирает. Если произошли изменения скидок - сбрасывает управляемый кеш каталога. Если изменяем скидки или добавляем новый - пересчитываются все товары. Тонкости еще в процессе отладки (хотя модуль себя уже зарекомендовал), открыт к пожеланиям и комментариям.
Некоторые ограничения:
- Модуль работает только для инфоблоков, которые привязаны к одному сайту.
- Величина скидки высчитывается для групп пользователей "все". То есть, данный подход не считает персональные скидки и скидки на группы пользователей. Но поддержка групп стоит в планах (например, "оптовые покупатели").
- Пока не реализована скидка по периоду активности самих товаров (активность скидки учитывается).
Решение платное, 1000 руб., без помощи в интеграции, "как есть". Присутствует демо-период 10 дней, в течение которого вы сможете понять, устраивает ли вас такой подход.