• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы olga13
  • Дата начала
O

olga13

Добрый день! Подскажите, как можно передать массив, созданный в VBS, в качестве параметра функции 1С?
 
Д

Дайнеко

Не очень понятно. Может приведите текст в 5 строк?
 
V

vbs

NB !
Я никаких массивов не создавал :)
 
O

olga13

Не очень понятно. Может приведите текст в 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 !
Я никаких массивов не создавал :)

А жаль ))))
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!