logo

Отслеживание истории изменения экземпляров объекта с помощью сценариев

Получить историю изменения объекта можно с помощью 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;
Приведение свойства элемента истории OldNew) к типу объекта необходимо для того, чтобы можно было получить доступ к свойствам этого объекта, помимо поля-наименования.

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