|
Проблема передать ссылку на документ в запрос через COM. | ☑ | ||
---|---|---|---|---|
0
IKSparrow
13.02.14
✎
12:01
|
Есть нужда получить по уникальному идентификатору документ из другой базы через COM.
Делаю это следующим образом: Запрос = Коннектор.NewObject("Запрос"); Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТоваровУслугТовары.Ссылка, | ПоступлениеТоваровУслугТовары.НомерСтроки, | ПоступлениеТоваровУслугТовары.Номенклатура, | ПоступлениеТоваровУслугТовары.КоличествоМест, | ПоступлениеТоваровУслугТовары.ЕдиницаИзмерения, | ПоступлениеТоваровУслугТовары.Коэффициент, | ПоступлениеТоваровУслугТовары.Количество, | ПоступлениеТоваровУслугТовары.Цена, | ПоступлениеТоваровУслугТовары.Сумма, | ПоступлениеТоваровУслугТовары.СтавкаНДС, | ПоступлениеТоваровУслугТовары.СуммаНДС, | ПоступлениеТоваровУслугТовары.СчетУчета, | ПоступлениеТоваровУслугТовары.СчетУчетаНДС, | ПоступлениеТоваровУслугТовары.НомерГТД, | ПоступлениеТоваровУслугТовары.СтранаПроисхождения, | ПоступлениеТоваровУслугТовары.ЦенаВРознице, | ПоступлениеТоваровУслугТовары.СуммаВРознице, | ПоступлениеТоваровУслугТовары.СтавкаНДСВРознице, | ПоступлениеТоваровУслугТовары.ОтражениеВУСН, | ПоступлениеТоваровУслугТовары.Контрагент, | ПоступлениеТоваровУслугТовары.ДоговорКонтрагента, | ПоступлениеТоваровУслугТовары.СчетРасчетов, | ПоступлениеТоваровУслугТовары.СпособУчетаНДС |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары |ГДЕ | ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка"; МенеджерДокумента = Коннектор.Документы.ПоступлениеТоваровУслуг; Для а = 0 По КоличествоЗаписей-1 Цикл COMУИ = Коннектор.NewObject("УникальныйИдентификатор", ВходящиеДанные[а].УИ); СсылкаНаДокумент = МенеджерДокумента.ПолучитьСсылку(COMУИ); Запрос.УстановитьПараметр("Ссылка", СсылкаНаДокумент); Проблема в том, что запрос не находит этот документ через условие ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка Чувствую, что делаю что-то не так, а что не пойму. Что нужно передавать в параметры запроса в этой ситуации? |
|||
1
IKSparrow
13.02.14
✎
12:02
|
+(0) СсылкаНаДокумент - тут у меня все заполняется исправно.
|
|||
2
Defender aka LINN
13.02.14
✎
12:04
|
Значит, его там риальне нет.
|
|||
3
IKSparrow
13.02.14
✎
12:07
|
(2) Исключено. Ссылка же есть. И по ссылке есть реальный документ. А запрос не находит. Может с типами тут какая то путаница.
|
|||
4
IKSparrow
13.02.14
✎
12:08
|
При отладке СсылкаНаДокумент имеет тип COMОбъект. По логике, при выполнении запроса на стороне базы, из которой читаем данные, этот тип будет транслироваться в тип "ДокументСсылка.ПоступлениеТоваровУслуг"? Или нет?
|
|||
5
Defender aka LINN
13.02.14
✎
12:11
|
(3) Чо исключено? Если ссылка есть в одной базе, то это вообще ни разу не значит, что в другой она тоже присутствует.
|
|||
6
IKSparrow
13.02.14
✎
12:13
|
(5) Посмотри код внимательно. Ссылка есть в базе-источнике. Оттуда, откуда я и пытаюсь запросом этот документ считать.
|
|||
7
Defender aka LINN
13.02.14
✎
12:15
|
ВходящиеДанные[а].УИ.
Угу, я прямо ВЕРЮ в это... |
|||
8
IKSparrow
13.02.14
✎
12:18
|
(7) Так этот УИ был ранее получен из той же базы. Гхм. Пойду повтыкаю отладчик. С другой стороны, какой-то документ же по нему находится. Чего запрос то его не цепляет?
|
|||
9
Defender aka LINN
13.02.14
✎
12:26
|
(8) В (0) нихрена этого получения нет.
|
|||
10
IKSparrow
13.02.14
✎
12:26
|
Не, нефига, УИ правильный во входящих данных. И в базе-источнике документ по этому УИ есть.
|
|||
11
IKSparrow
13.02.14
✎
12:27
|
(9) Да оно в другом модуле. Верь мне =)))
|
|||
12
Serginio1
13.02.14
✎
12:47
|
(0) Вообще проще использовать в COM внешние обработки
Например v8: Можно ли по OLE выполнять запросы из 1с 7.7 в 1с 8.2 Самое главное ты можешь отлаживать рабочий код в родной базе, а затем уже использовать её в COM |
|||
13
IKSparrow
13.02.14
✎
13:15
|
(12) Спасибо.
Чет печалька с этим параметром :( Не понимаю почему не работает. Как вообще организовать запрос по COM если требуется получить конкретный документ? |
|||
14
Serginio1
13.02.14
✎
13:33
|
Ну для проверки можешь попрбовать проверить
СсылкаНаДокумент.ПолучитьОбъект() |
|||
15
dk
13.02.14
✎
13:44
|
(14) +1
или тупо номер с датой из ссылки попробовать прочитать |
|||
16
IKSparrow
13.02.14
✎
14:20
|
(14)+(15) Все работает. То есть по СсылкаНаДокумент.ПолучитьОбъект() - возвращает нужный документ. Номер, дата, время, сумма, все простые реквизиты - читаются. Реквизиты сложные - так же считываются после преобразования. Может запрос не умеет понимать COMОбъекты в качестве параметров? С другой стороны на своей стороне он же должен нормально интерпретировать этот тип.
|
|||
17
Serginio1
13.02.14
✎
14:46
|
(16) Должен. При маршалинге он должен преобразовываться в родной объект. По сути строится ком обертка над родным объектом.
В любом случае попробуй совет в 12 |
|||
18
Jaap Vduul
13.02.14
✎
14:53
|
Как вариант - у документа пустая табличная часть.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |