﻿# Динамические формы приложений и процессов

> [HTML Version](360029574371.html)

Внешний вид формы может меняться в зависимости от данных, которые пользователь вносит в систему в процессе работы. Это позволяет не перегружать формы полями и кнопками. Они показываются только тогда, когда необходимы. Формы, которые подстраиваются подобным образом под пользователя, называются динамическими.

## Как работает динамическая форма

Предположим, компания занимается продажей офисной мебели. Учёт заказов, принятых от клиентов, ведётся в отдельном приложении. На каждый заказ оформляется своя карточка с такими полями, как **Товар**, **Количество**, **Сумма заказа** и **Итоговая сумма**.

**(hmfile_hash_41071ff3.png)**

При заказе от 100 000 рублей компания дарит клиентам скидку. Как только менеджер по продажам укажет сумму заказа свыше 100 000, в карточке появится дополнительное поле **Скидка**. Менеджер выпишет размер скидки, с учётом которой автоматически рассчитается итоговая сумма.

 **(hmfile_hash_ee3c8132.png)**

## Как настроить динамическую форму

В системе для настройки динамических форм используется виджет [Код](code_widget.md). Его можно разместить как на форме процессной задачи, так и на форме приложения.

На форму задачи виджет добавляется в редакторе форм. Подробнее об этом вы можете прочитать в статьях [«Вкладка „Формы“»](360012495991.md) и [«Дизайнер интерфейсов»](interface_designer.md). Из них вы также узнаете, как настроить свою собственную карточку задачи, как добавить на неё виджеты и настроить их.

На форму приложения виджет добавляется в [расширенном режиме](360028941032.md) настройки форм. В этом режиме вы можете настроить внешний вид карточки и создать пользовательский шаблон с виджетами. Обратите внимание, динамически изменяться будут только формы [создания](360029250871.md#create_tab) и [редактирования,](360029250871.md#edit_tab) так как именно на них пользователи вносят в систему новые данные.

Добавив виджет** Код** на форму, вы можете прописать в нём необходимую логику, используя [скрипты](https://tssdk.elma365.com/ru/latest/index.html). Для этого рекомендуем изучить следующие статьи:

- [«Виджет „Код“»](https://tssdk.elma365.com/ru/latest/modules/_102_ui_widgets_.html) — API для работы с формами элементов приложения и формами в бизнес-процессах;

- [Скрипты на Typescript ](type-script.md)— здесь собрана информация о скриптах для работы с объектами системы и внешними страницами.

````
начало внимание

````
Использование констант \[OBJECT\] или \[OBJECT\] в скриптах ограничивает экспорт компонентов системы. Подробнее об этом читайте в статье [«Глобальные константы в скриптах»](global-constants.md#export-restrictions).

````
конец внимание

## ````
Фильтрация на динамической форме

Чтобы упростить заполнение формы для пользователя, вы можете настроить список элементов, которые доступны для выбора в полях типа [Приложение](app-data-type.md) и [Пользователи](360009707032.md#users). 

Для этого задайте условия фильтрации с помощью опции [Ограничить выбор](limit-selection-of-elements.md). Например, для свойства типа **Приложение** можно настроить ограничение записей по дате создания, а в поле типа **Пользователи** фильтровать сотрудников по принадлежности определённой группе. 