|   |   | 
| 
 | ComConnection. Запрос к другой базе. Передаю ссылку в параметр запроса. Не работает... | ☑ | ||
|---|---|---|---|---|
| 0
    
        realevgenius 24.08.17✎ 07:21 | 
        Всем - привет!
 Вдруг кто-то плотно работает с СОМ. Получаю вот так ссылку на элемент справочника в др базе, описано где-то на Мисте. Base1C - др. база к которой подключаюсь GIUD - строка идентификатор МД=Base1C.XMLTypeOf(Base1C.Справочники["Номенклатура"].ПустаяСсылка()); тСсылка=Base1C.XMLValue(Base1C.FromXMLType(МД),GIUD); здесь получаю СОМ объект с кодом, наименованием и прочим, ссылка на элемент спр-ка в др. базе Запрос = Base1C.NewObject("Запрос"); Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("ССылка",тСсылка); Рез = Запрос.Выполнить(); И Рез - получается пустой... Если в др. базе по строке получаю ссылку - все ок, выполняю запрос в др. базе - тоже нормально. Спасибо! | |||
| 1
    
        Рэйв 24.08.17✎ 07:36 | 
        НомТам=Base1C.Справочники.Номенклатура.ПолучитьСсылку(Base1C.NewObject("УникальныйИдентификатор",GIUD))     | |||
| 2
    
        Рэйв 24.08.17✎ 07:37 | 
        если GIUD  валидный то найдет ссылку в подключенной по COM базе. Если нет - получит битую ссылку с указанным гуидом.     | |||
| 3
    
        realevgenius 24.08.17✎ 08:02 | 
        (1) Так пробовал - одинаково... Да, ссылку находит, кривой гуид даешь, не находит... это норм     | |||
| 4
    
        realevgenius 24.08.17✎ 08:04 | 
        В запрос передаешь вродеб нормальную ссылку, запрос пустой... Или что-то не так со ссылкой или так не работает, в принципе...     | |||
| 5
    
        Рэйв 24.08.17✎ 08:05 | 
        (4)Если запрос не находит - значит чтото не та с параметром     | |||
| 6
    
        realevgenius 24.08.17✎ 08:16 | 
        В др. базе в модуле внешнего соединения сделал запрос, передаю туда ссылку, все отрабатывает...     | |||
| 7
    
        1dvd 24.08.17✎ 08:19 | 
        (6) Пустой запрос, в смысле 0 строк?     | |||
| 8
    
        Wirtuozzz 24.08.17✎ 08:20 | 
        (0) тебе надо получать GUID, по полученному GUID искать ссылку в базе.     | |||
| 9
    
        realevgenius 24.08.17✎ 08:24 | 
        (7) Всмысле Запрос.Выполнить.Пустой() = Истина
 (8) Получил - НомТам=Base1C.Справочники.Номенклатура.ПолучитьСсылку(Base1C.NewObject("УникальныйИдентификатор",GIUD)) Судя по (6) ссылка корректная | |||
| 10
    
        1dvd 24.08.17✎ 08:27 | 
        Не туда коннектишься скорее всего     | |||
| 11
    
        Convert 24.08.17✎ 08:32 | 
        (0) Подтверждаю, у мну тоже не работает отбор по ссылке. Не зависимо от того, как ты эту ссылку получаешь.     | |||
| 12
    
        realevgenius 24.08.17✎ 08:34 | 
        (10) Туда, и ссылка корректная, подтверждается  сообщением (6)     | |||
| 13
    
        Галахад гуру 24.08.17✎ 08:40 | 
        А так:
 Запрос.УстановитьПараметр("ССылка",тСсылка.Ref); | |||
| 14
    
        Convert 24.08.17✎ 08:40 | 
        (0) попробуй 
 Запрос = Base1C.NewObject("Запрос"); Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В &Ссылка"; СписокСсылок= Base1C.NewObject("СписокЗначений"); СписокСсылок.Добавить(тСсылка); Запрос.УстановитьПараметр("ССылка",СписокСсылок); Рез = Запрос.Выполнить(); | |||
