|
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) Оу, вот я ландух)) Спасибо, мил человек))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |