Отслеживание истории изменения экземпляров объекта с помощью сценариев
Получить историю изменения объекта можно с помощью EntityActionHistoryManager. В его параметрах необходимо передать экземпляр объекта, по которому необходимо отследить изменения. Пусть имеется объект Test, нам необходимо отследить историю изменений первой записи этого справочника.
//получаем экземпляр объекта 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());
});
}
Для успешной компиляции сценария подключите следующие пространства имен:
using EleWise.ELMA.ConfigurationModel; using EleWise.ELMA.Common.Managers; using EleWise.ELMA.Model.Managers;
Приведение свойства элемента истории Old (и New) к типу объекта необходимо для того, чтобы можно было получить доступ к свойствам этого объекта, помимо поля-наименования.
Для того, чтобы история была доступна и сценарий работал корректно, в настройках объекта на вкладке Дополнительно в разделе Программные настройки должен быть установлен флажок Хранить историю изменения.