Определение изменившегося поля в событиях Entity

Здравствуйте.

Место событий Entity, событие Saved, для которого был организован событийный подпроцесс. Последний со скриптом и сообщением которое запускает этот скрипт по событию. 

И вопрос, как в скрипте можно определить какие поля были изменены после сохранения, что бы в зависимости от этого в запустить свою логику?

Нравится

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

Добавьте еще подписку на событие, перед сохранением.

Так же делаете подписку, скрипт.

В параметрах создайте нужные переменные нужных типов.

После чего в самом скрипте "перед сохранением", делайте так:

ContactOld = Entity.GetTypedOldColumnValue<Guid>("Contact");

Затем, в вашем скрипте "После сохранения" делайте сверку

if (ContactOld != Entity.GetTypedColumnValue<Guid>("Contact") { // }

Добавьте еще подписку на событие, перед сохранением.

Так же делаете подписку, скрипт.

В параметрах создайте нужные переменные нужных типов.

После чего в самом скрипте "перед сохранением", делайте так:

ContactOld = Entity.GetTypedOldColumnValue<Guid>("Contact");

Затем, в вашем скрипте "После сохранения" делайте сверку

if (ContactOld != Entity.GetTypedColumnValue<Guid>("Contact") { // }

Это можно сделать только в событийном процессе объекте перед сохранением записи

Entity.GetColumnOldValue("Name")

или

Entity.GetTypedOldColumnValue<String>("Name");

 

Добрый день!

На вход элемента скрипта обработки сохранения подается переменная ProcessExecutingContext context (https://monosnap.com/file/TP10NeOGRBkG4zXPFKxrVZM8Tvj4I6).

В ней есть public object ThrowEventArgs { get; set; }, которая приводится к объекту EntityAfterEventArgs. А в этом объекте уже есть массив измененных колонок: public EntityColumnValueCollection ModifiedColumnValues { get; set; }

Еще проще проверить что столбец изменен

var flag = Entity.GetChangedColumnValues().Any(col => col.Name == "Date");

Всем спасибо!

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