6. Практика

Создание классов для модуля библиотека

Задача: Создать классы:

  • Справочник: Lbr_Publisher

  • Справочник: Lbr_Author

  • Справочник: Lbr_Book

Справочник Lbr_Publisher - Издатель


Системное имя

Наименование

Тип данных атрибута

Тип атрибута

Примечание

gid

gid

Varchar

Basic

sSystemName

Системное имя

Varchar

Basic

Мнемокод

sCaption

Наименование

Varchar

Basic

Заголовок

sDescription

Описание

Varchar

Basic



  • Совет

  • Создайте класс по адресу lbr/src/main/resources/ru/bitec/app/lbr/Lbr_Publisher.odm.xml где lbr наименование модуля

Справочник Lbr_Author - Автор

В классе включить группировку


Системное имя

Наименование

Тип данных атрибута

Тип атрибута

Обязательный

Примечание

gid

gid

Varchar

Basic

sCode

Код

Varchar

Basic

V

Мнемокод

sLastName

Фамилия

Varchar

Basic

V

sFirstName

Имя

Varchar

Basic

V

sMiddleName

Отчество

Varchar

Basic

V

sFIO

ФИО

Varchar

Basic

Заголовок



  • Совет

  • Создайте класс по адресу lbr/src/main/resources/ru/bitec/app/lbr/Lbr_Author.odm.xml где lbr наименование модуля

Справочник Lbr_Book - Книга


Системное имя

Наименование

Тип данных атрибута

Тип атрибута

Примечание

gid

gid

Varchar

Basic

sISBN

ISBN

Varchar

Basic

Мнемокод

sCaption

Наименование

Varchar

Basic

Заголовок

idPublisher

Издатель

Long

refObject

Ссылка на класс Lbr_Publisher

idAuthor

Автор

Long

refObject

Ссылка на класс Lbr_Author

nYear

Год издания

Number

basic

nColPage

Кол-во страниц

Number

basic

sDesc

Описание

Varchar

basic



  • Совет

  • Создайте класс по адресу lbr/src/main/resources/ru/bitec/app/lbr/Lbr_Book.odm.xml где lbr наименование модуля

Создание выборки основного меню приложения

Создайте создайте основную выборку приложения Библиотека

1. Создайте файл 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>