# Редактор формы
Форма - это xml-документ, который хранит настройки компоновщиков, типов фреймов, динамическое части и закладки. Настройки формы можно применить к отображениям, чтобы скопировать в нее разметку
По структуре редактор формы схож с редактором карточки. Он состоит из превью формы и дерева объектов с закладкой свойств этих объектов.
![Интерфейс редактора карточки](img/cfgFormEditor.jpg)
## Создание формы
Для создания формы необходимо в обозревателе проекта выбрать Avi-файл интересующей выборки, вызвать операцию "Создать форму" и выбрать отображение, для которого будет строиться форма. После создания в каталоге появится файл разметки формы с расширением frm.xml.
## Создание закладок и динамических частей
К любым объектам можно добавлять любое количество закладок и динамических частей.
### Свойства закладок и динамических частей
Для закладок и динамических частей есть основные свойства: наименование, выборка и отображение, компоновщик, фрейм.
Для закладок можно также указать наименование, которое будет отображаться в названии, порядок отображения, Url и номер иконки, видимость.
Для динамических частей, помимо основных свойств, можно указать выравнивание и видимость.
## Фиксированные и динамические закладки
*Фиксированные закладки* - способ добавления закладок с помощью `tabComposer`. В таком режиме все закладки фрейма прописываются в avm. Устанавливается по умолчанию.
*Динамические закладки* - способ добавления закладок с помощью запроса. В настройке указывается выборка со списком закладок и отображение выборки, а так же дополнительные управляющие атрибуты.
### Список закладок объекта
Закладки объекта с фиксированным режимом закладок отображаются списком на закладке "Список".
### Возможные закладки
Закладки объекта с динамическим режимом закладок, заданные вручную отображаются на закладке "Возможные закладки".
### Добавление возможных закладок
Для возможных закладок создать закладку можно 3 способами:
* Создать \
Создает пустую закладку - то же самое, что создать закладку из меню дерева.
* Добавить все закладки класса из справочника закладок \
Позволяет выбрать класс, с которого будут скопированы все закладки
* Добавить с выбором из справочника закладок \
Отображает все закладки из справочника закладок и добавляет выбранные
![Интерфейс редактора карточки](img/cfgAvailableItems.jpg)
## Создание выборки и отображения
Помимо указания выборки и отображения из существующих, можно создать выборку прямо из редактора. ![Интерфейс редактора карточки](img/cfgCreateSelOrRep.jpg)>
Для создания отображения существует несколько способов:
1. Создать новое отображение \
В выборке создается новое пустое отображение с заданным именем.
2. Копировать отображение \
Копируется указанное отображение выборки. Разметка avm будет полностью скопирована, а в Avi будет создан трейт, наследующийся от исходной выборки.
3. Создать по тексту запроса \
Анализируются параметры SQL-запроса и на его основе создается выборка. В открывшемся мастере можно задать параметры атрибутов.
4. Создать по тексту case-класса \
Аналогично 3
## Открытие в редакторе карточки
Если у объекта указан фрейм *card* - в дереве у таких объектов активирован флажок в поле "Карточка" - можно перейти в [редактор карточки](010_редактор_карточки.md) для этого объекта. Для этого достаточно нажать на этот объект в превью формы. Объекты, по которым можно перейти в редактор карточки, подсвечиваются пиктограммой.
![Интерфейс редактора карточки](img/cfgOpenCardEditor.jpg)
## Превью формы
Редактор умеет отображать:
- списки - определяет поля, фильтры списка
- карточки - рисуются по тому же алгоритму, что в редакторе карточки.
```{note}
Отображение выборки в превью может немного отличаться от того, что будет рисовать сервер приложения. Это связано с тем, что алгоритмы отрисовки немного отличаются. Сервер считает размеры в пикселях, превью - в процентах. В целом выборка в превью отображается правдоподобно.
```
## Применение настройки формы к выборке
Во время редактирования формы изменения не применяются к выборкам. Для этого нужно запустить операцию "Применить настройки формы к выборкам". Система проанализирует внесенные изменения и отобразит их на экране, после чего будет ждать подтверждения проведения операции от пользователя.