We shall consider a variant of the program written on VBA (Excel Macro)
1 Connect to Briz
2 Start program
test.vb on server side
3 Get system information by system(100) and place it
to the sheet
4 Execute TCL command "WHO" and place result to the sheet
5
Execute TCL command "create-file TSTPRG 1 7"
6 Generate and save PickBasic procedure TstExcelPrg
7 Execute TCL command compile-catalog
TSTPRG TstExcelPrg
8 Read file "PIBS"
9 Execute TstExcelPrg in TSTPRG
10 Execute server GUI subroutine for copying
About style of the program. For brevity all checks are removed from the program.
Dim gpt As GP_Term.Document Dim gpc As
GP_Term.Connector
Cells.Select gpt.SendLine
"test.vb" Dim retArr As
Variant gpt.StringToArray retArr(0),
retArr, ";" Dim nval As
Long For nval = 0 To
UBound(retArr, 1) Cells(1,
nval + 1) = retArr(nval) Next
nval
DoEvents
Wend For nval = 0 To
UBound(retArr, 1)
Cells(2, nval + 1) = retArr(nval) Next
nval gpt.ExecTCL
"create-file TSTPRG 1 7" While
gpt.GetTCLResult(retArr, 0) < 0
DoEvents Wend For nval = 0 To UBound(retArr,
1) tmps = "SUB
TST(nArr)^ret=''^for i=1 to narr^ret<i>=i^next
i^nArr=ret^return" gpt.StringToArray
tmps, retArr, "^" gpt.SaveList "TSTPRG",
"TstExcelPrg", retArr gpt.ExecTCL
"compile-catalog TSTPRG TstExcelPrg" While
gpt.GetTCLResult(retArr, 0) < 0 For nval = 0 To UBound(retArr,
1) Dim flPIBS As
Long Dim keyPIBS As
Variant flPIBS =
gpt.SelectOpenPickFile("PIBS") gpt.ReadKFromPICKEx
flPIBS, -1, retArr, keyPIBS gpt.ConvertToSubArray
retArr, Chr(1) Dim i As
Long Application.ScreenUpdating =
True ReDim
retArr(0) retArr(0) =
25 While
gpt.GetSubResult(retArr) < 0
DoEvents
Wend gpt.ConvertToSubArray
retArr, Chr(1) For nval = 0 To
UBound(retArr(0), 1)
Cells(5, nval + 1) = retArr(0)(nval) Next nval ReDim
retArr(4) retArr(0) =
0 retArr(1) =
"" retArr(2) =
"" retArr(3) =
"" retArr(4) =
""
Application.WindowState = xlMinimized gpt.ExecSubEx
"GPTOOL.CopyToFile", retArr While
gpt.GetSubResult(retArr) < 0
Application.WindowState = xlMaximized
Cells.Select
gpt.EndMessageMap Set gpt =
Nothing End Sub
Declare objects
Sub TestOLE()
Set gpc = New GP_Term.Connector
Create connector to main object
Set gpt =
gpc.GetTerminal("GP_Term")
Get GP_Term.Document named "GP_Term" (See ROT)
Set gpc = Nothing
Destroy connector
Selection.NumberFormat =
"@"Formatting
gpt.SendChar 13Send to server "test.vb\r"
gpt.DoSystem retArr, 100
Do System(100) on server side
Convert result to array
Place result to cells
gpt.ExecTCL
"who"
Execute TCL "WHO"
Wait and get result
Place result to cells
Execute TCL
Wait and get result
Cells(3, nval + 1) =
retArr(nval)
Next nvalPlace result to cells
Dim tmps As
String
Prepare PickBasic subroutine text
Convert string to array
Save SUB in TSTPRG as TstExcelPrg
Execute TCL
DoEvents
WendWait and get result
Cells(4, nval + 1) =
retArr(nval)
Next nvalPlace result to cells
Open server file "PIBS"
Read all items from "PIBS"
gpt.ClosePICKFile
flPIBS
Close server file "PIBS"
Convert result to MV array
Place result to cells
gpt.ExecSubEx "TstExcelPrg", retArr
Execute TstExcelPrg in TSTPRG
Wait and get result
Convert result to MV array
Place result to cells
Execute GUI subroutine (cool)
Wait and get result
Restore Excel
Cancel Message Loop on Server
Destroy GP_Term.Document
infotools@hotmail.ru
mytmppost@mail.ru