Перейти к основному содержанию
`Ctrl`+`K`

# Пользовательские (динамические) приложения

Пользовательские (динамические) приложения позволяют создавать и настраивать новые приложения без изменения исходного кода. Такой «Low-code» подход ускоряет внедрение бизнес-логики.

## Основные возможности

1. Создание приложений - добавление нового приложения и его настройка из интерфейса, без привлечения программиста.

2. Гибкая конфигурация - детальная настройка операций главного меню приложения.

3. Управление правами доступа - возможность настроить права для приложения и его операций.

4. Миграция конфигураций - созданные приложения можно переносить между базами с помощью менеджера конфигураций.

## Создание нового приложения

1. Перейдите в раздел `Настройка системы > Сущности > Динамические приложения`.

2. Нажмите на кнопку `Создать`.

3. Заполните все обязательные поля.

4. В разделе `Дополнительно` карточки приложения выполните операцию `Синхронизировать административные объекты` .

После этого пользовательское приложение будет доступно для выбора в стандартном списке приложений.

Примечание

Мнемокод (имя) динамического приложения нельзя изменять после создания.

## Пункты меню

Главное меню пользовательского приложения формируется на основе Default`-отображения указанного Avi-контроллера (по умолчанию —` Bs_DynamicMainMenuAvi`, который наследует настройки от` ApplicationAvi`):

Верхняя синяя панель: пункты главного меню динамического приложения с настройками по умолчанию. Включает в себя автоматически заполняемые фильтры.
Структура главного меню: те же пункты, представленные в виде дерева в карточке приложения.

Внимание

После каждого изменения структуры пунктов меню НЕОБХОДИМО создавать адм. объекты.

Для этого можно использовать операцию `"Синхронизировать административные объекты"` в разделе `"Дополнительно"` карточки динамического приложения.

Логика работы пунктов меню задаётся Jexl-скриптом, который выполняется в контексте текущей выборки. Для пользовательских пунктов меню скрипт можно редактировать

### Добавление пунктов меню

Пункты меню можно создавать двумя способами:

1. Из динамического меню - ипортирует выбранные элементы со всеми предками. Такие пункты меню используют для открытия отображения функцию `ru.bitec.app.btk.menu.Btk_MenuTreeLib#callMenuProcess` с соответствующим мнемокодом, что упрощает перенос с одной базы на другую.

2. Вручную - добавляет новую операцию с настройками по умолчанию, после чего её параметры можно откорректировать.

### Редактирование структуры и свойств

Для редактирования пунктов главного меню в детализации к карточке динамического приложения доступно дерево операций `Структура главного меню`. Она содержит как операции Avi-контроллера, так и добавленные пользовательские элементы.

- Изменение основных свойств (порядковый номер, иконка, активность) можно выполнять прямо в дереве `Структура главного меню`.

- Дополнительные параметры редактируются на вкладке `Свойства`.

- Jexl-скрипт операции задаётся на вкладке `Jexl-скрипт`.

Примечание

Внутренняя логика работы с пунктами меню пользовательских приложений полностью повторяет пользовательские jexl-операций (см. раздел «Пользовательские jexl-операции»).

- В качестве мастер выборки всегда используется: `Btk_SelOperOverride.sMasterSel = 'Btk_DynamicMainMenuAvi'`.

- Мастер отображение совпадает с мнемокодом динамического приложения : `Btk_SelOperOverride.sMasterRep = '<Имя динамического приложения>'`.

- Все операции так же имеют префикс `jexl_`.

#### Управление иерархией

Для задания вложенности пунктов меню используется атрибут `headOperation` — мнемокод родительской операции. Изменить его можно во вкладке `Структура главного меню > Свойства`: при клике на кнопку выбора откроется список доступных операций.