OBERON API

OBERON API (application programming interface) - je to súbor objektov, funkcií, štruktúr OBERON-u. Umožňuje prístup ku všetkým účtovným údajom, ktoré sa navonok javia ako objekty. Je určené pre programátorov (aj pre úplných začiatočníkov) a servisných technikov. Pomocou OBERON API je možné pristupovať k dokladom, vykonávať rôzne úkony, ktoré nie sú priamo implementované do OBERON-u. Tým je možné rozšíriť možnosti systému podľa svojich predstáv, pričom celá databázová integrita údajov zostane zachovaná. Najčastejšie to môžu byť rôzne exporty a importy údajov, export údajov pre štatistické výpočty, napojenie na ďalšie externé systémy a podobne.

Bloková schéma fungovania rozhrania OBERON API

oberon-api-model

V Sekcii Na stiahnutie sa nachádzajú ukážky a príklady využitia OBERON API, pomocou ktorých sa je možné jednoducho zoznámiť s danou problematikou.

Príklad OBERON API

oberon-api-export-form

V tlačidle Exportovať sa nachádza uvedený zdrojový kód

Imports Exa.OBERON.ApplicationEnvironment
Imports Exa.OBERON.Stock
Imports Exa.Database

Private Sub btn_Exportovat_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Exportovat.Click

      '--- Oddeľovač polí v súbore
     Const CONST_OddelovacPoli = "|"
      '--- Deklarácia objektov
      Dim tmp_AppOBERON As Exa.OBERON.Application.API.AppEngine = Nothing
      Dim myEx As Exa.Basic.Exceptions.ExaException = Nothing
      '--- Zakázať tlačidlo
      btn_Exportovat.Enabled = False
      '--- Vymazanie statusu --
      txt_Status.Clear()
      txt_Status.Text = "Export skladových kariet ..."

      '--------------------------------------------
      '--- Úvodná inicializácia aplikácie ---
      '--------------------------------------------

      '--- Vytvorenie objektu aplikácie OBERON
      tmp_AppOBERON = New Exa.OBERON.Application.API.AppEngine()
      myEx = tmp_AppOBERON.App_Initialize()
      If myEx.Result = False Then
            '--- Chyba spustenia
            txt_Status.Text = myEx.Description
            GoTo ExitSub
      End If

      '--------------------------------------------
      '--- Nastavenie firmy ktorá sa má otvoriť ---
      '--------------------------------------------
      Dim tmp_CompanySettings As New CompanyOpenSettings

      '--- Mód spustenia - pri tomto nastavení sa napr. neinicializujú pripojené zariadenia ako snímač čiarových kódov
      tmp_CompanySettings.Application_Mode = CompanyOpenSettings.enum_Application_Mode.OBERON_Center

      '--- Prihlasovacie meno do OBERON-u
      tmp_CompanySettings.Application_UserName = txt_UzivatelMeno.Text

      '--- Prihlasovacie heslo do OBERON-u
      tmp_CompanySettings.Application_Password = txt_UzivatelHeslo.Text
     '--- Typ databázy MDB, v budúcnosti aj podpora SQL serverov
      tmp_CompanySettings._ConnectionSettings.DataSourceType = enm_DataSourceTypes.MicrosoftAccessOleDB_1997
      '--- Databáza MDB ktorá sa má otvoriť
      tmp_CompanySettings._ConnectionSettings.ConnectionString.Database = txt_Databaza.Text
      '--- Otvorenie firmy
      myEx = tmp_AppOBERON.Company_Open(tmp_CompanySettings)
      If myEx.Result = False Then
            '--- Chyba otvorenia firmy
            txt_Status.Text = txt_Status.Text & vbCrLf & myEx.Description
            GoTo ExitSub
      End If

      '-------------------------------------------------------------
      '--- Firma bola úspešne otvorená - je možné začať pracovať ---
      '-------------------------------------------------------------

      '--- Vytvoriť objekt skladu z ktorého chceme exportovať údaje
      Dim tmp_Sklad As New Exa.OBERON.Shared.Stock.Stocks.Stock(tmp_AppOBERON._AppConfiguration)
      myEx = tmp_Sklad._Load(txt_Sklad.Text)
      If myEx.Result = False Then
            '--- Chyba otvorenia skladu /pravdepodobne chybný názov skladu/
            txt_Status.Text = txt_Status.Text & vbCrLf & myEx.Description
            GoTo ExitSub
      End If

      '--- Načítanie zoznamu skladových kariet ---
      Dim tmp_SkladoveKarty_Zoznam As New StockCards.StockCard_List(tmp_AppOBERON._AppConfiguration,
----------------------------------------------------------------------------------------- StockCards.StockCard_List.enm_ListType.BaseList)
      myEx = tmp_SkladoveKarty_Zoznam._LoadData(tmp_Sklad, String.Empty)
      '--- String.Empty - Bolo možné vložiť aj ďalšiu podmienku, napr. "
      '--- Skupina = 'nejaká skladová skupina', alebo MnozstvoZostatok <> 0"
      If myEx.Result = False Then
            '--- Chyba načítania skladových kariet
            txt_Status.Text = txt_Status.Text & vbCrLf & myEx.Description
            GoTo ExitSub
      End If

      '--- Skladové karty boli načítané, je možné exportovať ----
      '--- Vytvoriť textovú premennú do ktorej sa budú napĺňať údaje so skladových kariet
      Dim tmp_ExportovaneUdaje As New System.Text.StringBuilder
      '---- Objekt jednej skladovej karty

      Dim tmp_SkladovaKarta As StockCards.StockCard = Nothing
      For Each e_Karta As DataRow In tmp_SkladoveKarty_Zoznam.Object_Table.DatabaseTable_Data.Rows
            tmp_SkladovaKarta = Nothing
            tmp_SkladovaKarta = tmp_SkladoveKarty_Zoznam.DataRecord(e_Karta)
            If tmp_SkladovaKarta Is Nothing Then
                  '--- Chyba pri načítaní jednej skladovej karty
                  txt_Status.Text = txt_Status.Text &vbCrLf & myEx.Description
                  '--- Pokračovať v cykle - načítavať ďalšiu kartu
                  Continue For
            End If

            '------------------------------------
            '--- Skladová karta bola načítaná ---
            '------------------------------------

            '--- Je možné pracovať s údajmi na skladovej karte
            '--- Uložiť údaje do textovej premennej, ktorá sa potom zapíše do súboru
            Dim tmp_Riadok As New System.Text.StringBuilder

            '--- Číslo karty
            tmp_Riadok.Append(tmp_SkladovaKarta.Number)
            tmp_Riadok.Append(CONST_OddelovacPoli)

            '--- Čiarový kód
            tmp_Riadok.Append(tmp_SkladovaKarta.BarCode)
            tmp_Riadok.Append(CONST_OddelovacPoli)

            '--- Názov
            tmp_Riadok.Append(tmp_SkladovaKarta.Name)
            tmp_Riadok.Append(CONST_OddelovacPoli)

            '--- Doplňujúci text
            tmp_Riadok.Append(tmp_SkladovaKarta.Description_Additional)
            tmp_Riadok.Append(CONST_OddelovacPoli)

            '--- predajná cena 1 bez DPH
            tmp_Riadok.Append(tmp_SkladovaKarta.Price1_WithoutVAT)
            tmp_Riadok.Append(CONST_OddelovacPoli)

            '--- predajná cena 1 s DPH
            tmp_Riadok.Append(tmp_SkladovaKarta.Price1_WithVAT)
            tmp_Riadok.Append(CONST_OddelovacPoli)

            '--- Množstvo zostatok
            tmp_Riadok.Append(tmp_SkladovaKarta.Amount)
            tmp_Riadok.Append(CONST_OddelovacPoli)

            '--- Merná jednotka
            tmp_Riadok.Append(tmp_SkladovaKarta.Unit)
            tmp_Riadok.Append(CONST_OddelovacPoli)

            '--- názov pre internetový obchod
            tmp_Riadok.Append(tmp_SkladovaKarta.Ishop_Name)
            tmp_Riadok.Append(CONST_OddelovacPoli)

            '--- popis
            tmp_Riadok.Append(tmp_SkladovaKarta.Ishop_Description)
            tmp_Riadok.Append(CONST_OddelovacPoli)

            '--- názov súboru - malý obrázok
            tmp_Riadok.Append(tmp_SkladovaKarta.Ishop_Picture_Small)
            tmp_Riadok.Append(CONST_OddelovacPoli)

            '--- názov súboru - veľký obrázok
            tmp_Riadok.Append(tmp_SkladovaKarta.Ishop_Picture_Big)
            tmp_Riadok.Append(CONST_OddelovacPoli)

            '--- Je možné doplniť ďalšie polia ..........
            '...
            '--- Jeden riadok polí skladovej karty bol vytvorený, vložiť celý riadok do celkovej textovej premennej ---
            tmp_ExportovaneUdaje.AppendLine(tmp_Riadok.ToString)

      Next

      '--- Všetky údaje boli načítané a vložené do textovej premennej tmp_ExportovaneUdaje

      '--- Uloženie hodnôt do súboru
      Dim tmp_Subor As IO.FileStream
      tmp_Subor = New IO.FileStream(txt_Subor.Text, IO.FileMode.Create)

      '--- Objekt pre zápis do súboru - umožňuje nastaviť aj kódovú stránku daných údajov
      Dim tmp_SuborZapisovac As New IO.StreamWriter(tmp_Subor, System.Text.Encoding.Default)

      '--- Zapísanie do súboru
      tmp_SuborZapisovac.WriteLine(tmp_ExportovaneUdaje.ToString)

      '--- Zapísanie do súboru
      tmp_SuborZapisovac.Close()
      tmp_Subor.Close()

