Сигнал "изменение записи", понять какое поле изменилось

Есть БП, реагирующий на изменение записи, на несколько полей.

Можно ли внутри БП понять, какое именно поле или поля изменились, т.к. скорее всего будут меняться не все поля???

Нравится

8 комментариев
Лучший ответ

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

Инструментами БП, если не ошибаюсь, такое нельзя определить.

как альтернатива можно несколько сигналов стартовых добавить, каждый будет отлавливать свое событие.

Вадим Косарев,

а отловится, если изменилось несколько полей, а не одно?

Нужно делать процесс в объекте на сигнал Saving, где можно сравнивать старые и новые значения. И уже оттуда запускать какую-то логику

Такое можно определить во встроенном БП на событии Saving, там можно прочитать старое (GetTypedOldColumnValue) и новое (GetTypedColumnValue) значение полей до момента записи в базу. А затем полученные значения учитывать на Saved уже после сохранения. Подробнее см. в теме.

Всем спасибо за ответы! Уточню, мне не нужны старые значения, мне просто нужно понять какие поля изменились. Или это же только Saving?

 

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

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

Алексей-Карягин,

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

Показать все комментарии