Имя: Пароль:
1C
1С v8
Установить Параметр запроса 1С в VBA
,
0 Алексей777
 
23.07.11
09:13
Всем привет!
Dim V8 As Object
Dim Org As Object
Set V8= CreateObject("V82.COMConnector")

Set Con = V8.Connect("Srvr=""servak:1941"";Ref=""Basa"";Usr=""Пользователь"";Pwd=""Пароль""")

Set Zapr = Con.NewObject("Запрос")
Zapr.Текст = Range("K1").Value
До этого момента все ок, а вот как установить параметр запроса?
Zapr.УстановитьПараметр (???)
1 Grusswelle
 
23.07.11
09:41
.ЦстановитьПараметр("НаименованиеПараметра", ЗначениеПараметра);
2 skunk
 
23.07.11
10:09
(1)невзлетит ... если тип агрегатный
3 Алексей777
 
23.07.11
10:25
(2) а как тогда взлетит :)?
4 skunk
 
23.07.11
13:43
попробовать через глобальные переменные  ... а устанавливать командой выполнить
5 Алексей777
 
28.07.11
16:30
(4)т.е. типа
Con.Выполнить("Zapr.УстановитьПараметр("",)") ?
6 skunk
 
28.07.11
16:35
неа ...

Сон.глЧтоТо = Сон.NewObject("Запрос")
Сон.Параметр = Сон.ЧтоТамНайтиПоКоду;
Сон.Выполнить("глЧтоТо.УстановитьПараметр(""Парамметр"", Параметр)")

глЧтоТо и Параметр - глобальные переменные
7 DmitrO
 
28.07.11
16:41
(2)неправда, все взлетит
8 Алексей777
 
01.08.11
08:32
(7)
Set V8= CreateObject("V82.COMConnector")

Set Con = V8.Connect("Srvr=""servak:1941"";Ref=""Basa"";Usr=""Пользователь"";Pwd=""Пароль""")
Sprav = Con.Справочники.Валюты
возникает ошибка: объект не поддерживает это свойство или метод
9 Алексей777
 
01.08.11
09:10
(6)
Public par As Object
Public zap As Object

Sub Сделать()
Set V8= CreateObject("V82.COMConnector")

Set Con = V8.Connect("Srvr=""servak:1941"";Ref=""Basa"";Usr=""Пользователь"";Pwd=""Пароль""")
Con.zap = Con.NewObject("Запрос")
уже здесь возникает ошибка: объект не поддерживает это свойство или метод

End Sub
10 ptiz
 
01.08.11
09:13
(9) Надо передавать ВСЕ параметры. В данном случае - текст запроса.
11 ptiz
 
01.08.11
09:13
+(10)
и Con.zap =...
точно не взлетит
12 Алексей777
 
01.08.11
09:18
(10)Надо передавать ВСЕ параметры - в смысле параметры соединения:
"Srvr=""servak:1941"";Ref=""Basa"";Usr=""Пользователь"";Pwd=""Пароль""" ? Они правильны.
13 DmitrO
 
01.08.11
10:18
Set Connector = CreateObject("V82.COMConnector")
   Set База = Connector.Connect("Srvr=MyServer;Ref=MyDatabase;")
   Set БазаЗапрос = База.NewObject("Запрос")
   БазаЗапрос.Текст = "выбрать первые 20 Наименование из Справочник.Номенклатура где ВидНоменклатуры = &ВидНоменклатуры"
   БазаЗапрос.УстановитьПараметр "ВидНоменклатуры", База.Перечисления.ВидыНоменклатуры.Продукция
   Set БазаВыб = БазаЗапрос.Выполнить()

и так далее, х..ли тут сложного?
14 DmitrO
 
01.08.11
10:34
(13)+ продолжение примера
   Set БазаВыб = БазаЗапрос.Выполнить().Выбрать()
   Y = 10
   Do While БазаВыб.Следующий()
       Cells(Y, 1).Value = БазаВыб.Наименование
       Y = Y + 1
   Loop
15 Алексей777
 
01.08.11
12:41
Спасибо всем!
(14) :) получилось
16 Алексей777
 
01.08.11
17:33
(14), дружище! А вот если, нужно установить в параметр массив в составе которого ссылки на элементы справочника, тогда механизм
БазаЗапрос.УстановитьПараметр "ВидНоменклатуры", База.Перечисления.ВидыНоменклатуры.Продукция
не сработает, в любом случае нужно как-то заполнить массив объектами;
17 Rovan
 
гуру
01.08.11
17:35
(16) Set Массив1С = База.NewObject("Массив")
18 Алексей777
 
01.08.11
17:44
сори, друзья, чего-то тупанул; просто если использовать конструкцию:
Set Массив1С = База.NewObject("Массив")
Массив1С.Добавить (Con.Справочники.Организации.НайтиПоНаименованию("Организация")), то все работает;
а вот если:
Set Массив1С = База.NewObject("Массив")
орг = Con.Справочники.Организации.НайтиПоНаименованию("Организация")
Массив1С.Добавить(орг), то не работает.
Но это я так, в свое оправдание :)
19 DmitrO
 
02.08.11
22:39
Set орг = Con.Справочники.Организации.НайтиПоНаименованию("Организация")