logo

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

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