Реализация eql-поиска по документу

Примечание
Перед началом работы со сценариями рекомендуется ознакомиться со стандартами написания программного кода на языке C#.

Рассмотрим вариант реализации eql-поиск для документа.

Для примера возьмем документ Файл и добавим в него атрибут EqlStr типа Строка (рис. 1.1), на вкладке Дополнительно установим признак Участвуем в поиске (фильтре) (Рис. 1.2).

Рис. 1,1

Рис. 1.2

В модуль сценариев добавим новый класс:

public class FileManager: DocumentManager <IFileConfigExt, long>
    {
        public static FileManager Instance
        {
            get {return Locator.GetServiceNotNull <FileManager> (); }
        }
        public override void SetupFilter (ICriteria criteria, IEntityFilter filter) 
{ 
var eqlDocExtFilter = filter as IFileConfigExtFilter; 
if (eqlDocExtFilter! = null) 
{ 
if (! String.IsNullOrEmpty (eqlDocExtFilter.EQLStr)) SetupFilterQuery (criteria, eqlDocExtFilter.EQLStr); 
}
base.SetupFilter (criteria, filter); 
} 
}

И добавим:

using EleWise.ELMA.Documents.Models;
using EleWise.ELMA.Documents.Managers;
using NHibernate;

После публикации документа и перезапуска сервера в фильтре документа Файл появится поле EQLStr (Рис. 1.3), в котором можно ввести eql-запрос.

Рис. 1,3

Примечания
  1. В данной реализации конструктор eql-запросов будет не доступен.
  2. Данный функционал реализует eql-поиск только для одного типа документа (для наследников он работать не будет).