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

Тема в разделе "1C и всё что с ней связано", создана пользователем olga13, 18 апр 2013.

  1. olga13

    olga13 Well-Known Member

    Регистрация:
    10 окт 2008
    Сообщения:
    208
    Симпатии:
    0
    Добрый день! Подскажите, как можно передать массив, созданный в VBS, в качестве параметра функции 1С?
     
  2. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Не очень понятно. Может приведите текст в 5 строк?
     
  3. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    NB !
    Я никаких массивов не создавал :)
     
  4. olga13

    olga13 Well-Known Member

    Регистрация:
    10 окт 2008
    Сообщения:
    208
    Симпатии:
    0
    Изначально задача такова: необходимо подключить фискальный регистратор к 1С7.7.
    С помощью ВК производителя не удалось, т.к. для семерки он ее уже не поддерживает. Пытаюсь изобрести велосипед. Проблема в том, что большинство команд требует в качестве параметра массив. Если создать 1С-ный массив, выдает ошибку: "Ожидается скалярное выражение". Попробовала на vba, там все работает:
    Код (LotusScript):
    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С:
    Код ( (Unknown Language)):
    Процедура Выполнить()

    ККМ = 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С? Какой объект создавать? Буду очень признательна за помощь.

    Добавлено:
    А жаль ))))
     
Загрузка...

Поделиться этой страницей