Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

запрос через com объект

запрос через com объект
Я
   lamme
 
21.01.13 - 13:46
Есть база1 (УФ)
В ней делаю подключение к базе2 (БП) чтобы получить инфо
Ком = Новый COMObject("V82.COMConnector");
    Попытка 
        ОбъектИБ = Ком.Connect("Srvr=""йййй"";Ref=""wwwwww"";Usr=""eeeee"";Pwd=""dddd""");
    Исключение
        ОбъектИБ = Неопределено;
        Сообщить(ОписаниеОшибки());
        Возврат;        
    КонецПопытки;


потом идет запрос

ЗапросТекст =
    "ВЫБРАТЬ
     |    Контрагенты.Ссылка,
    |    Контрагенты.ИНН,
    |    Контрагенты.Наименование
    |ИЗ
    |    Справочник.Контрагенты КАК Контрагенты
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |            КонтактнаяИнформация.ЗначениеПоУмолчанию КАК ЗначениеПоУмолчанию,
    |            КонтактнаяИнформация.Представление КАК Представление,
    |            КонтактнаяИнформация.Объект КАК Объект
    |        ИЗ
    |            РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |        ГДЕ
    |            КонтактнаяИнформация.Тип = &Тип
    |            И КонтактнаяИнформация.Вид = &Вид) КАК ВложенныйЗапрос
    |        ПО Контрагенты.Ссылка = ВложенныйЗапрос.Объект
    |ГДЕ
    |    Контрагенты.ЭтоГруппа = &ЭтоГруппа";
    
    
    Запрос = ОбъектИБ.NewObject("Запрос");
    Запрос.Текст = ЗапросТекст;


Вопросы
1 как правильно передать параметры в запрос?

Запрос.УстановитьПараметр("Тип",ОбъектИБ.перечисления.ТипыКонтактнойИнформации.Адрес);
    Запрос.УстановитьПараметр("Вид",ОбъектИБ.справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00008"));
    Запрос.УстановитьПараметр("ЭтоГруппа",Ложь);

так не работает однако
что не так делаю?

2 как результат запроса увидет в таблице ?
РезультатЗапросаКонтр = Запрос.Выполнить().выгрузить();
РезультатЗапросаКонтр.выбратьстроку();// в отладичке в РезультатЗапросаКонтр- видно что что-то в результате запроса есть.
 
 
   vmv
 
1 - 21.01.13 - 13:47
продолжай рассуждения, авось придет решение
   lamme
 
2 - 21.01.13 - 13:48
2 - то что оно не покажет на экране через ВыбратьСтроку - это понятно
там объект - Com идет
чего с ним дальше то делать?

)
   vmv
 
3 - 21.01.13 - 13:49
Запрос.УстановитьПараметр("Тип",ОбъектИБ.перечисления.ТипыКонтактнойИнформации.Адрес);
мне не нравиться эта строка - скажи почему
   ЧашкаЧая
 
4 - 21.01.13 - 13:50
....
Новый COMObject("V82.COMConnector");
...
РезультатЗапросаКонтр.выбратьстроку()

Разве такое сработает? Разве Ком-коннектор специально не запускает всего клиента чтобы побыстрее было? Попробуй 
Сообщить(РезультатЗапросаКонтр.Количество());
   lamme
 
5 - 21.01.13 - 13:50
(3)
мне она тоже не нравится. без нее работает )
но вот чем не нравится ...
   lamme
 
6 - 21.01.13 - 13:51
(4) - смотри (2)
я это и сам уже догадался
   vmv
 
7 - 21.01.13 - 13:51
(5) пока ты не дашь правильный ответ - будешь получать бред в результате, напряги извилины - я жду!)
   lamme
 
8 - 21.01.13 - 13:53
там или несоответсвие типов идет 
или не ?
   vmv
 
9 - 21.01.13 - 13:54
(8) я не признаюсь - убирай утюг, это нужно понять самому
   lamme
 
10 - 21.01.13 - 13:55
согласен. пошел читать чего нибудь
 
 Рекламное место пустует
   Maxus43
 
11 - 21.01.13 - 13:57
дак запрос выполняется в другой базе, и параметры соответственно нужны из той базы
   Reset
 
12 - 21.01.13 - 13:58
Так он "из той базы" и передает. Или я не вижу какой-то косяк?
ОбъектИБ - это com-соединение у него
   lamme
 
13 - 21.01.13 - 13:58
ну . это параметры из второй базы.
а не из основной.
   vmv
 
14 - 21.01.13 - 14:00
(11)

ОбъектИБ.перечисления.ТипыКонтактнойИнформации.Адрес

они из той базы по логике, но нужно понить, что сом-объект -это матрешка, т.е. все что из него получают по вложениям это тоже Сомы)
   Reset
 
15 - 21.01.13 - 14:00
"так не работает однако" 
А что не работает?
При выбратьСтроку - ясно, 
но РезультатЗапросаКонтр.Количество() должно >0 быть если записи по отбору есть
   Maxus43
 
16 - 21.01.13 - 14:01
(12) дак там не ссылка на объект другой базы, там ком
   lamme
 
17 - 21.01.13 - 14:02
(15)
оно работает. не знаю как результат отобразить на экране
или в таблицу значений
или в таблицу
т.е. из com данных получить данные в тз
   Reset
 
18 - 21.01.13 - 14:02
(16) я про это и написал "ОбъектИБ - это com-соединение у него"
   lamme
 
19 - 21.01.13 - 14:03
(14)
мысль не понял
   Reset
 
20 - 21.01.13 - 14:03
(17) Но ты же написал "не работает". Не сбива с толку и не заставляй искать ошибку где ее нет ;)
   lamme
 
