Возможность сравнивать значения в событиях обновления инфоблока

Рейтинг: -2.9695  
На голосовании
Предложил Пользователь 15387 13.04.2012 10:11:52

Возможность сравнивать значения в событиях обновления инфоблока

Хотелось бы, чтобы в событие  OnBeforeIBlockElementUpdate  передавался два массива, один с измененными данными, а другой массив с текущими значениями, чтобы  отслеживать, что нужное поле изменилось.
Рейтинг: 0  
Ответил Жуков Евгений 14.10.2015 13:31:48
Способ реализации описан здесь.

Рейтинг: 0  
Пользователь 2106 13.04.2012 10:58:50
Что мешает его получать самому в обработчике?
Рейтинг: 0.8198  
Пользователь 15387 13.04.2012 11:13:29
Ещё один запрос к базе. Было бы удобно если в массиве был бы VALUE и PREVIOUS_VALUE.Было бы полезно очень для свойства OnAfterIBlockElementUpdate .

Когда мы знаем, что успешно прошло обновление элемента, и нам надо знать изменили ли поле, для того, чтобы выполнить какие-то действия. А если мы будем делать в событии OnBeforeIBlockElementUpdate, то вдруг что случится и мы сделаем это действие, а элемент в итоге не обновится.
Рейтинг: -0.0975  
Пользователь 2106 13.04.2012 11:20:47
То есть Вы предлагаете этот запрос добавить вообще везде, где вызывается метод CIBlockElement::Update? Иначе откуда возьмутся старые значения?
Рейтинг: 0.8198  
Пользователь 15387 13.04.2012 11:26:16
Возможно, там же идут запросы к параметрам свойств, почему бы не сделать быстрые запросы к значениям свойств. Потому, что используя готовый api, для выборки одного значения слишком тяжелые у вас запросы  к бд. Приведу пример реальной задачи:
Есть элемент инфоблока например это сделка. У сделки есть статус из 5 значений этот статус представлен выпадающим списком. Менеджер меняет статус этой сделки.
И хотелось бы, чтобы был механизм, который бы позволял где-то, как-то реагировать, на то, что статус изменился, чтобы выполнить определенную функцию в связи с этим...
Рейтинг: 0  
Пользователь 3308 13.04.2012 12:54:06
Рейтинг: 0.5157  
Пользователь 13767 25.12.2012 07:42:17
Хотел создать такую же идею, но оказывается не я один к этому пришел.

Мне уже не раз приходилось сталкиваться ситуацией, когда в обработчике необходимо сравнивать некоторые свойства по старому и новому значению, и на основе сравнения производить некоторые действия, и каждый раз приходится дергать отдельным запросом значения того или иного свойства, что не есть удобно.