Отслеживание истории изменения экземпляров объекта с помощью сценариев
Получить историю изменения объекта можно с помощью EntityActionHistoryManager. В его параметрах необходимо передать экземпляр объекта, по которому необходимо отследить изменения. Пусть имеется объект Test, нам необходимо отследить историю изменений первой записи этого справочника.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | //получаем экземпляр объекта Test с идентификатором 1, т.е. первую запись этого справочника //при необходимости Вы можете выбрать любой другой способ получения элемента справочника var e = EntityManager<Test, long >.Instance.LoadOrNull(1); //если такой экземпляр найден, то if (e != null ) { //загружаем его историю в переменную hist var hist = EntityActionHistoryManager.Instance.LoadHistory(e).ToList(); //выводим информацию о каждой записи об изменении на консоль: //старое значение, новое значение и дата изменения //данные значение Вы можете записывать в нужные Вам переменные вместо вывода на консоль hist.ForEach(h =>{ Console.WriteLine( "--------------------------------" ); Console.WriteLine(((Test)h.Old).Tekst); Console.WriteLine(((Test)h.New).Tekst); Console.WriteLine(h.ActionDate.ToString()); }); } |
Для успешной компиляции сценария подключите следующие пространства имен:
1 2 3 | using EleWise.ELMA.ConfigurationModel; using EleWise.ELMA.Common.Managers; using EleWise.ELMA.Model.Managers; |
Приведение свойства элемента истории Old (и New) к типу объекта необходимо для того, чтобы можно было получить доступ к свойствам этого объекта, помимо поля-наименования.
Для того, чтобы история была доступна и сценарий работал корректно, в настройках объекта на вкладке Дополнительно в разделе Программные настройки должен быть установлен флажок Хранить историю изменения.