Почему стандартные модули «1С-Битрикс» не всегда годятся для реализации скидок на сайте — раскрываем тёмные стороны продвинутого внутреннего инструмента системы
А как насчёт скидки?
Сибирикс
А как насчёт скидки?
Почему стандартные модули «1С-Битрикс» не всегда годятся для реализации скидок на сайте — раскрываем тёмные стороны продвинутого внутреннего инструмента системы
Вот есть у вас интернет-магазин: покупатели снуют по страницам, что-то выбирают, что-то заказывают. Но у конкурентов торговля идёт шустрее. Возможно, им просто повезло. А может, они предлагают более интересные условия, скидки, акции, бесплатную доставку. Ага, вот оно — у вас-то на сайте несколько стандартных модулей, с помощью которых можно создать несколько простых акций, а у них хитрые скидки с учетом целой пачки условий? Точно, надо обновить сайт и прикрутить к нему свеженький Битрикс — ваш сисадмин напару с маркетологом давно говорят, что там офигенно гибкий конструктор скидок и акций. Бери и настраивай на радость покупателям, а продажи взмоют вверх.
Не секрет, что «1С-Битрикс» сильно «выезжает» на фоне других CMS за счет агрессивного маркетинга — больших конференций, мощного пиара разрабатываемых продуктов и формирования статуса эксперта своей отрасли. Неудивительно, что у компании с такой сильной маркетинговой составляющей и инструменты для маркетинга внутри платформы очень сильные. И поскольку другие игроки этим похвастать не могут, то получается, что Битрикс постоянно в выигрыше на их фоне.

Дмитрий
Аккаунт-менеджер
Обрадовались и уже выбираете на официальном сайте Битрикса одну из редакций? Спешим расстроить — при всём удобстве системы, есть много особенных случаев, когда стандартные настройки для маркетинговых акций не способны решить задачи вашего бизнеса. И об этом хорошо бы знать на первоначальных этапах разработки. Сегодня как раз поговорим о вариантах реализации скидок на проектах: в каких ситуациях достаточно стандартного модуля скидок Битрикса, а в каких его придётся дорабатывать (или отказаться от него совсем).
Стандартные инструменты Битрикса для скидок
Начиная с версии 16.0 в платформе для интернет-магазинов появился блок «Товарный маркетинг», где есть раздел «Предустановленный список маркетинговых акций» с набором пресетов для быстрой настройки скидок в интернет-магазинах. Внутри — 10 готовых пошаговых мастеров, которые помогут быстро создать нужные акции и наценки. Во многих случаях этих инструментов бывает достаточно.
Помимо них, есть раздел правил работы с корзиной, где можно задавать варианты условий применения скидок и наценок к доставке и товарам в корзине. Скидки для товаров действуют и на их торговые предложения, а скидки на комплекты — как на единый товар. Также есть раздел купонов, где можно управлять промокодами.
Правила работы с корзиной — офигенно гибкий инструмент, который позволяет настраивать самые разные вариации. Если на проекте используются штатные цены Битрикса, работать с ним — одно удовольствие.

Евгений
Разработчик
Примеров реализации скидок штатными средствами действительно огромное множество, но в нашей практике было немало ситуаций, когда реализовать скидки с их помощью не удавалось и приходилось думать о кастомных (доработанных вручную) решениях или альтернативах.
Кастомные решения для скидок
Скидки любят за то, что это хороший маркетинговый инструмент, который помогает сбывать остатки товаров, управлять вниманием аудитории и формировать лояльность покупателей. Варианты механик для манипуляций с ценами безграничны: можно придумать гору хитрых маркетинговых ходов с чумовыми акциями, впечатляющими активностями и магическими промокодами, но вопрос технической реализации тогда будет стоять очень остро.
На самом деле, нет особой проблемы увязать какую-нибудь Яндекс.Погоду с алгоритмом начисления процентов, но реализовываться всё это будет явно не штатными средствами. И ещё большой вопрос — как такого рода скидки оформлены у ребят в 1С?

Евгений
Разработчик
Девственно чистые 1С нам встречаются крайне редко, так что фантазию маркетологов часто приходится помножить на многочисленные «улучшения» и «костыли» системы. И тогда шансов использовать стандартные средства Битрикса для скидок — ещё меньше.

Именно поэтому ещё на этапе продажи мы всегда уточняем у клиента текущее состояние 1С (или другой системы, где хранятся данные). От этого зависит, какими средствами мы будем решать задачу с реализацией скидок, сколько времени это займёт и сколько может стоить. После этапа аналитики (анализа рынка, конкурентов и целевой аудитории, создания прототипа и утверждения ТЗ) мы готовим ТЗ на интеграцию и составляем протокол интеграции. Это снимает вопросы об объеме данных для интеграции и вариантах скидок, которые предполагается реализовать на сайте.
Типичные случаи кастомных скидок
Если всё до безобразия упростить, то получится простое правило: используются штатные цены Битрикса — можно использовать и штатные скидки. Если нет — ищите варианты.

Штатная цена — числовое поле у товара, определённое как стоимость. Помимо штатных цен есть понятие базовой цены — той, которая среди других типов цен (например, «старая» или «цена в магазине N») указана в системе как основная.


Когда нельзя использовать штатные цены Битрикса

На больших проектах, где счёт идёт на сотни и тысячи цен в базе данных, использование штатных цен и скидок на Битриксе — самоубийство, поскольку импорт базы на сайт (который теоретически должен ежедневно обновляться) займёт кучу времени.
На одном из проектов требовалось увязать 4 000 торговых точек с 500 000 товаров — это 20 миллионов цен. Стандартный битриксовый импорт данных о ценах такое просто не потянет. А когда нет битриксовых цен, нет и битрисковых скидок :) Вместо стандартных модулей для цен мы привязали отдельный справочник, где четко указаны «товар — торговая точка — цена», и нет никаких ненужных полей.

Иван
Руководитель отдела разработки
В другом проекте у нас тоже была сложность со скидками: проблема в том, что у каждого контрагента может быть своя скидка, плюс скидка на конкретный товар, на группу товаров, на подкатегорию, на несколько подкатегорий и так далее. Теоретически для каждого из 15 275 товаров у каждого из 8 215 контрагентов может быть своя уникальная скидка — всё это превращается в 125 миллионов комбинаций и большущий файл интеграции данных на сайт, что равно 2-м с хвостиком неделям на его выгрузку.
Мы составили протокол интеграции, отправили его заказчику и получили от него структуру базы в 1С: группы, цены, категории и т. д. Файл был гигантским, но мы его сократили и сжали структурно: убрали часть с данными о скидках в отдельный справочник и прописали функцию импорта скидок.

Когда такой справочник подгружается, скрипт делит сегмент с данными о скидках на множество маленьких файлов — по одному на каждого контрагента. Таким образом, вместо загрузки огромного файла с абсолютно всеми скидками из 1С, загружается маленький кусочек со скидками конкретного клиента.


Евгений
Разработчик
Но если штатные цены на проекте всё-таки используются, это ещё не гарантирует, что и скидки удастся реализовать стандартными модулями, потому что есть специфические условия, которые в них не предусмотрены. Об этом — ниже.


Когда для скидок нужна «многогородовость»

Часто бывает, что цены на товары интернет-магазина в разных городах отличаются. Могут отличаться и скидки. И здесь возникает проблема.
Битрикс не умеет делать зависимость цены от города, соответственно и зависимость скидки от города — тоже. Если есть несколько конкретных городов, это решается просто — добавлением в конструкторе Битрикса условия в виде города. Если же разброс по всей России, есть смысл создать несколько отдельных цен с привязкой к каждому городу.

Иван
Руководитель отдела разработки
Столбец, выделенный слева, — один и тот же товар. Столбец, выделенный справа, — разные цены для него.
Когда нужны фиксированные или автоматизированные скидки

При попытке как-либо систематизировать процесс создания скидок, либо применить их к специфичной аудитории, тоже возникает проблема.
Был проект, где мы столкнулись с настройкой фиксированных скидок. Когда, например, при покупке на сумму от 1000 до 1999 рублей сумма скидки одна, а при покупке от 2000 до 4999 — уже другая, и так до бесконечности. Теоретически такие условия можно реализовать и штатными средствами, но это не очень удобно, и есть большой риск человеческого фактора.

