Второй вариант (без таблиц) - на агенте проверять, что есть элементы, чьи даты активности попадают в промежуток между текущим временем и временем предыдущего запуска. Если есть - сбрасывать кеш.
18.09.2019 15:54:31
[QUOTE]Юрий Удовиченко написал:
Не получается так, что время окончания активности вообще не учитывается для сброса кеша?[/QUOTE] На текущий момент - да. |
|
|
16.09.2019 18:11:28
[QUOTE]Dymych Dim написал:
И как в таком фильтре можно что либо найти?)[/QUOTE] Я не вижу по скринам - ни что это (грид элементов, список в публичке), ни типа свойства (привязка к элементам списка - это что? тип L или тип E)? |
|
|
16.09.2019 11:28:59
Алексей, нельзя же так утром в понедельник по лбу :cry:
1. Событие вызывается ДО сохранения заказа. Это означает, что вызов $order->save приводит к абсолютно непредсказуемым результатам. В обработчике его быть не должно, save и так будет вызван. Ваша задача - передать измененные данные. 2. [QUOTE]Алексей Волков написал: $orderEnt = $event->getParameter("ENTITY"); $arPayVals = $orderEnt->getFields()->getValues(); $order = \Bitrix\Sale\Order::load($arPayVals['ORDER_ID']);[/QUOTE] приводит к тому, что вы получаете данные из базы, которые в общем случае уже могут отличаться, т.к. вы отслеживаете изменение только одной сущности. 3. Зачем вы дергаете обновление корзины (refreshData) и никак не пробрасываете результаты пересчета в заказа? Правильный вариант (здесь нет проверки на ваши условия):[CODE]$payment = $event->getParameter('ENTITY'); if ($payment instanceof \Bitrix\Sale\PaymentBase) { $order = $payment->getOrder(); $discount = $order->getDiscount(); $discount->setApplyResult(array('DISCOUNT_LIST' => array('ТЕКУЩИЙ_ИД_СКИДКИ' => 'N'))); // скидка, которую необходимо отменить. для нескольких скидок - несколько записей $res = $discount->calculate(); if ($res->isSuccess()) { if (($discountData = $res->getData()) && !empty($discountData) && is_array($discountData)) { $r = $order->applyDiscount($discountData); } } } [/CODE]ТЕКУЩИЙ_ИД_СКИДКИ берется не из b_sale_discount, а из b_sale_order_discount. Привязка к заказу этой таблицы - b_sale_order_rules |
|
|