Поиск в области поиска
Пример показывает, как выполнить поиск по строке в заданной области хранилища средствами клиентской
библиотеки Ascon.Polynom.Web.Api.Client. Проект — Samples.WebApi.SearchQueryInScope.
Требования
- .NET 8.
- Запущенный web-сервер ПОЛИНОМ:MDM с доступным хранилищем.
- Пакет
Ascon.Polynom.Web.Api.Clientиз локального фида (подключается автоматически).
Алгоритм
- Авторизоваться в web-API.
- Задать строку и область поиска.
- Выполнить поиск.
- Обработать результат.
- Выйти из сессии.
Авторизация
Авторизация выполняется хелпером PolynomClientSession поверх
AuthorizationService.
Подробно — в разделе
Авторизация в C# через клиентскую библиотеку.
Реализация
Поиск выполняет метод ExecuteSearch сервиса
SearchApiClient с моделью
SearchRequest. Область поиска задаётся
коллекцией IIdentifiableObject;
по умолчанию используется область «все справочники». Результат преобразуется в список имён найденных
объектов.
using Ascon.Polynom.Web.Api.Client.Enums;
using Samples.WebApi.Common.Services;
using var session = await PolynomClientSession.CreateAsync(cancellationToken);
// Строка поиска и область поиска (по умолчанию — все справочники).
var queryString = "Изделие";
var scopeObjectId = 1;
var scopeType = IdentifiableObjectType.AllStandardReferences;
var request = new SearchRequest
{
SearchText = queryString,
Scopes = new List<IIdentifiableObject>
{
new IdentifiableObject { ObjectId = scopeObjectId, TypeId = scopeType }
},
PageNumber = 0,
PageSize = 0
};
var result = await session.Factory.CreateSearchApiClient().ExecuteSearch(request, cancellationToken);
// Имена найденных объектов — готовый результат для отображения или отбора.
var foundNames = (result?.Items ?? new())
.Select(item => item.Name)
.ToList();
await session.SignOutAsync(cancellationToken);
Используемые методы библиотеки
| Сервис | Метод | Назначение |
|---|---|---|
SearchApiClient |
ExecuteSearch(SearchRequest, CancellationToken) |
Поиск по строке в заданной области |
Результат
result содержит найденные объекты и общее количество (TotalCount), а foundNames — список их имён.
Возможные ошибки
- Пустой результат — проверьте строку поиска и область.
- Некорректная область — идентификатор и тип области задаются числами; при необходимости используйте область по умолчанию.
- Сессия истекла — библиотека обновит токен и повторит запрос; при неудаче требуется повторный вход.
Ссылки
Пример-приложение в составе SDK: SDK/Web/Samples/Server/Samples.WebApi.SearchQueryInScope.