Отслеживание истории изменения экземпляров объекта с помощью сценариев
Внимание!
Сценарий, указанный ниже, актуален для версий системы до 3.15.38 включительно.
Получить историю изменения объекта можно с помощью EntityActionHistoryManager. В его параметрах необходимо передать экземпляр объекта, по которому необходимо отследить изменения. Пусть имеется объект Test, нам необходимо отследить историю изменений первой записи этого справочника.
//получаем экземпляр объекта Test с идентификатором 1, т.е. первую запись этого справочника
//при необходимости Вы можете выбрать любой другой способ получения элемента справочника
var e = EntityManager<Test, long>.Instance.LoadOrNull(1L);
//если такой экземпляр найден, то
if (e != null)
{
//загружаем его историю в переменную hist
var hist = EntityActionHistoryManager.Instance.LoadHistory(e);
//выводим информацию о каждой записи об изменении на консоль:
//старое значение, новое значение и дата изменения
//данные значение Вы можете записывать в нужные Вам переменные вместо вывода на консоль
foreach(var h in hist)
{
var oldTest = (Test)h.Old;
var newTest = (Test)h.New;
Console.WriteLine("--------------------------------");
Console.WriteLine(oldTest.ChangeAuthor != null ? oldTest.ChangeAuthor.FullName : "null");
Console.WriteLine(newTest.ChangeAuthor != null ? newTest.ChangeAuthor.FullName : "null");
Console.WriteLine(h.ActionDate.ToString());
}
}
Для успешной компиляции сценария подключите следующие пространства имен:
using EleWise.ELMA.ConfigurationModel;
using EleWise.ELMA.Common.Managers;
using EleWise.ELMA.Model.Managers;
Приведение свойства элемента истории Old (и New) к типу объекта необходимо для того, чтобы можно было получить доступ к свойствам этого объекта, помимо поля наименования.
Внимание!
Для получения истории работы с объектом необходимо включить запись истории объекта. Для этого в настройках объекта в Дизайнере ELMA на вкладке Дополнительно в блоке Программные настройки должен быть установлен флажок Хранить историю изменения. Подробнее о хранении и отображении истории работы с объектами см. в соответствующей статье.