# Пользовательские (динамические) приложения Пользовательские (динамические) приложения позволяют создавать и настраивать новые приложения без изменения исходного кода. Такой "Low-code" подход ускоряет внедрение бизнес-логики. ## Основные возможности 1. **Создание приложений**\ добавление нового приложения и его настройка из интерфейса, без привлечения программиста. 2. **Гибкая конфигурация**\ детальная настройка операций главного меню приложения. 3. **Управление правами доступа**\ возможность настроить права для приложения и его операций. 4. **Миграция конфигураций**\ созданные приложения можно переносить между базами с помощью менеджера конфигураций. ## Создание нового приложения 1. Перейдите в раздел `Настройка системы > Сущности > Динамические приложения` 2. Нажмите на кнопку `Создать` 3. Заполните все обязательные поля: 4. В разделе `Дополнительно` карточки приложения выполните операцию `Синхронизировать административные объекты` После этого пользовательское приложение будет доступно для выбора в стандартном списке приложений ```{note} Мнемокод (имя) динамического приложения нельзя изменять после создания! ``` ## Пункты меню Главное меню пользовательского приложения формируется на основе `Default`-отображения указанного Avi-контроллера (по умолчанию — `Bs_DynamicMainMenuAvi`, который наследует настройки от `ApplicationAvi`): ![](./img/default_dyn_app_menu.png) **Верхняя синяя панель**: пункты главного меню динамического приложения с настройками по умолчанию. Также включает в себя автоматически заполняемые фильтры\ **Структура главного меню**: те же пункты, представленные в виде дерева в карточке приложения ```{attention} После каждого изменения структуры пунктов меню **НЕОБХОДИМО** создавать адм. объекты Для этого можно использовать операцию `"Синхронизировать административные объекты"` в разделе `"Дополнительно"` карточки динамического приложения) ``` Логика работы пунктов меню задаётся Jexl-скриптом, который выполняется в контексте текущей выборки. Для пользовательских пунктов меню скрипт можно редактировать ### Добавление пунктов меню Пункты меню можно создавать двумя способами: 1. **Из динамического меню**\ Импортирует выбранные элементы со всеми предками. Такие пункты меню используют для открытия отображения функцию `ru.bitec.app.btk.menu.Btk_MenuTreeLib#callMenuProcess` с соответствующим мнемокодом, что упрощает перенос с одной базы на другую 2. **Вручную**\ Добавляет новую операцию с настройками по умолчанию, после чего её параметры можно откорректировать ### Редактирование структуры и свойств Для редактирования пунктов главного меню в детализации к карточке динамического приложения доступно дерево операций `Структура главного меню`. Она содержит как операции Avi-контроллера, так и добавленные пользовательские элементы. - Изменение основных свойств (порядковый номер, иконка, активность) можно выполнять прямо в дереве `Структура главного меню` - Дополнительные параметры редактируются на вкладке `Свойства` - Jexl-скрипт операции задаётся на вкладке `Jexl-скрипт` ```{note} Внутренняя логика работы с пунктами меню пользовательских приложений полностью повторяет пользовательские jexl-операций ([см. раздел "Пользовательские jexl-операции"](http://helpcenter.gs.local/doc-gsf-guide/html/040_selection/080_%D0%B2%D1%8B%D0%B1%D0%BE%D1%80%D0%BA%D0%B0.html#id20)) - В качестве мастер выборки всегда используется\ `Btk_SelOperOverride.sMasterSel = 'Btk_DynamicMainMenuAvi'` - Мастер отображение совпадает с мнемокодом динамического приложения\ `Btk_SelOperOverride.sMasterRep = '<Имя динамического приложения>'` - Все операции так же имеют префикс `jexl_` ``` #### Управление иерархией Для задания вложенности пунктов меню используется атрибут `headOperation` — мнемокод родительской операции. Изменить его можно во вкладке `Структура главного меню > Свойства`: при клике на кнопку выбора откроется список доступных операций.