# Поиск объекта по идентификатору

Система позволяет найти объект по его глобальному идентификатору (**GID**), который имеет формат: `[идентификатор класса]/[идентификатор объекта]`.

Чтобы найти объект, в любом приложении выберите пункт меню:  
`Сервис > Поиск по глобальному идентификатору`.

Откроется окно ввода:

![3](/img/Img92(ObjectSearch).jpg)

После ввода GID система открывает карточку объекта. Если объект не найден, отображается сообщение об ошибке.

## Открытие карточки объекта по параметрам

Карточку объекта можно открыть по внешней ссылке с параметрами поиска. При переходе по такой ссылке механизм `Btk_UrlObjectFinder` автоматически обрабатывает URL-запрос, извлекает параметры, находит объект в базе данных и открывает его карточку.

Механизм работает автоматически при переходе по ссылке. У него нет пользовательского интерфейса, и он не предназначен для ручного запуска.

URL для открытия карточки можно сформировать с помощью метода `Btk_UrlObjectFinderPkg#createExternalCardUrl()`.

Поиск поддерживает любое количество параметров, пока не превышена максимальная длина URL. Рекомендуемая длина URL — не более 1024–2048 символов.

Пример URL:

```
https://example.ru:8080/PGDEV/gtk-ru.bitec.app.btk.utils.Btk_UrlObjectFinder%23UrlFinder/?ex;sTableName_dz=Bs_Performer&ex;id=1234
```

В примере:

- `example.ru` — доменное имя сервера;
- `8080` — порт сервера;
- `PGDEV` — рабочая база;
- `Btk_UrlObjectFinder%23UrlFinder` — выборка и отображение, через которые выполняется открытие карточки;
- `sTableName_dz=Bs_Performer` — имя таблицы или объекта, в котором выполняется поиск;
- `id=1234` — параметр поиска.

При переходе по этой ссылке система выполнит поиск объекта в таблице `Bs_Performer` по атрибуту `id` со значением `1234` и откроет карточку найденного объекта.

```{attention}
Имя таблицы должно быть указано с учетом регистра.

Например, нужно указывать `Btk_UrlObjectFinder`, а не `btk_urlobjectfinder`.
```

### Параметры поиска

Параметры поиска передаются в URL как пары `<FieldName>=<Value>`.

Первый параметр передается после `?ex;`, каждый следующий — после `&ex;`.

Если в URL передано несколько условий, они объединяются логической операцией `AND`. Карточка открывается только для объекта, который соответствует всем переданным условиям.

Примеры параметров поиска:

- `Bs_Performer.id=1234` — поиск по атрибуту связанной коллекции `Bs_Performer`;
- `gidsrcobj=1/1` — поиск по атрибуту объекта;
- `dEnd=07.07.1997` — поиск по дате.

```{note}
Названия атрибутов регистронезависимы.
```

### Формат дат

Для поиска по дате используются следующие форматы:

- дата — `ДД.ММ.ГГГГ`;
- дата и время — `ДД.ММ.ГГГГ ЧЧ:ММ:СС`.

Примеры:

- `22.03.2007`;
- `23.02.2023 16:25:01`.

### Поиск по атрибутам связанных таблиц

При открытии карточки по параметрам можно искать основной объект не только по его собственным атрибутам, но и по атрибутам связанных таблиц.

Для этого используется точечная нотация:

```
<связанная-таблица>.<атрибут>=<значение>
```

Пример:

```
http://<host>:<port>/<cluster>/gtk-ru.bitec.app.btk.utils.Btk_UrlObjectFinder%23UrlFinder/?ex;sTableName_dz=Bs_Contras&ex;Bs_ContrasRWStation.idRailwayStation=2701234677
```

В примере система ищет объект `Bs_Contras`, у которого в связанной таблице `Bs_ContrasRWStation` есть запись с атрибутом `idRailwayStation`, равным `2701234677`. После нахождения объекта открывается карточка `Bs_Contras`.

## Открытие карточки объекта по GID

Карточку объекта можно открыть по ссылке, в которой передан глобальный идентификатор объекта (**GID**). Такой способ используется, когда нужно перейти к конкретному объекту напрямую, без ручного поиска в интерфейсе.

При переходе по ссылке система определяет объект по параметру `gid` и открывает его карточку.

Пример URL:

```
http://<host>:<port>/<cluster>/gtk-ru.bitec.app.btk.Btk_OpenByGid%23Card/?ex;gid=1260600/27213
```

В примере:

- `<host>` — доменное имя или IP-адрес сервера;
- `<port>` — порт сервера (необязательно);
- `<cluster>` — рабочая база;
- `gtk-ru.bitec.app.btk.Btk_OpenByGid%23Card` — выборка и отображение, через которые открывается карточка объекта;
- `gid=1260600/27213` — глобальный идентификатор объекта.

Готовую ссылку на текущий объект можно получить из окна **Информация об объекте**.

Путь: **Информация > Информация об объекте**.

Также окно можно открыть сочетанием клавиш **Ctrl + Alt + I**.

В окне **Информация об объекте** ссылка находится в поле **Гиперссылка на экземпляр БО**. Ее можно скопировать и использовать для прямого перехода к карточке объекта.

### Структура запроса

```
http://<host>:<port>/<cluster>/gtk-ru.bitec.app.btk.Btk_OpenByGid%23Card/?ex;gid=<gid>
```

- **`<host>`** — доменное имя или IP-адрес сервера.
- **`<port>`** — порт сервера (не обязательно).
- **`<cluster>`** — рабочая база.
- **`gtk-ru.bitec.app.btk.Btk_OpenByGid%23Card`** — выборка и отображение сервиса.
- **`gid=<gid>`** — глобальный идентификатор объекта (например: `gid=1260600/27213`).