ExitSub:

      '--- Zatvorenie firmy ---
      If tmp_AppOBERON.IsCompanyOpen = True Then
            tmp_AppOBERON.Company_Close()
      End If

      txt_Status.Text = txt_Status.Text & vbCrLf & "Export bol ukončený ..."

      '--- Povoliť tlačidlo
      btn_Exportovat.Enabled = True

End Sub

Komentár k zdrojovému textu príkladu

Ak je firma otvorená, je možné vytvoriť objekt skladu (Exa.OBERON.Shared.Common.Stock.Stock), z ktorého sa majú exportovať skladové karty. Po vytvorení objektu skladu je možné vytvoriť objekt zoznamu skladových položiek (Exa.OBERON.Stock.StockCard_List), ktorý obsahuje skladové karty vybraného skladu.

Po vytvorení objektu zoznamu skladových kariet je možné v slučke prechádzať jeho zoznamom, pričom sa pri každej položke vytvára objekt jednej skladovej karty (Exa.OBERON.Stock.StockCard). V jednotlivých vlastnostiach objektu sa nachádzajú údaje danej skladovej karty, vlastnosti sú uvedené v anglickom jazyku. Angličtina môže sťažiť orientáciu medzi týmito vlastnosťami, avšak je to jazyk, v ktorom sme sa rozhodli realizovať API a aj celý programový kód (až na nejaké výnimky). Pre lepšiu orientáciu v týchto vlastnostiach je možné využiť Debugger, v ktorom sa dajú za behu programu zobraziť už načítané údaje a tým presne identifikovať danú vlastnosť.

Po vytvorení objektu skladovej karty sa vybrané údaje uložia do textovej premennej, ktorá po skončení cyklu obsahuje zoznam skladových kariet v textovom formáte. Na konci sa pomocou objektu .NET Framework (IO.FileStream) uloží obsah textovej premennej do súboru.

Všetky dostupné príklady k OBERON API je možné nájsť v sekcii na stiahnutie.