Для поиска карточек в DocsVision в основном используется атрибутивный поиск.
Поисковые запросы можно создавать в конструкторе и сохранять, чтобы потом привязывать к виртуальным папкам, либо использовать в скриптах для получения списка карточек.
Конструктор поисковых запросов присутствует в Navigator и DVExplorer.
Создание запроса в конструкторе хоть и долгое и нужно пройти кучу окон, но все же более наглядное, чем разработка в коде.
Рассмотрим пример создания и использования поисковых запросов в коде.
Поисковые запросы можно создавать в конструкторе и сохранять, чтобы потом привязывать к виртуальным папкам, либо использовать в скриптах для получения списка карточек.
Конструктор поисковых запросов присутствует в Navigator и DVExplorer.
Создание запроса в конструкторе хоть и долгое и нужно пройти кучу окон, но все же более наглядное, чем разработка в коде.
Рассмотрим пример создания и использования поисковых запросов в коде.
// создаем запрос
SearchQuery searchQuery = this.Session.CreateSearchQuery();
if (folder_id != null && folder_id != Guid.Empty)
{
// можно ограничить папкой
searchQuery.Scope.Folders.AddNew(folder_id).IncludeSubfolders = true;
}
// Поиск по типу карточки
CardTypeQuery typeQuery = searchQuery.AttributiveSearch.CardTypeQueries.AddNew(new Guid(CARDTYPE_ID));
// Поиск по секциям
if (doc_department != null)
{
SectionQuery sectionAddInfoQuery = typeQuery.SectionQueries.AddNew(new Guid(CARD_SECT_ADDINFO_ID));
sectionAddInfoQuery.Operation = SectionQueryOperation.And;
ConditionGroup condAddInfo = sectionAddInfoQuery.ConditionGroup;
condAddInfo.Operation = ConditionGroupOperation.And;
condAddInfo.Conditions.AddNew(SectAddInfo.RegDepartment.ToString(), FieldType.RefId, ConditionOperation.Equals, doc_department);
}
if (doc_date != null)
{
SectionQuery sectionAgendaQuery = typeQuery.SectionQueries.AddNew(new Guid(CARD_SECT_AGENDA_ID));
sectionAgendaQuery.Operation = SectionQueryOperation.And;
ConditionGroup condAgenda = sectionAgendaQuery.ConditionGroup;
condAgenda.Operation = ConditionGroupOperation.And;
condAgenda.Conditions.AddNew(SectAgenda.ДатаПроведенияЗаседания.ToString(), FieldType.DateTime, ConditionOperation.Equals, doc_date);
}
SectionQuery sectionSystemQuery = typeQuery.SectionQueries.AddNew(CardDocument.System.ID);
sectionSystemQuery.Operation = SectionQueryOperation.And;
ConditionGroup condSystem = sectionSystemQuery.ConditionGroup;
//condSystem.Operation = ConditionGroupOperation.And;
condSystem.Conditions.AddNew(CardDocument.System.Kind, FieldType.RefId, ConditionOperation.Equals, new Guid(CARD_KIND_ID));
// Получение текста запроса
String query = searchQuery.GetXml();
// query будет содержать запрос в виде xml, аналогичный тому, что генерируется в конструкторе поискового запроса, то есть можно использовать заранее подготовленный xml из конструктора
// выполнение поиска и получение коллекции карточек
CardDataCollection result = this.Session.CardManager.FindCards(query);
Комментариев нет:
Отправить комментарий