---
# System prepended metadata

title: Resource Field

---

# Resource Field

Ресурсы являются умными указателями появившимися в рамках проекта "Управление каналами". Их основное назначение - предоставление унифицированного метода адресации произвольных записей в базе (или их компонент).

Идентификатор ресурса представляет собой строку вида:

* `<схема>:<id>`
* `<схема>:<id>:<путь>`

Где:

* ` <схема>` - тип ресурса, см. далее
* `<id>` - идентификатор ресурса в базе
* `<путь>` - дополнительная детализация внутри ресурса

Некоторые типы ресурсов поддерживают дополнительный путь, некоторые - нет.

На настоящий момент используется только один вид ресурса:

| Схема | Модель | Путь? |
| --- | --- | --- |
| `o` | `inv.Object` | Да |

Пример:

```
o:123456789012345678901234:Gi1
```

Слот `Gi1` объекта с id `123456789012345678901234`

В связи с этим возникает необходимость в разработке универсального типа поля, которое будет использоваться для отображения и редактирования ресурсов в UI.

Поле должно:

* Работать на показ в grid (NOC.render.Lookup)
* Работать на показ и редактирование в форме
* Работать как inline editor в Grid.
* Ограничивать выбор отдельным видом ресурса и отдельной областью.

Показ в grid и формах можно реализовать по тому же принципу, что и для LookupField: backend генерирует внутреннее поле с суффиксом `__label` и заполняет его самостоятельно. Frontend его отображает.

Процесс заполнения формы пользователем происходит в 3 шага:

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

Значение поля всегда - id ресурса.

## Вопросы

* Отдельное приложение для работы с ресурсами?

## Prior Art

Форма выбора интерфейса для ручного создания линков.



