Здравствуйте.
Место событий Entity, событие Saved, для которого был организован событийный подпроцесс. Последний со скриптом и сообщением которое запускает этот скрипт по событию.
И вопрос, как в скрипте можно определить какие поля были изменены после сохранения, что бы в зависимости от этого в запустить свою логику?
Нравится
Добавьте еще подписку на событие, перед сохранением.
Так же делаете подписку, скрипт.
В параметрах создайте нужные переменные нужных типов.
После чего в самом скрипте "перед сохранением", делайте так:
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");