21 - 21.01.13 - 14:04
(20)
так не работает - это к параметрам, передаваемым в запрос - относится
   Reset
 
22 - 21.01.13 - 14:05
(17) Напиши цикл по перегрузке из COM-ТЗ в обычную.
Но понимай, что ссылку ты не перенесь никак, только наименование и ИНН. Ну, от силы строковой представлние уникального идентификаторы из ссылки.
   John83
 
23 - 21.01.13 - 14:05
ВнешЗапрос = Соединение.NewObject("Запрос");
    ВнешЗапрос.Текст =
    "ВЫБРАТЬ


        ВнешЗапрос.УстановитьПараметр("Контрагент", Соединение.Справочники.Контрагенты.НайтиПоНаименованию(ДокументСписок.Отбор.Контрагент.Значение.Наименование));
   Reset
 
24 - 21.01.13 - 14:05
(21) это противоречит (17)
   Maxus43
 
25 - 21.01.13 - 14:05
(18) дак не сслыку в запрос пихает а ком объект, потому и не сравнивает. в (22) ты ж нормально написал, чтоб автор понял)
   lamme
 
26 - 21.01.13 - 14:07
(22) а одной какой-то штукой такого сделать нельзя?
т.е. только перебор результата и перегрузка ее в обычную вручную?
   Reset
 
27 - 21.01.13 - 14:07
Вы меня запутали :)

Я НЕ вижу ошибки в 
Запрос.УстановитьПараметр("Тип",ОбъектИБ.перечисления.ТипыКонтактнойИнформации.Адрес);

т.к. Запрос - тоже ком-объект
   Reset
 
28 - 21.01.13 - 14:08
(26) только перебор
   vmv
 
29 - 21.01.13 - 14:08
(22) по строковому представлению ссылки уже можно получить и саму ссылку сом-базы, погугли бы мисту на соммы шоли
   lamme
 
30 - 21.01.13 - 14:09
(27)
я тож не понимаю.
но если это услвоие убрать - то результат выдает 4200 записей
если запрос с этим условием - то выдает 0
   Reset
 
31 - 21.01.13 - 14:09
(29) НЕ понял. ЧТО я должен гуглить. Мне ВСЕ понятно.
   lamme
 
32 - 21.01.13 - 14:09
(29)
искал по мисте
   Reset
 
33 - 21.01.13 - 14:11
(30) Это значит что записи такой нет
 
 
   vmv
 
34 - 21.01.13 - 14:11
(26) можно, но для этого нужно владеть методами COMSafeArray

(31) ты точно уверен, что тебе все понятно, я слышу нотки отчаянья?
   Reset
 
35 - 21.01.13 - 14:12
(34) Ты слышишь нотки раздражения, скорее
   vmv
 
36 - 21.01.13 - 14:12
(30) если ты не в илах понять (14), то может пойдешь в певцы?
   lamme
 
37 - 21.01.13 - 14:12
(34) и (35)
чего то вы там эта ..
можно мне показать - как правильно передать в запрос параметры ?
   Reset
 
38 - 21.01.13 - 14:13
(37) У тебя они правильно передаются
   Reset
 
39 - 21.01.13 - 14:14
+(38) Ну кроме разве конкретные значения перепутаны. Но метод - правильный.
   lamme
 
40 - 21.01.13 - 14:16
(39)
что значит- конкртеные значения перепутаны?
в конфиг - тип = перечисления.ТипыКонтактнойИнформации.Адрес
   lamme
 
41 - 21.01.13 - 14:18
пардон
тип = перечисления.ТипыКонтактнойИнформации.
   prog0101
 
42 - 21.01.13 - 14:18
(0)попросил бы лучше в итернетах работающий пример чем тут холивар разводить
   Reset
 
43 - 21.01.13 - 14:20
(40) "возможно перепутаны" я хотел написать. Код для поиска "вида" к примеру там неверный или еще что-то
   Reset
 
44 - 21.01.13 - 14:22
Протестируй запрос сначала без COM/
   lamme
 
45 - 21.01.13 - 14:25
(44)
вот так вот можно без перебора получить данные из comзапроса в тз

РезультатЗапросаКонтр  = Запрос.Выполнить();
    com_ТЗ_Контр = РезультатЗапросаКонтр.Выгрузить();// COM объект 
 
    стр_ТЗ_Контр = ОбъектИБ.ЗначениеВСтрокуВнутр(com_ТЗ_Контр)// COM объект 
 
    ТЗ_Контр = ЗначениеИзСтрокиВнутр(стр_ТЗ_Контр);
    ТЗ_Контр.выбратьстроку()// тут уже таблица значений
   Reset
 
46 - 21.01.13 - 14:27
(45) Типа уел? :)
Ок, так можно, если в колонках тз только примитивные типы
   lamme
 
47 - 21.01.13 - 14:27
46
нет- не уел. при чем тут ..
просто делюсь.
нашел в инете
   Reset
 
48 - 21.01.13 - 14:28
(47) Ок, спасибо тогда :)
   vmv
 
49 - 21.01.13 - 14:33
ну чо там с результатом - видишь фигу?
 
 Рекламное место пустует
   lamme
 
50 - 21.01.13 - 14:34
(49)
как это не странно
фига тут в ОбъектИБ.справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00008")
потому что в спраочнике ВидыКонтактнойИнформации - код это не уникальное поле. почему то.
   Reset
 
51 - 21.01.13 - 14:36
Не могу удержаться от "а я что говорил" :D ((43))
   lamme
 
52 - 21.01.13 - 14:38
спрашивается - какого х**ра оно не уникальное ...
   Domanoff26
 
53 - 21.01.13 - 14:42
(52) может еще есть одно


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует