7.7 Передача Массива В Качестве Параметра

olga13

Well-Known Member
10.10.2008
208
0
#1
Добрый день! Подскажите, как можно передать массив, созданный в VBS, в качестве параметра функции 1С?
 

olga13

Well-Known Member
10.10.2008
208
0
#4
Не очень понятно. Может приведите текст в 5 строк?
Изначально задача такова: необходимо подключить фискальный регистратор к 1С7.7.
С помощью ВК производителя не удалось, т.к. для семерки он ее уже не поддерживает. Пытаюсь изобрести велосипед. Проблема в том, что большинство команд требует в качестве параметра массив. Если создать 1С-ный массив, выдает ошибку: "Ожидается скалярное выражение". Попробовала на vba, там все работает:
Код:
Private Sub CommandButton1_Click()
Set MSK = CreateObject("MercuryCom.FPDrv1C2")

FK_Port = CLng(1)
FK_Port_Speed = CLng(9600)
FK_Password = CStr("0000")
FK_Section = CLng(1)
FK_Nalog = CBool(False)
FK_Model = CLng(11)

FK_Chek_N = CLng(0)
FK_Smena = CLng(0)

ReDim pArray(5)
pArray(0) = FK_Port
pArray(1) = FK_Port_Speed
pArray(2) = FK_Password
pArray(3) = FK_Section
pArray(4) = FK_Nalog
pArray(5) = FK_Model

Dim Err_message As String
Dim Id_device As String


MsgBox ("Версия ПО -" + MSK.GetVersion)

If Not MSK.DeviceTest(pArray, Err_message) Then
MsgBox Err_message
Exit Sub
End If

If Not MSK.Open(pArray, Id_device) Then
MsgBox ("Ошибка 1")
Exit Sub
End If

If Not MSK.CashInOutcome(Id_device, 12500) Then
MsgBox ("Ошибка 2")
Exit Sub
End If

End Sub
И версию выдает, и тест делает, и подключает, и деньги вносит.

Пытаюсь скрестить с 1С:
Код:
Процедура Выполнить()

ККМ = CreateObject("MercuryCom.FPDrv1C2");
Сообщить(ККМ.ПолучитьНомерВерсии());

TextScript=" 
|Function Run()
|
|FK_Port = CLng(1)
|FK_Port_Speed = CLng(9600)
|FK_Password = CStr(0000)
|FK_Section = CLng(1)
|FK_Nalog = CBool(False)
|FK_Model = CLng(11)
|
|ReDim pArray(5)
|pArray(0) = FK_Port
|pArray(1) = FK_Port_Speed
|pArray(2) = FK_Password
|pArray(3) = FK_Section
|pArray(4) = FK_Nalog
|pArray(5) = FK_Model
|
|End Function
|";	
ScrptCtrl = CreateObject("MSScriptControl.ScriptControl");
ScrptCtrl.Language = "vbscript";
ScrptCtrl.AddCode(TextScript);  
ScrptCtrl.Run("Run");
Массив = ScrptCtrl.eval("pArray");

ККМ.ТестУстройства(Массив);

КонецПроцедуры
Выдает ошибку: ККМ.ТестУстройства(Массив);
{D:\1С\ККМ\EXTFORMS\ККМ.ERT(271)}: Типы не совпадают

У меня мало опыта работы со скриптами. Возможно, я вообще несу чушь. Подскажите, в каком направлении действовать. То ли 1С полученный массив конвертирует в какое-то свое представление, то ли я изначально все неправильно делаю. Если все работает в Visual Basic, то как с ним можно работать из 1С? Какой объект создавать? Буду очень признательна за помощь.

Добавлено:
NB !
Я никаких массивов не создавал :)
А жаль ))))