<< Click to Display Table of Contents >> Разработка > Примеры разработки > Согласование по регламенту Как в задаче по регламенту заполнить поле «Адресат» значением из нового типа документа |
Ситуация
Предположим, нужно создать новый тип документа «Заявка» (Request), в его карточку добавить поле Адресат. При отправке документа данного типа на согласование по регламенту поле Адресат в задаче должно заполняться значением из документа.
Решение
1.В своем решении создайте новый тип документа «Заявка» (Request). В качестве базового типа выберите «Внутренний документ» (InternalDocumentBase).
2.В редакторе решения добавьте зависимость от модуля Sungero.Docflow.
3.В редакторе созданного типа документа в узле «Свойства» добавьте свойство Адресат.
4.В узле «Форма» добавьте свойство на карточку нового типа документа. В результате форма заявки будет выглядеть следующим образом:
5.Чтобы значение из добавленного поля заполнялось в задаче на согласование по регламенту, перекройте задачу ApprovalTask.
6.Чтобы отразить изменения в правиле согласования, переопределите серверную функцию ApprovalRuleChanged(). Для этого в перекрытом типе задачи создайте серверную функцию и напишите ее код.
// <param name="rule">Новое правило.</param>
// <param name="stages">Список этапов согласования.</param>
public override void ApprovalRuleChanged(Sungero.Docflow.IApprovalRuleBase rule, List<Sungero.Docflow.Structures.Module.DefinedApprovalBaseStageLite> stages)
{
// Вызвать базовый обработчик.
base.ApprovalRuleChanged(rule, stages);
// Ввести этап с рассмотрением адресата.
var reviewStage = stages.Where(s => s.Stage.StageType == Sungero.Docflow.ApprovalStage.StageType.Review).FirstOrDefault();
if (reviewStage != null && _obj.Addressee == null)
{
// Заполнить адресата из документа.
var newDoc = Requests.As(_obj.DocumentGroup.OfficialDocuments.FirstOrDefault());
if (newDoc != null)
_obj.Addressee = newDoc.Addressee;
}
}
7.Сохраните изменения и опубликуйте разработку.
В Directum RX администратору нужно настроить правило согласования для нового типа документа. Чтобы поле *Адресат отображалось, в правиле должен быть этап типа «Рассмотрение адресатом». В результате при отправке нового типа документа на согласование по регламенту поле *Адресат в задаче заполнится из документа.
© Компания Directum, 2024 |