Příklad 3 - Práce s číselníky

Tyto příklady jsou napsány v jazyku Visual Basic.

Vizuální výběr více záznamů z číselníku

' Funkce vyvolá vizuální číselník řad dokladů.
' Číselník je omezený za typy dokladů 03-faktury vydané, 04-faktury přijaté a 00-interní doklady.
' Pokud si uživatel vybral, jsou v messageboxu zobrazeny interní identifikátory vybraných řad dokladů.

Sub MultiSelectDialog()
  Dim mApplication As New AbraOLE.Application
  Dim mRoll As Roll
  Dim mSelected As New NxStrings
  
  mSelected.Add "0005810000"
  mSelected.Add "0005820000"
  mSelected.Add "1111111111" 'Špatné (neexistující) ID
  
 ' Získání objektu číselníku
 Set mRoll = mApplication.GetRoll("{A133BBE0-1FF0-11D2-9911-00E0ED0111A9}", 1)
  
  ' Doplnění filtračních parametrů
  mRoll.Params.Add "FilterDocumentType=03;04;00"
  
  ' Volitelné nastavení oblasti, kolem které se zobrazí vizuální číselník
  mRoll.SetBoundRect 1, 1, 2, 2
  If mRoll.MultiSelectDialog(True, mSelected) Then
    MsgBox mSelected.Text
  End If
End Sub

Vizuální výběr jednoho záznamu z číselníku

' Funkce vyvolá vizuální číselník účetního rozvrhu. Číselník je omezený za kompletní účty.
' Pokud si uživatel vybral, je v messageboxu zobrazen interní identifikátor vybraného účtu.

Sub SelectDialog()
  Dim mApplication As New AbraOLE.Application
  Dim mRoll As Roll
  Dim mID As String

  mID = "0006980000"

  ' Získání objektu číselníku
  Set mRoll = mApplication.GetRoll("K0TL1BKM1RD13ACL03KIU0CLP4", 0)

  ' Doplnění filtračních parametrů
  mRoll.Params.Add "@IsInComplete=N"
  If mRoll.SelectDialog(True, mID) Then
    MsgBox mID
  End If
End Sub

Dohledání záznamu v číselníku podle klíčového údaje

' Funkce dohledá v číselníku účetního rozvrhu účet, který má kód "31100".
' Číselník je omezený za kompletní účty.
' Pokud se účet dohledal, je zobrazen jeho interní identifikátor.

Sub Find()
  Dim mApplication As New AbraOLE.Application
  Dim mRoll As Roll
  Dim mID As String
  Dim mText As String
  Dim mTextField As String
 
  mID = ""
  mText = "31100"
  mTextField = "CODE"
 
  Set mRoll = mApplication.GetRoll("K0TL1BKM1RD13ACL03KIU0CLP4", 0)
  mRoll.Params.Add "@IsInComplete=N"
  If mRoll.Find(mTextField, mText, mID) Then
    MsgBox mID
  End If
End Sub

Zkorigování seznamu interních identifikátorů

' Funkce zkoriguje seznam interních identifikátorů tak, že vyloučí neplatné nebo ty, ke kterým nemá uživatel přístupové právo odpovídající předané masce.
' V našem případě se o práva nejedná, protože se nejedná o chráněný číselník.
' Pokud došlo ke korekci, je zobrazen seznam zkorigovaných interních identifikátorů.

Sub CorrectSelected()

  Dim mApplication As New AbraOLE.Application
  Dim mRoll As Roll
  Dim mSelected As New NxStrings

  mSelected.Add "0005810000"
  mSelected.Add "0005820000"
  mSelected.Add "1111111111" 'spatne ID

  Set mRoll = mApplication.GetRoll("K0TL1BKM1RD13ACL03KIU0CLP4", 0)
  mRoll.Params.Add "@IsInComplete=N"
  If mRoll.CorrectSelected(mSelected) Then
    MsgBox mSelected.Text
  End If
End Sub

Vyhledání v číselníku podle části údaje

' Funkce dohledá v číselníku účetního rozvrhu první účet, který začíná "31".
' Číselník je omezený za kompletní účty.
' Pokud byl účet nalezen, je v messageboxu zobrazen interní identifikátor i celý kód nalezeného účtu.

Sub FindByPart()
 
  Dim mApplication As New AbraOLE.Application
  Dim mRoll As Roll
  Dim mID As String
  Dim mText As String
  Dim mTextField As String
 
  mID = ""
  mText = "31"
  mTextField = "CODE"

  Set mRoll = mApplication.GetRoll("K0TL1BKM1RD13ACL03KIU0CLP4", 0)
  mRoll.Params.Add "@IsInComplete=N"
  If mRoll.FindByPart(mTextField, mText, mID) Then
    MsgBox mID
    MsgBox mText
  End If
End Sub

Dohledání podle interního identifikátoru

' Funkce dohledá v číselníku účetního rozvrhu účet, jehož interní identifikátor je "0005810000".
' Číselník je omezený za kompletní účty.
' Pokud byl účet nalezen je v messageboxu zobrazen název a kód nalezeného účtu.

Sub LookUp()
 
  Dim mApplication As New AbraOLE.Application
  Dim mRoll As Roll
  Dim mID As String
  Dim mText As String
  Dim mTextField As String

  mID = "0005810000"
  mText = ""
  mTextField = "CODE"
 
  Set mRoll = mApplication.GetRoll("K0TL1BKM1RD13ACL03KIU0CLP4", 0)
  mRoll.Params.Add "@IsInComplete=N"
  If mRoll.Lookup(mID, mTextField, mText) Then
    MsgBox mText
  End If
  mTextField = "NAME"
  If mRoll.Lookup(mID, mTextField, mText) Then
    MsgBox mText
  End If
End Sub

Získání všech interních identifikátorů

' Funkce získá seznam všech interních identifikátorů z číselníku řad dokladů.
' Číselník je omezený za typy dokladů 03-faktury vydané, 04-faktury přijaté a 00-interní doklady.
' V messageboxu jsou zobrazeny interní identifikátory řad dokladů.

Sub GetIDs()
 
  Dim mApplication As New AbraOLE.Application
  Dim mRoll As Roll
  Dim mSelected As New NxStrings
  
  Set mRoll = mApplication.GetRoll("{A133BBE0-1FF0-11D2-9911-00E0ED0111A9}", 0)
  mRoll.Params.Add "FilterDocumentType=03;04;00"
  Set mSelected = mRoll.GetIDs
  MsgBox mSelected.Text
End Sub