<< Click to Display Table of Contents >> Разработка > Элементы разработки > События типов сущностей Разделяемые события |
У наследников Sungero.CoreEntities.User помимо основных серверных и клиентских событий есть разделяемое событие «Получение информации о подписавшем».
Получение информации о подписавшем (SignatoryInfoObtaining)
Выполняется, когда пользователь подписывает документ.
Назначение. Событие используется, чтобы при подписании документа сохранить информацию о подписавшем в классе ISignature.AdditionalInfo. Полученную информацию можно использовать, например, для отображения в отчете.
ПРИМЕЧАНИЕ. В предыдущих версиях Directum RX событие было клиентским. Если тогда для него был написан обработчик, то в редакторе типа справочника событие по-прежнему отображается в группе «Клиентские события». Например, оно является клиентским в базовом решении Directum RX в справочнике Сотрудники (Employee). Такое поведение оставлено для совместимости кода. После перекрытия справочника событие появится в группе «Разделяемые события» и его можно будет переопределить.
Аргументы события:
•_obj – пользователь, для которого вызывается событие;
•e.FullName – полное имя пользователя. Автоматически заполняется из свойства Name сущности;
•e.AdditionalInfo – дополнительная информация о пользователе. Может содержать любую текстовую информацию. Например, должность пользователя. Эта информация нигде не отображается, но ее можно получить через интерфейс подписи ISignature.
Возвращаемое значение: нет. Информация о подписавшем записывается в аргументы e.FullName и e.AdditionalInfo.
Пример обработчика события для справочника «Сотрудники» (Employee):
public override void SignatoryInfoObtaining(Sungero.Domain.Client.SignatoryInfoObtainingEventArgs e)
{
// Получить должность сотрудника.
var result = _obj.JobTitle != null ? _obj.JobTitle.Name.Trim() : string.Empty;
// Если подразделение не пустое, то выполнить дальнейшие действия.
if (_obj.Department != null)
{
// Получить подразделение сотрудника.
var department = string.IsNullOrEmpty(_obj.Department.ShortName) ? _obj.Department.Name : _obj.Department.ShortName;
// Если должность не заполнена, то в результат записать только подразделение.
if (string.IsNullOrEmpty(result))
result = department;
else
// Иначе в результат записать должность и подразделение.
result = string.Format("{0} ({1})", result, department);
}
// Результат записать в дополнительную информацию о пользователе
// и добавить разделитель |.
e.AdditionalInfo = result + "|";
}
© Компания Directum, 2024 |