Перейти к содержанию

Изменение информации в "шапке" файла листа согласования

Изменение информации в “шапке” файла листа согласования

Например, в листе согласования необходимо к стандартной теме документа, которую лист согласования получает из DocumentCommonInfo.Subject, дописать информацию из другого поля карточки OtherCommonInfo.OtherSubject.

Для этого пишется расширение на лист согласования. Расширение пишется на сервере, наследуется от KrApprovalListExtension и регистрируется по интерфейсу IKrApprovalListExtension с указанием имени типа карточки. На каждый тип карточки может быть ровно одно расширение на лист согласования, которое регистрируется отдельно по имени типа.

using System; using Tessa.Platform.Data; using Tessa.Extensions.Default.Server.Workflow.KrProcess.Files;

public sealed class MyApprovalListExtension : KrApprovalListExtension { public MyApprovalListExtension(IDbScope dbScope) { this.dbScope = dbScope; }

private readonly IDbScope dbScope;

public override void BeforeRequest(KrApprovalListExtensionContext context) { string otherSubject;

using (this.dbScope.Create()) { DbManager db = this.dbScope.Db;

otherSubject = db .SetCommand( "select OtherSubject from OtherCommonInfo with(nolock) where ID = @ID", db.Parameter("@ID", context.CardID)) .LogCommand() .ExecuteScalar<string>(); }

// дописываем к стандартному полю "Тема" строку из otherSubject, если это поле непустое if (!string.IsNullOrEmpty(otherSubject)) { context.Subject += Environment.NewLine + otherSubject; } } }

[Registrator] public sealed class Registrator : RegistratorBase { public override void RegisterUnity() { this.UnityContainer .RegisterType<IKrApprovalListExtension, MyApprovalListExtension>( "CardTypeName", new ContainerControlledLifetimeManager()) ; }

public override void FinalizeRegistration() { this.UnityContainer .TryResolve<IKrApprovalListExtensionResolver>() ?.Register<MyApprovalListExtension>("CardTypeName"); } }

Back to top