| 15
    
        realevgenius 24.08.17✎ 08:59 | 
        УПД...
 РЕбята, я вас обманул... С примитивным запросом работает... У меня запрос намного сложнее и что-то с ним, видимо, щас непоследственно свой запрос буду мучать... Здесь, при передаче в качестве параметра массива ссылок | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В &Ссылка" Если передать, сюда массив - возвращает только первый элемент. Даже если количество элементов в массиве 843 как у меня... | |||
| 16
    
        realevgenius 24.08.17✎ 09:02 | 
        УПД еще раз...
 Если засунуть мой запрос в функцию, в модуль внешнего соединения, передать ему полученную в (0) или (1) ссылку - то он работает, возвращает что положено. Тоесть как получается: примитивный запросик типа (15) работает непосредственно при описании через newobject("Запрос"), а что посложнее только в др. базе в модуле внешнего соединения? ТАк может быть? | |||
| 17
    
        Галахад гуру 24.08.17✎ 09:10 | 
        Код покажи, а то верить... :-)     | |||
| 18
    
        Рэйв 24.08.17✎ 09:12 | 
        (16)Чудак человек:-)  Зачем тебе отправлять ссылку в запрос чтобы получить эту же ссылку,если ту уже и так имеешь?:-)     | |||
| 19
    
        Convert 24.08.17✎ 09:21 | 
        (15) Скорее всего что-то в запросе у тебя. Тольк опервый элемент он не может отбирать. Смотри другие условия.
 Скобки еще поставь тут |ГДЕ | Номенклатура.Ссылка В &Ссылка"; |ГДЕ | Номенклатура.Ссылка В (&Ссылка)"; | |||
| 20
    
        realevgenius 24.08.17✎ 09:45 | 
        (18) Это просто пример... Что проверить передается ли между базами, отрабатывает ли запрос...     | |||
| 21
    
        h-sp 24.08.17✎ 09:47 | 
        (18) вроде в типовой так делают, чтобы определить, реальная ссылка или битая?     | |||
| 22
    
        Рэйв 24.08.17✎ 10:29 | 
        (21)Попробуй получить объект и узнаешь.У битой вернет Неопределено     | |||
| 23
    
        realevgenius 24.08.17✎ 12:24 | 
        Все работает, разобрался...
 Трудности с отладкой... Сам накосячил Резюмирую: Получении ссылки работает что так (0), что так (0) В запрос можно передать что ссылку, что массив ссылок, все работает... Всем - спасибо! Извиняюсь за невнимательность... | |||
| 24
    
        realevgenius 24.08.17✎ 12:24 | 
        Резюмирую: 
 Получении ссылки работает что так (0), что так (1) В запрос можно передать что ссылку, что массив ссылок, все работает... | |||
| 25
    
        1dvd 24.08.17✎ 15:29 | 
        походу, я был прав в (10)     | |||
| 26
    
        realevgenius 24.08.17✎ 15:46 | 
        (25) Коннектился туда, передавал массив ссылок... А массив ссылок состоял из одной и тойже ссылки. Я долбился с запросами и не понимал, почему получает только 1 элемент, Тогда как в массиве же много ссылок... Ссылок-то много, но все одинаковые были ))))     | |||
| 27
    
        Tateossian 24.08.17✎ 15:52 | 
        Я через отладчик и методом тыка находил написание методов/классов на латинице ибо при работе с COM на кириллице не понимает. Например, вот так создается УИД:
 uuid = connection.NewObject("UUID", "0b6d9e8f-f2e1-11e1-be19-0050568699bc") А вот так ссылка на ПВС: Property = connection.ChartsOfCharacteristicTypes.СвойстваОбъектов.getRef(uuid); Вот так подставляется параметр: query.setParameter("Prop", Property); А вот так создается массив: arr = connection.NewObject("Array"); | |||
| 28
    
        Tateossian 24.08.17✎ 15:54 | 
        (27) А вопрос должен быть такой: есть СП на англицком? В английской версии? Даже на ИТС нет ничего.     | |||
| 29
    
        Gammi 24.08.17✎ 16:03 | 
        В настройках СП поставь галку Использовать оба языка     | |||
| 30
    
        Tateossian 24.08.17✎ 16:09 | 
        (29) Оу, вот я ландух)) Спасибо, мил человек))     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |