Эта публикация написана после неоднократных обращений как клиентов, так и (к горести моей) партнеров. Темы обращений были разные, но причиной в итоге оказывался один и тот же сценарий, реализуемый как через админку, так и через api.
Все обращения можно было разбить на три группы:
1. Резкий рост объема базы, конкретно - таблицы b_sale_order_discount. Что характерно, правил корзины на сайте немного.
2. Долгое время работы компонентов корзины и заказа, а в случае включения режима "Использовать только правила корзины" - еще и увеличение времени генерации страниц каталога. Обязательный (но недостаточный) признак - большое число товаров на сайте (более 1000). Хотя причин такого поведения может быть множество и скидки - только одна, зачастую не самая важная.
3. Жалобы на затрудненную работу контент-менеджера (много времени уходит на настройку правил корзины, особенно при использовании пресетов). Дополнительная проблема (при большом количестве торговых предложений) - долго грузится форма выбора товара (пока эта проблема в стадии решения, увы).
Рассматривать будем на примере правил корзины, но для старых скидок на товары (модуля Торговый каталог) все аналогично.
Быстрый анализ выявляет несколько правил корзины с условиями вида (товаров в одном правиле - несколько десятков, а то и сотен(!)):
без использования пресетов
также без использования пресетов (наихудший вариант, как правило при создании через api)
с пресетами
Т.е. условием применения правила выступает ID товара. Это самый простой вариант, который может быть использован лишь в случае небольшого магазина либо, например, для разовой акции на конкретные товары. Для ситуации, когда объем товарной номенклатуры велик, либо постоянно меняется (часто заводятся новые позиции, удаляются/деактивируются старые) настройка правил корзины должна быть иной.
Итак, первое, что нужно сделать - завести для инфоблока товаров (или инфоблока предложений - зависит от того, могут ли разные правила применяться к разным предложениям одного и того же товара) свойство типа Строка, Число или Список. Какой тип выбрать - определяется тем, сколько величин скидок планируется. Если скидок немного, их значения не меняются - тогда выберите списочное свойство. Если же магазин большой (с разделением прав между сотрудниками) либо планируется периодически расширять набор правил - берите свойство типа Число. Тип Строка универсальней, но потребует аккуратности:
Для типа Список
настройка правил (отказываемся от пресетов) - на скриншотах ниже пример настройки ДВУХ правил. Можно объединить их в одно, но пока (sale 18.5.5, catalog 18.5.5) нет возможности показа таких правил (с несколькими действиями в одном правиле) в каталоге (важно!).
Для полей типа Число или Строка
заполняем свойство значением для товара
настройка правила
Для типа Строка аналогично типу Число, за исключением того, что можно писать что-то вида
верное значение для правила
и ошибочное (точка в конце - не сработает, т.к. нужно точное совпадение)
Собственно, на этом все. Подведу итоги. Условие "Товар равен" может использоваться при небольших объемах либо для разовых акций. Для остальных случаев настоятельно рекомендуется использовать способ, показанный выше. В чем его преимущество? Условия правил корзины короче, их нет нужды перенастраивать при изменении номенклатуры. Применится правило или нет, определяет значение свойства - тут спокойно отработает и обмен с 1С, и csv-импорт, и быстрое редактирование в списке элементов. Нет роста объема базы, быстрее работа.
Источник: https://dev.1c-bitrix.ru/community/blogs/vws/setup-discounts-problems-and-drop-performance.phpНастройка скидок в 1С-Битрикс - проблемы и падение производительности
Поделиться ссылкой:
Интересные статьи
Интересные статьи
Так сложилось, что уже около полутора десятков лет на разнообразные стрессы мой организм реагирует, лишая меня достаточного количества и качества сна. А спать я люблю, и люблю бы...
Многие компании в определенный момент приходят к тому, что ряд процессов в бизнесе нужно автоматизировать, чтобы не потерять свое место под солнцем и своих заказчиков. Поэтому все...
На просторах интернета присутствует бесчисленное количество информации касательно настройки сервера на Ubuntu, но на каждом шагу можно встретить неочевидные для новичка моменты. Я х...
Как чинить баги, если вы — органический продакшн с аптаймом в десятки лет, когда нельзя сделать ни ребут, ни замену внутренних модулей? Почему переиспользование кода — это логично, но печально?...
PowerShell Desired State Configuration (DSC) сильно упрощает работу по развертыванию и конфигурированию операционной системы, ролей сервера и приложений, когда у вас сотни серверов.
Но пр...