Имя: Пароль:
1C
1С v8
Проблема передать ссылку на документ в запрос через 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
Как вариант - у документа пустая табличная часть.