Table of Contents

Поиск в области поиска

Пример показывает, как выполнить поиск по строке в заданной области хранилища средствами клиентской библиотеки Ascon.Polynom.Web.Api.Client. Проект — Samples.WebApi.SearchQueryInScope.

Требования

  • .NET 8.
  • Запущенный web-сервер ПОЛИНОМ:MDM с доступным хранилищем.
  • Пакет Ascon.Polynom.Web.Api.Client из локального фида (подключается автоматически).

Алгоритм

  1. Авторизоваться в web-API.
  2. Задать строку и область поиска.
  3. Выполнить поиск.
  4. Обработать результат.
  5. Выйти из сессии.

Авторизация

Авторизация выполняется хелпером 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.