Всем привет!
Создал LS-библиотеку, общую для нескольких баз системы. Специфику же каждой базы определил через константы в персональной библиотеке. Если просто подключать персональную библиотеку в Options общей библиотекеи, то при модификации общей библиотеке требуется перекомпиляция в каждой БД.
Подумал, что подключая персональную библиотек динамически через execute, я обойду эту проблему.
Написал следующую функцию в общей библиотеке:
Однако, функция ничего не возвращает
Решил эту задачу созданием класса в персональной библиотеке и метода в нем, который возвращает нужную константу.
Вот класс
И вот какой стал вызов в общей библиотеке
Такое решение мне не очень нравится.
Может у кого будут другие идеи?
Создал LS-библиотеку, общую для нескольких баз системы. Специфику же каждой базы определил через константы в персональной библиотеке. Если просто подключать персональную библиотеку в Options общей библиотекеи, то при модификации общей библиотеке требуется перекомпиляция в каждой БД.
Подумал, что подключая персональную библиотек динамически через execute, я обойду эту проблему.
Написал следующую функцию в общей библиотеке:
Код:
Function getGlobalVar(vName As String) As String
'! vName - имя константы
Dim ret as String
Execute ({Use "Setup.Lib"
ret = } +vName)
getGlobalVar = ret
'! конец функции
End Function
Решил эту задачу созданием класса в персональной библиотеке и метода в нем, который возвращает нужную константу.
Вот класс
Код:
Class SetupFields
Sub New
End Sub
Property Get getConstant(xName As String) As String
'! переменные
Dim xRet As String
Select Case xName
Case "CFGFIELD_NSI": xRet = CFGFIELD_NSI
Case "CFGFIELD_LOG": xRet = CFGFIELD_LOG
Case "CFGFIELD_INVOICE": xRet = CFGFIELD_INVOICE
Case Else : xRet = {}
End Select
getConstant = xRet
'! конец property
End Property
End Class
Код:
Function getGlobalVar(vName As String) As String
'!vName - имя константы
Execute ({Use "Setup.Lib"
Set ret = New SetupFields})
getGlobalVar = ret.getConstant(vName)
'! конец функции
End Function
Может у кого будут другие идеи?