Если по ошибке ценовые диапазоны пересекутся, возникнет конфликт условий, и скидка или вообще не начислится, или начислится как попало. Мы же доработали функционал Битрикса так, чтобы скидки для всех диапазонов задавались в 1 месте, а интервалы цен были связаны между собой.


Денис
Разработчик
Стандартный функционал Битрикса не подходит, когда нужно автоматизировать создание скидок. Например, если скидку нужно применить к определенной группе пользователей из списка — чем длиннее этот список, тем проблематичнее это сделать (и больше времени на отображение результатов на странице может занять). Обычно в этом случае мы запрашиваем у клиента выгрузку списка пользователей, к которым должна применяться скидка, и реализуем кастомное решение специально под них.


Когда нужна фильтрация или сортировка по скидке в каталоге

Внутри Битрикса вывод товаров в каталоге, а также фильтрация и сортировка по умолчанию производятся по базовой цене. Из-за этого обычно нарушается логика отображения товаров со скидкой.

На скриншоте ниже есть несколько товаров, отсортированных по возрастанию цены. Причем, у одного из них цена со скидкой явно ниже: по логике он должен выводиться гораздо выше в каталоге, но этого не происходит, поскольку Битрикс по умолчанию не учитывает скидки при фильтрации и сортировке. А сортировку по размеру скидки реализовать и вовсе нельзя.
Если заказчика устраивает, что фильтр и сортировка каталога будут работать без учета скидок, мы используем битриксовые скидки — в большинстве своём они довольно гибкие и удобные. Но если заказчик с этим категорически не согласен, тогда приходится дорабатывать функционал: например, создавать свойства вроде «старая цена», «размер скидки» и т. п. Значения этих свойств выводятся в каталоге, а у товара в этом случае всегда указана конечная (итоговая) цена.

Алексей
Разработчик
Как вариант, можно реализовать отображение товаров со скидками, пометив их галочкой «акция». Но здесь возникает проблема: акции могут зависеть от времени суток и проходить в разные сроки, и всё это как-то должно учитываться в выборке. Можно схитрить и создать для акций дополнительный раздел, куда автоматически попадут товары со сниженной ценой.

Евгений
Разработчик
Ограничения кастомных скидок
Казалось бы, чего такого? Дописал там, дописал здесь, всё классно работает, владелец сайта счастлив, клиенты довольные. Но есть одно «но».

Вы сделали проект, разработчики вам классно всё настроили, хитрые скидки работают, импорты летают, всё классно. Вы уходите, но спустя время сисадмин или сеошник говорит вам, что можно бы и обновить версию Битрикса, потому что вышла новая. По-хорошему, лучше попросить это сделать студию-разработчика в рамках техподдержки. «Но это же дополнительные расходы» — думаете вы и поручаете провести обновление тому самому сисадмину. Последствия непредсказуемы — некоторые компоненты системы могут меняться, а кастомные настройки скидок — слетать. Всё равно придётся бежать к разработчику за помощью, так почему бы не сделать так сразу? :)
Вывод
При всей классности стандартных инструментов Битрикса для создания скидок, они годятся далеко не всегда. Стандартный модуль поможет создать скидки, зависящие от дней недели, настроить приоритеты при комбинации скидок, или сделать доставку бесплатной при определенных условиях. Если нужны более сложные варианты — придётся дорабатывать. Причины для использования нестандартных решений:

  • отказ от штатных цен Битрикса,
  • зависимость цен (и скидок) от города,
  • невероятные акции от вашего маркетингового отдела :)
  • и прочие специфические условия для создания скидки, которых нет внутри стандартных модулей.

Лучше продумывать механизм скидок на аналитике, чтобы учесть его при разработке. Доработать функционал после релиза возможно (особенно при итеративном подходе), пусть и потребует дополнительного бюджета :)

Знаете другие случаи, когда со скидками бывают сложности? Делитесь в комментариях — обсудим!