Module main.bas

 Attribute VB_Name = "main"
 'Функции для составления внешней отчетности
'Разработано Ермак Е.Ю.
'ООО 'АСУ', г.Владивосток
'ams@fastmail.vladivostok.ru
'
'Пример вызова из ячеек:
'=ДТ(62)            - Дебет по 62 счету, начальный и кон. периоды берутся из ячеек обозваных Дата0 и Дата
'=ДТС({62;76;60})   - Дебетовое сальдо по всем этим счетам
'=ДТКТ('60*.000001';{50;51}) - оборот  60-го с 51 и 50 счетами
'=КТС0(62;ДАТА0;1) - свернутое начальное кредитовое сальдо
'
Public cScladCode As String, dDate As Date, cSchet As String, nFirstRow As Integer

 Function BasePath()
   BasePath = "x:\B4_PLUS\dbase"
   End Function

 Function GetConSTR()
   GetConSTR = "DRIVER=Microsoft Visual FoxPro Driver;Deleted=No;Exclusive=No;Collating=Machine;SourceType=DBF;SourceDB=" + BasePath()
   End Function

 Function GetFilterExp(ByVal cAlias As String, ByVal cExp As String, ByVal vSchet As Variant, Optional ByVal IsHaveCode As Boolean = True)
   Select Case TypeName(vSchet)
   Case "String"
   GetFilterExp = MakeExp(cAlias, cExp, vSchet, IsHaveCode)
   Case "Double"
   GetFilterExp = MakeExp(cAlias, cExp, Format(vSchet, ""), IsHaveCode)
   Case "Variant()"
   GetFilterExp = "("
   For i = LBound(vSchet) To UBound(vSchet)
   If i > LBound(vSchet) Then
   GetFilterExp = GetFilterExp + " or "
   End If
   If TypeName(vSchet(i)) = "String" Then
   GetFilterExp = GetFilterExp + MakeExp(cAlias, cExp, vSchet(i), IsHaveCode)
   Else
   GetFilterExp = GetFilterExp + MakeExp(cAlias, cExp, Format(vSchet(i), ""), IsHaveCode)
   End If
   Next i
   GetFilterExp = GetFilterExp + ")"
   End Select
   End Function

 Function MakeExp(ByVal cAlias As String, ByVal cExp As String, ByVal cSchet As String, ByVal IsHaveCode As Boolean)
   nPos = InStr(cSchet, ".")
   If nPos > 0 And IsHaveCode Then
   MakeExp = cAlias + "." + cExp + "schet like [" + Replace(Left(cSchet, nPos - 1), "*", "%") + "] and " + cAlias + "." + cExp + "code==[" + Mid(cSchet, nPos + 1) + "]"
   Else
   If InStr(cSchet, "*") > 0 Then
   MakeExp = cAlias + "." + cExp + "schet like [" + Replace(cSchet, "*", "%") + "]"
   Else
   MakeExp = "Left(" + cAlias + "." + cExp + "schet," + Str(Len(cSchet)) + ") == [" + cSchet + "]"
   End If
   End If
   End Function

 Function GlobalPer(ByRef oCon As Variant) As Date
   pcSQL = "Select LEFT(param1,8) as period from ini\global_v where name='CURR_BEG'"
   Set rsGlobal_v = oCon.Execute(pcSQL)
   GlobalPer = CDate(Right(rsGlobal_v!Period, 2) + "." + Mid$(rsGlobal_v!Period, 5, 2) + "." + Left(rsGlobal_v!Period, 4))
   rsGlobal_v.Close
   End Function