Как отфильтровать список шаблонов, доступных при создании документа
<< Click to Display Table of Contents >> Разработка > Примеры разработки > Документы Как отфильтровать список шаблонов, доступных при создании документа |
Ситуация
Предположим, создан тип документа OfficialDocumentTemplate («Шаблон для официальных документов») – наследник от Sungero.Content.ElectronicDocumentTemplate. В системе созданы сущности данного типа: шаблон объяснительной записки, шаблон заявки на оборудование, шаблон докладной записки. Нужно, чтобы каждый шаблон отображался только при создании соответствующего вида документа.
Решение
1.В редакторе типа документа OfficialDocumentTemplate добавьте свойства:
•DocumentKind. Тип свойства – Ссылка, тип сущности – Sungero.Docflow.DocumentKind;
•Status. Тип свойства – Перечисление, значения перечисления – Active (Действующий), Closed (Закрытый).
2.Разместите созданные свойства на форме.
3.В редакторе типа документа OfficialDocumentTemplate в первом узле установите флажок рядом с серверным событием Фильтрация и перейдите по ссылке. Откроется редактор программного кода.
4.Добавьте код:
public override IQueryable<T> Filtering(IQueryable<T> query, Sungero.Domain.FilteringEventArgs e)
{
// Проверить, что фильтрация выполняется
// при создании документа из шаблона.
if (_createFromTemplateContext != null)
{
// Фильтровать шаблоны по статусу.
query = query.Where(d => d.Status == Status.Active);
// Фильтровать шаблоны по критериям.
if (Docflow.OfficialDocuments.Is(_createFromTemplateContext))
{
var document = Docflow.OfficialDocuments.As(_createFromTemplateContext);
query = query.Where(template => template.DocumentKind.Equals(document.DocumentKind));
}
}
return query;
}
Примечание. По такому принципу работает фильтрация в типе документа DocumentTemplate из базового решения Directum RX. Поэтому в стандартной версии системы при создании документа в списке для выбора отображаются только шаблоны, которые подходят документу по типу, виду, нашей организации и подразделению. При необходимости можно перекрыть тип документа DocumentTemplate и доработать фильтрацию.
© Компания Directum, 2024 |