<< Click to Display Table of Contents >> Разработка > Примеры разработки > Обработчики событий Как добавить действие в историю работы с сущностью |
Ситуация
Необходимо записывать в историю работы с сущностью выполненные действия. Например, для записей справочника ProjectCore («Проекты») фиксировать в истории изменение состояния проекта.
Состояние проекта содержится в свойстве Stage. Оно отражает, на какой стадии находится проект: инициация, исполнение, завершение, завершен.
Решение
В событии До сохранения истории необходимо создать перечисление с характеристикой выполняемой операции и вызвать метод Write(). Для этого:
1.В своем решении перекройте тип справочника ProjectCore («Проекты»).
2.В перекрытом типе справочника добавьте константу:
public const string StatusChange = "EStatusChange";
3.Добавьте обработчик события До сохранения истории:
public override void BeforeSaveHistory(Sungero.Domain.HistoryEventArgs e)
{
// Вызов базового обработчика события.
base.BeforeSaveHistory(e);
// Изменение состояния свойства Stage.
var isStatusChanged = _obj.State.Properties.Stage.IsChanged;
if (isStatusChanged)
{
// Добавление перечисления. StatusChange – ранее добавленная константа.
var operation = new Enumeration(Constants.Projects.ProjectCore.StatusChange);
var operationDetailed = operation;
var comment = DEV.PerekrytiiaExample.Projects.Resources.
StatusChangeHistoryTemplateFormat(Projects.Info.Properties.Stage.
GetLocalizedValue(_obj.Stage));
// Запись дополнительной информации в историю.
e.Write(operation, operationDetailed, comment);
}
}
При добавлении кода обработчика события необходимо добавить ресурсы, значения которых будут отображаться на закладке «История»:
•Enum_Operation_<Ранее добавленная константа>. В данном случае это Enum_Operation_EStatusChange. Значение будет отображаться в столбце «Действие»;
•StatusChangeHistoryTemplate. Значение будет отображаться в столбце «Комментарий».
4.Сохраните изменения и опубликуйте разработку.
В результате при изменении состояния проекта в истории будет записываться информация об этом:
© Компания Directum, 2024 |