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