0
Fixed

ГИС (4.0.6.241) ActiveX 1c8.2 (ошибка выполнения запроса к семантическим данным)

Анатолий Рогатнев 11 years ago updated by Михаил Власов 11 years ago 3

    СтрокаЗапроса =  "SELECT  Nomer_Stroka, Yliza_Stroka, ID  FROM Zdaniya WHERE Yliza_Stroka LIKE '%" + СокрЛП(ЭлементыФормы.Улица.Значение)+ "%' and "+ "Nomer_Stroka LIKE '%" +СокрЛП(ЭлементыФормы.Дом.Значение) +"%' ";
   
    ПоискУлицы = ЭлементыФормы.ЭлементУправления1.ingeo.ActiveDB.SemDbTables;
    НаборАдресов = ПоискУлицы.ExecSQL(СтрокаЗапроса,,);

Выдает: "Range check error"

Проверил скрипт:

option explicit


function SokrLP(s)

    SokrLP = s

end function


sub test

   dim StrokaZaprosa, PoiskUlitsy, NaborAdresov

   dim ElementyFormyUlitsaZnachenie, ElementyFormyDomZnachenie

   ElementyFormyUlitsaZnachenie = "u"

   ElementyFormyDomZnachenie = "d"

   StrokaZaprosa =  "SELECT  Nomer_Stroka, Yliza_Stroka, ID  FROM testZdaniya WHERE " + _

      "Yliza_Stroka LIKE '%" + SokrLP(ElementyFormyUlitsaZnachenie) + "%' "+ _

      "and Nomer_Stroka LIKE '%" + SokrLP(ElementyFormyDomZnachenie) +"%'"

   

   set PoiskUlitsy = Application.ActiveDB.SemDbTables

   set NaborAdresov = PoiskUlitsy.ExecSQL(StrokaZaprosa,Null,Null)

   MsgBox NaborAdresov.EOF

end sub


Работает без ошибок.

У меня ошибка возникла при использовании в 1с8.2, используя компаненту ОСХ,  а не в скрипте... . Может быть это это связано с ОСХ ?

У OCX та же кодовая база, что и у EXE. Скорее всего связано с вызовом ExecSQL("",,) - видимо, два последних пустых параметра 1С передает по другому, чем VBScript.

Попробуйте в качестве последних параметров передать Null (или как оно там в 1С называется).