|
запрос через com объект | ☑ | ||
---|---|---|---|---|
0
lamme
21.01.13
✎
13:46
|
Есть база1 (УФ)
В ней делаю подключение к базе2 (БП) чтобы получить инфо Ком = Новый COMObject("V82.COMConnector"); Попытка ОбъектИБ = Ком.Connect("Srvr=""йййй"";Ref=""wwwwww"";Usr=""eeeee"";Pwd=""dddd"""); Исключение ОбъектИБ = Неопределено; Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; потом идет запрос ЗапросТекст = "ВЫБРАТЬ | Контрагенты.Ссылка, | Контрагенты.ИНН, | Контрагенты.Наименование |ИЗ | Справочник.Контрагенты КАК Контрагенты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | КонтактнаяИнформация.ЗначениеПоУмолчанию КАК ЗначениеПоУмолчанию, | КонтактнаяИнформация.Представление КАК Представление, | КонтактнаяИнформация.Объект КАК Объект | ИЗ | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация | ГДЕ | КонтактнаяИнформация.Тип = &Тип | И КонтактнаяИнформация.Вид = &Вид) КАК ВложенныйЗапрос | ПО Контрагенты.Ссылка = ВложенныйЗапрос.Объект |ГДЕ | Контрагенты.ЭтоГруппа = &ЭтоГруппа"; Запрос = ОбъектИБ.NewObject("Запрос"); Запрос.Текст = ЗапросТекст; Вопросы 1 как правильно передать параметры в запрос? Запрос.УстановитьПараметр("Тип",ОбъектИБ.перечисления.ТипыКонтактнойИнформации.Адрес); Запрос.УстановитьПараметр("Вид",ОбъектИБ.справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00008")); Запрос.УстановитьПараметр("ЭтоГруппа",Ложь); так не работает однако что не так делаю? 2 как результат запроса увидет в таблице ? РезультатЗапросаКонтр = Запрос.Выполнить().выгрузить(); РезультатЗапросаКонтр.выбратьстроку(); // в отладичке в РезультатЗапросаКонтр- видно что что-то в результате запроса есть. |
|||
1
vmv
21.01.13
✎
13:47
|
продолжай рассуждения, авось придет решение
|
|||
2
lamme
21.01.13
✎
13:48
|
2 - то что оно не покажет на экране через ВыбратьСтроку - это понятно
там объект - Com идет чего с ним дальше то делать? ) |
|||
3
vmv
21.01.13
✎
13:49
|
Запрос.УстановитьПараметр("Тип",ОбъектИБ.перечисления.ТипыКонтактнойИнформации.Адрес);
мне не нравиться эта строка - скажи почему |
|||
4
ЧашкаЧая
21.01.13
✎
13:50
|
....
Новый COMObject("V82.COMConnector"); ... РезультатЗапросаКонтр.выбратьстроку() Разве такое сработает? Разве Ком-коннектор специально не запускает всего клиента чтобы побыстрее было? Попробуй Сообщить(РезультатЗапросаКонтр.Количество()); |
|||
5
lamme
21.01.13
✎
13:50
|
(3)
мне она тоже не нравится. без нее работает ) но вот чем не нравится ... |
|||
6
lamme
21.01.13
✎
13:51
|
(4) - смотри (2)
я это и сам уже догадался |
|||
7
vmv
21.01.13
✎
13:51
|
(5) пока ты не дашь правильный ответ - будешь получать бред в результате, напряги извилины - я жду!)
|
|||
8
lamme
21.01.13
✎
13:53
|
там или несоответсвие типов идет
или не ? |
|||
9
vmv
21.01.13
✎
13:54
|
(8) я не признаюсь - убирай утюг, это нужно понять самому
|
|||
10
lamme
21.01.13
✎
13:55
|
согласен. пошел читать чего нибудь
|
|||
11
Maxus43
21.01.13
✎
13:57
|
дак запрос выполняется в другой базе, и параметры соответственно нужны из той базы
|
|||
12
Reset
21.01.13
✎
13:58
|
Так он "из той базы" и передает. Или я не вижу какой-то косяк?
ОбъектИБ - это com-соединение у него |
|||
13
lamme
21.01.13
✎
13:58
|
ну . это параметры из второй базы.
а не из основной. |
|||
14
vmv
21.01.13
✎
14:00
|
(11)
ОбъектИБ.перечисления.ТипыКонтактнойИнформации.Адрес они из той базы по логике, но нужно понить, что сом-объект -это матрешка, т.е. все что из него получают по вложениям это тоже Сомы) |
|||
15
Reset
21.01.13
✎
14:00
|
"так не работает однако"
А что не работает? При выбратьСтроку - ясно, но РезультатЗапросаКонтр.Количество() должно >0 быть если записи по отбору есть |
|||
16
Maxus43
21.01.13
✎
14:01
|
(12) дак там не ссылка на объект другой базы, там ком
|
|||
17
lamme
21.01.13
✎
14:02
|
(15)
оно работает. не знаю как результат отобразить на экране или в таблицу значений или в таблицу т.е. из com данных получить данные в тз |
|||
18
Reset
21.01.13
✎
14:02
|
(16) я про это и написал "ОбъектИБ - это com-соединение у него"
|
|||
19
lamme
21.01.13
✎
14:03
|
(14)
мысль не понял |
|||
20
Reset
21.01.13
✎
14:03
|
(17) Но ты же написал "не работает". Не сбива с толку и не заставляй искать ошибку где ее нет ;)
|
|||
21
lamme
21.01.13
✎
14:04
|
(20)
так не работает - это к параметрам, передаваемым в запрос - относится |
|||
22
Reset
21.01.13
✎
14:05
|
(17) Напиши цикл по перегрузке из COM-ТЗ в обычную.
Но понимай, что ссылку ты не перенесь никак, только наименование и ИНН. Ну, от силы строковой представлние уникального идентификаторы из ссылки. |
|||
23
John83
21.01.13
✎
14:05
|
ВнешЗапрос = Соединение.NewObject("Запрос");
ВнешЗапрос.Текст = "ВЫБРАТЬ ВнешЗапрос.УстановитьПараметр("Контрагент", Соединение.Справочники.Контрагенты.НайтиПоНаименованию(ДокументСписок.Отбор.Контрагент.Значение.Наименование)); |
|||
24
Reset
21.01.13
✎
14:05
|
(21) это противоречит (17)
|
|||
25
Maxus43
21.01.13
✎
14:05
|
(18) дак не сслыку в запрос пихает а ком объект, потому и не сравнивает. в (22) ты ж нормально написал, чтоб автор понял)
|
|||
26
lamme
21.01.13
✎
14:07
|
(22) а одной какой-то штукой такого сделать нельзя?
т.е. только перебор результата и перегрузка ее в обычную вручную? |
|||
27
Reset
21.01.13
✎
14:07
|
Вы меня запутали :)
Я НЕ вижу ошибки в Запрос.УстановитьПараметр("Тип",ОбъектИБ.перечисления.ТипыКонтактнойИнформации.Адрес); т.к. Запрос - тоже ком-объект |
|||
28
Reset
21.01.13
✎
14:08
|
(26) только перебор
|
|||
29
vmv
21.01.13
✎
14:08
|
(22) по строковому представлению ссылки уже можно получить и саму ссылку сом-базы, погугли бы мисту на соммы шоли
|
|||
30
lamme
21.01.13
✎
14:09
|
(27)
я тож не понимаю. но если это услвоие убрать - то результат выдает 4200 записей если запрос с этим условием - то выдает 0 |
|||
31
Reset
21.01.13
✎
14:09
|
(29) НЕ понял. ЧТО я должен гуглить. Мне ВСЕ понятно.
|
|||
32
lamme
21.01.13
✎
14:09
|
(29)
искал по мисте |
|||
33
Reset
21.01.13
✎
14:11
|
(30) Это значит что записи такой нет
|
|||
34
vmv
21.01.13
✎
14:11
|
(26) можно, но для этого нужно владеть методами COMSafeArray
(31) ты точно уверен, что тебе все понятно, я слышу нотки отчаянья? |
|||
35
Reset
21.01.13
✎
14:12
|
(34) Ты слышишь нотки раздражения, скорее
|
|||
36
vmv
21.01.13
✎
14:12
|
(30) если ты не в илах понять (14), то может пойдешь в певцы?
|
|||
37
lamme
21.01.13
✎
14:12
|
(34) и (35)
чего то вы там эта .. можно мне показать - как правильно передать в запрос параметры ? |
|||
38
Reset
21.01.13
✎
14:13
|
(37) У тебя они правильно передаются
|
|||
39
Reset
21.01.13
✎
14:14
|
+(38) Ну кроме разве конкретные значения перепутаны. Но метод - правильный.
|
|||
40
lamme
21.01.13
✎
14:16
|
(39)
что значит- конкртеные значения перепутаны? в конфиг - тип = перечисления.ТипыКонтактнойИнформации.Адрес |
|||
41
lamme
21.01.13
✎
14:18
|
пардон
тип = перечисления.ТипыКонтактнойИнформации. |
|||
42
prog0101
21.01.13
✎
14:18
|
(0)попросил бы лучше в итернетах работающий пример чем тут холивар разводить
|
|||
43
Reset
21.01.13
✎
14:20
|
(40) "возможно перепутаны" я хотел написать. Код для поиска "вида" к примеру там неверный или еще что-то
|
|||
44
Reset
21.01.13
✎
14:22
|
Протестируй запрос сначала без COM/
|
|||
45
lamme
21.01.13
✎
14:25
|
(44)
вот так вот можно без перебора получить данные из comзапроса в тз РезультатЗапросаКонтр = Запрос.Выполнить(); com_ТЗ_Контр = РезультатЗапросаКонтр.Выгрузить(); // COM объект стр_ТЗ_Контр = ОбъектИБ.ЗначениеВСтрокуВнутр(com_ТЗ_Контр);// COM объект ТЗ_Контр = ЗначениеИзСтрокиВнутр(стр_ТЗ_Контр); ТЗ_Контр.выбратьстроку();// тут уже таблица значений |
|||
46
Reset
21.01.13
✎
14:27
|
(45) Типа уел? :)
Ок, так можно, если в колонках тз только примитивные типы |
|||
47
lamme
21.01.13
✎
14:27
|
46
нет- не уел. при чем тут .. просто делюсь. нашел в инете |
|||
48
Reset
21.01.13
✎
14:28
|
(47) Ок, спасибо тогда :)
|
|||
49
vmv
21.01.13
✎
14:33
|
ну чо там с результатом - видишь фигу?
|
|||
50
lamme
21.01.13
✎
14:34
|
(49)
как это не странно фига тут в ОбъектИБ.справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00008") потому что в спраочнике ВидыКонтактнойИнформации - код это не уникальное поле. почему то. |
|||
51
Reset
21.01.13
✎
14:36
|
Не могу удержаться от "а я что говорил" :D ((43))
|
|||
52
lamme
21.01.13
✎
14:38
|
спрашивается - какого х**ра оно не уникальное ...
|
|||
53
Domanoff26
21.01.13
✎
14:42
|
(52) может еще есть одно
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |