[spoiler]
Все обращения можно было разбить на три группы:
1. Резкий рост объема базы, конкретно - таблицы b_sale_order_discount. Что характерно, правил корзины на сайте немного.
2. Долгое время работы компонентов корзины и заказа, а в случае включения режима "Использовать только правила корзины" - еще и увеличение времени генерации страниц каталога. Обязательный (но недостаточный) признак - большое число товаров на сайте (более 1000). Хотя причин такого поведения может быть множество и скидки - только одна, зачастую не самая важная.
3. Жалобы на затрудненную работу контент-менеджера (много времени уходит на настройку правил корзины, особенно при использовании пресетов). Дополнительная проблема (при большом количестве торговых предложений) - долго грузится форма выбора товара (пока эта проблема в стадии решения, увы).
Рассматривать будем на примере правил корзины, но для старых скидок на товары (модуля Торговый каталог) все аналогично.
Быстрый анализ выявляет несколько правил корзины с условиями вида (товаров в одном правиле - несколько десятков, а то и сотен(!)):
без использования пресетов
также без использования пресетов (наихудший вариант, как правило при создании через api)
с пресетами
Т.е. условием применения правила выступает ID товара. Это самый простой вариант, который может быть использован лишь в случае небольшого магазина либо, например, для разовой акции на конкретные товары. Для ситуации, когда объем товарной номенклатуры велик, либо постоянно меняется (часто заводятся новые позиции, удаляются/деактивируются старые) настройка правил корзины должна быть иной.
Итак, первое, что нужно сделать - завести для инфоблока товаров (или инфоблока предложений - зависит от того, могут ли разные правила применяться к разным предложениям одного и того же товара) свойство типа Строка, Число или Список. Какой тип выбрать - определяется тем, сколько величин скидок планируется. Если скидок немного, их значения не меняются - тогда выберите списочное свойство. Если же магазин большой (с разделением прав между сотрудниками) либо планируется периодически расширять набор правил - берите свойство типа Число. Тип Строка универсальней, но потребует аккуратности:
Для типа Список
настройка правил (отказываемся от пресетов) - на скриншотах ниже пример настройки ДВУХ правил. Можно объединить их в одно, но пока (sale 18.5.5, catalog 18.5.5) нет возможности показа таких правил (с несколькими действиями в одном правиле) в каталоге (важно!).
Для полей типа Число или Строка
заполняем свойство значением для товара
настройка правила
Для типа Строка аналогично типу Число, за исключением того, что можно писать что-то вида
верное значение для правила
и ошибочное (точка в конце - не сработает, т.к. нужно точное совпадение)
Собственно, на этом все. Подведу итоги. Условие "Товар равен" может использоваться при небольших объемах либо для разовых акций. Для остальных случаев настоятельно рекомендуется использовать способ, показанный выше. В чем его преимущество? Условия правил корзины короче, их нет нужды перенастраивать при изменении номенклатуры. Применится правило или нет, определяет значение свойства - тут спокойно отработает и обмен с 1С, и csv-импорт, и быстрое редактирование в списке элементов. Нет роста объема базы, быстрее работа.
И приходит csv-файл в котором 1000 товаров у которых указана: старая цена и новая цена.
Вот было бы действие не установить скидку/наценку, а "зафиксировать цену..."
Возможно как то сразу подставлять фиксированную цену из с свойства?
В корзине всё считается нормально, но как это вывести в каталоге?
Причём по логам-то видно, что в каталоге оно СЧИТАЕТСЯ, но НЕ ОТОБРАЖАЕТСЯ, всё из-за флага "Показ в каталоге товаров", который никак нельзя включить вручную.
18.5.518.5.6. Возможен сдвиг обновлений.catalog 18.5.5
Не нашли такой возможности
Задача по нескольким товарам в акции задать свою, акционную цену. По одному работает, а по 2 товара (2 действия по сути) уже нет.
Помогите
не могу настроить запрет на удаление товара в настройке прав доступа для редактора сайта
на всякий случай чтобы не мог удалить товары ..только добавить и настроить..
создал группу все нормально с правами ..только есть удаление а это не есть гуд...
завел кастомный уровень L без удаления но в правах осталось удаление
создал новую группу "Контент-менеджер каталога" и настроил доступ..
Права к административным частям модулей...
[L] Права менеджера
Редактирование уровней доступа
Системный НЕТ
Включаемые операции
удаленияе НЕТ
Планируется сделать это штатно, но сроков назвать не могу, увы.
Так же стоит следующая задача удалить ненужные записи из таблицы b_sale_order_discount
Скажите, уместно ли будет воспользоваться запросом:
DELETE FR OM b_sale_order_discount AS T1 WH ERE T1.ID NOT IN (SEL ECT T2.ORDER_DISCOUNT_ID FR OM b_sale_order_rules AS T2)
(пробелы сами вылезают)