Пример использования серверного поиска

Ниже приведён пример серверного поиска, выполняемого из скрипта карточки, по следующим данным карточки: части названия, автору и дате создания (должна быть больше указанной). Необходимые данные для серверного поиска получаем из соответствующих элементов управления.

private void Поиск_Click(System.Object sender, System.EventArgs e)
{
 ICustomizableControl control = CardControl;

 ILayoutPropertyItem cardName = control.FindPropertyItem<ILayoutPropertyItem>("Название");
 ILayoutPropertyItem cardAuthorId = control.FindPropertyItem<ILayoutPropertyItem>("Автор");
 ILayoutPropertyItem cardCreateBy = control.FindPropertyItem<ILayoutPropertyItem>("ДатаСозданияОт"); (1)

 if(cardName = null || cardAuthorId = null || cardCreateBy = null) return;

 SearchQuery searchQuery = this.Session.CreateSearchQuery(); (2)
 CardTypeQuery cardTypeQuery = searchQuery.AttributiveSearch.CardTypeQueries.AddNew(CardDocument.ID);
 SectionQuery sectionQuery = cardTypeQuery.SectionQueries.AddNew(CardDocument.MainInfo.ID);
 sectionQuery.ConditionGroup.Operation = ConditionGroupOperation.And; (3)

 string cardNameValue = cardName.ControlValue as string;
 if(!string.IsNullOrEmpty(cardNameValue)) (4)
 {
  sectionQuery.ConditionGroup.Conditions.AddNew(CardDocument.MainInfo.Name, FieldType.Unistring, ConditionOperation.Contains, cardNameValue);
 }

 Guid cardAuthorIdValue = (Guid)cardAuthorId.ControlValue;
 if(cardAuthorIdValue != Guid.Empty) (5)
 {
  sectionQuery.ConditionGroup.Conditions.AddNew(CardDocument.MainInfo.Author, FieldType.RefId, ConditionOperation.Equals, cardAuthorIdValue);
 }

 DateTime? cardCreateByValue = (DateTime?)cardCreateBy.ControlValue;
 if(cardCreateByValue.HasValue) (6)
 {
  sectionQuery.ConditionGroup.Conditions.AddNew(CardDocument.MainInfo.RegDate, FieldType.Unistring, ConditionOperation.GreaterEqual, cardCreateByValue.Value.Date);
 }

 CardDataCollection result = Session.CardManager.FindCards(searchQuery.GetXml()); (7)
}
1 Получение элементов управления, в которых указаны необходимые данные.
2 Организация атрибутивного поиска по секции MainInfo карточек типа Документ.
3 Искомые карточки должны удовлетворять всем условиям.
4 Добавление условия поиска по названию документа.
5 Добавление условия поиска по автору документа.
6 Добавление условия поиска по дате создания документа.
7 Результат поиска, который может быть выведен, к примеру, в список на карточке.