# 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
Форма выбора интерфейса для ручного создания линков.