Практика 2.2 Создание выборки основного меню приложения.
Требуемые условия завершения
Дать ответ на задание
Ответ на задание необходимо предоставить в виде файлов Scala и XML, которые были изменены в текущем уроке (для написанного программного кода). Скриншоты интерфейса приложения для заданий выполняемых в интерфейсе и для демонстрации работы кода в системе Global ERP следует отправить в формате PDF, PNG или JPG. Для удобства рекомендуется прислать все файлы в одном архиве.
В ответе на задание должны содержаться элементы, обеспечивающие работоспособность описанного в задании функционала.
Создайте основную выборку приложения Библиотека
src/main/resources/ru/bitec/app/lbr/Lbr_MainMenu.avm.xml
<?xml version="1.0"?> <view xmlns="http://www.global-system.ru/xsd/global3-view-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.global-system.ru/xsd/global3-view-1.0.xsd" name="Lbr_MainMenu"> <acObject caption="Управление библиотекой"/> <representation name="Default" caption="Управление библиотекой" editMode="edit" > <layout> <simpleComposer> <frame caption="Управление библиотекой"> <grid/> </frame> </simpleComposer> </layout> <attributes> <attr name="ID" caption="Идентификатор" isVisible="false"/> <attr name="IDACCESSGROUP#" caption="Группа доступа" isVisible="false"/> <attr name="dGlobalCurrentDate" caption="Дата" editorType="datePick" order="40"/> <attr name="idGlobalDepOwner" caption="Организация" isVisible="false" order="40"/> <attr name="idGlobalDepOwnerHL" caption="Организация" order="40.2"> <editor> <lookup lookupQuery="gtk-ru.bitec.app.bs.Bs_DepOwnerAvi#Lookup" changeableAttr="idGlobalDepOwner" isLookupLazyLoad="true" lookupKeyAttr="id" lookupListAttr="sHeadLine" isResetButtonVisible="true"/> </editor> <ref class="Bs_DepOwner"/> </attr> <attr name="dGlobalBeginDate" caption="Период с" editorType="datePick" order="50" isLastInLine="true"/> <attr name="dGlobalEndDate" caption="по" editorType="datePick" order="60" isLastInLine="true"/> <attr name="nChoosePeriodBtn" caption="Выбрать период" editorType="button" order="65"/> </attributes> <operations> </operations> </representation> </view>
2. Создайте файл src/main/scala/ru/bitec/app/lbr/Lbr_MainMenuAvi.scala
package ru.bitec.app.lbr import ru.bitec.app.bs._ import ru.bitec.app.btk._ import ru.bitec.app.gtk.gl.avi.Visibilities import ru.bitec.gtk.core.AvmFile @AvmFile(name = "Lbr_MainMenu.avm.xml") object Lbr_MainMenuAvi extends Bs_ApplicationAvi { override def default(): Default = { new Default { override def meta = this } } trait Default extends super.Default { override def onLoadMeta(): Unit = { super.onLoadMeta() } //========== Справочники ====================== @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, imageCollection="Btk_Application", imageIndex=6, visibleOnMainMenu = Visibilities.Visible, caption = "Справочники", order = 10) def mm_ReferenceRoot(): Unit = {} //-------Подразделения----- @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Подразделения", order = 10, headOperation = "mm_ReferenceRoot") def mm_DepartmentRoot(): Unit = {} @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Подразделения", order = 5, headOperation = "mm_DepartmentRoot") def mm_Department(): Unit = { Bs_DepartmentAvi.tree().newForm().open() } @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Организации", order = 10, headOperation = "mm_DepartmentRoot") def mm_Bs_DepOwner(): Unit = { Bs_DepOwnerAvi.list().newForm().open() } @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Виды подразделений", order = 20, headOperation = "mm_DepartmentRoot") def mm_Bs_DepartmentSort(): Unit = { Bs_DepartmentSortAvi.list().newForm().open() } @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "-", order = 20, headOperation = "mm_ReferenceRoot") def mm_Delimiter1(): Unit = {} // Контрагенты @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Контрагенты", order = 30, headOperation = "mm_ReferenceRoot") def mm_Bs_ContrasRoot(): Unit = {} @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Контрагенты", order = 10, headOperation = "mm_Bs_ContrasRoot") def mm_Bs_Contras(): Unit = { Bs_ContrasAvi.mainList().newForm().open() } @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Типы контрагентов", order = 20, headOperation = "mm_Bs_ContrasRoot") def mm_Bs_ContrasType(): Unit = { Btk_ObjectTypeAvi.list().newForm().params(Map( "FLT_SREFCLASSNAME" -> "Bs_Contras", "FLT_SREFCLASSNAME.readOnly" -> true )).open() } @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "-", order = 30, headOperation = "mm_ReferenceRoot") def mm_Delimiter11(): Unit = {} @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Физические лица", order = 50, headOperation = "mm_ReferenceRoot") def mm_Bs_Person(): Unit = { Bs_PersonAvi.list().newForm().open() } //---------------------------------- @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "-", order = 60, headOperation = "mm_ReferenceRoot") def mm_Delimiter12(): Unit = {} @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Авторы", order = 80, headOperation = "mm_ReferenceRoot") def mm_Lbr_Autor(): Unit = { Lbr_AuthorAvi.list().newForm().open() } @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Издательства", order = 90, headOperation = "mm_ReferenceRoot") def mm_Lbr_Publisher(): Unit = { Lbr_PublisherAvi.list().newForm().open() } @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Книги", order = 110, headOperation = "mm_ReferenceRoot") def mm_Lbr_Book(): Unit = { Lbr_BookAvi.list().newForm().open() } //========== Документы ====================== @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, imageCollection="Btk_Application", imageIndex=7, visibleOnMainMenu = Visibilities.Visible, caption = "Документы", order = 20) def mm_DocumentRoot(): Unit = {} //========== Отчеты ====================== @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, imageCollection="Btk_Application", imageIndex=8, visibleOnMainMenu = Visibilities.Visible, caption = "Отчеты", order = 50) def mm_LbrReportRoot(): Unit = {} //========== Настройки ====================== @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, imageCollection="Btk_Application", imageIndex=9, visibleOnMainMenu = Visibilities.Visible, caption = "Настройки", order = 60) def mm_SettingRoot(): Unit = {} //========== Настройки документации ====================== @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Настройки документации", order = 10, headOperation = "mm_SettingRoot") def mm_DocSetting(): Unit = {} @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Типы объектов", order = 10, headOperation = "mm_DocSetting") def mm_Btk_ObjectType(): Unit = { Btk_ObjectTypeAvi.list().newForm().open() } @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Настройка детализации типов объектов", order = 15, headOperation = "mm_DocSetting") def mm_Btk_ObjectTypeDet(): Unit = { Btk_ObjectTypeDetAvi.list().newForm().open() } @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Жизненные циклы", order = 40, headOperation = "mm_DocSetting") def mm_Btk_LifeCycle(): Unit = { Btk_LifeCycleAvi.list().newForm().open() } @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Закладки", order = 60, headOperation = "mm_DocSetting") def mm_Btk_Tab(): Unit = { Btk_TabAvi.list().newForm().open() } //========== Печатные формы ============================== @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Печатные формы", order = 90, headOperation = "mm_SettingRoot") def mm_Rpt_Report(): Unit = { val vRpt_ReportAvi = Btk_Lib().getAviBySimpleName("Rpt_ReportAvi") if (vRpt_ReportAvi != null) vRpt_ReportAvi.list().newForm().open() } @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "-", order = 120, headOperation = "mm_SettingRoot") def mm_Delimiter60(): Unit = {} //============ Дополнительно ========================= @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Дополнительно", order = 130, headOperation = "mm_SettingRoot") def mm_AdditionalSettings(): Unit = {} @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Групировка объектов", order = 130, headOperation = "mm_AdditionalSettings") def mm_Btk_Group(): Unit = { Btk_GroupAvi.list().newForm().open() } @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Состояния классов", order = 150, headOperation = "mm_AdditionalSettings") def mm_Btk_ClassList(): Unit = { Btk_ClassListAvi.list().newForm().open() } //========== Менеджер заданий ====================== @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "-", order = 140, headOperation = "mm_SettingRoot") def mm_Delimiter140(): Unit = {} @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Менеджер заданий", order = 150, headOperation = "mm_SettingRoot") def mm_Btk_Job(): Unit = { Btk_JobGroupAvi.tree().newForm().open() //Btk_JobAvi.tree().newForm().open() } //========== Тестирование и отладка ====================== @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "-", order = 9998, headOperation = "mm_SettingRoot") def mm_Delimiter9998(): Unit = {} @Oper(visibleOnContextMenu = Visibilities.Invisible, visibleOnToolbar = Visibilities.Invisible, visibleOnMainMenu = Visibilities.Visible, caption = "Тесты и отладка", order = 9999, headOperation = "mm_SettingRoot") def mm_Testing(): Unit = {} } //--------- }
3. Создайте файл src/main/resources/META-INF/applications.xml
<?xml version="1.0" encoding="UTF-8"?> <apps> <!--<app mainSelection="Lbr_MainMenuAvi" caption="Наименование приложения" imageIndex="1"/>--> <app mainSelection="Lbr_MainMenuAvi" caption="Управление библиотекой" imageIndex="6"/> </apps>