Здравствуйте!

Создаю внешний отчет для БП2.0, есть необходимость подтянуть данные из другой базы (ЗУП), привожу отрывок кода:

```1c
    v8 = Новый COMObject(УправлениеСоединениямиИБ.ИмяCOMСоединителя());
    Открыта = v8.Connect("Srvr ="server";Ref=Base2;Usr="***";Pwd="***";");

    Query = Открыта.NewObject("Запрос");
    Query.Текст =

    "ВЫБРАТЬ
    | ТЗ.Сумма,
    | ТЗ.НоменклатурнаяГруппа,
    | ТЗ.ВидДеятельности,
    | ТЗ.Период
    |ПОМЕСТИТЬ ВТ_05ПРОЦЕНТ
    |ИЗ
    | &ВнешнийИсточник КАК ТЗ
    |; и т.д.

    Query.УстановитьПараметр("НачалоПериода", НачалоПериода);
    Query.УстановитьПараметр("КонецПериода", КонецПериода);
    Query.УстановитьПараметр("ВнешнийИсточник",ЗапросПроценты.Выполнить().Выгрузить));
```

Возникает ошибка:
Произошла исключительная ситуация (1C:Enterprise 8.3.8.1675): {(8, 2)}: Неверные параметры "ВнешнийИсточник"

Где ВнешнийИсточник - это результат запроса в текушей базе БП, как передать его в параметры такого запроса?
---
Ну или попробуйте так:

```1c
    ТекТЗ = ЗапросПроценты.Выполнить().Выгрузить();

    КомТЗ = Открыта.NewObject("ТаблицаЗначений");

    Для Каждого Стр Из ТекТЗ Цикл
    НоваСтрока = КомТЗ.Добавить();
    НоваСтрока.Сумма = Стр.Сумма;
    НоваСтрока.Период = Стр.СумПериод;

    НГ = Открыта.Справочники.НоменклатурнаяГруппа.НайтиПоНаименованию(Стр.НоменклатурнаяГруппа.Наименование);

    НоваСтрока.НоменклатурнаяГруппа = НГ;

    ВД = Открыта.Справочники.ВидДеятельности.НайтиПоНаименованию(Стр.ВидДеятельности .Наименование);
    НоваСтрока.ВидДеятельности = ВД

    КонецЦикла

    Query.УстановитьПараметр("ВнешнийИсточник",КомТЗ);
```

P/s (4) опередил
---
Наверное все-таки нужно так:
ВнешнийИсточник.Колонки.Добавить("Сумма", Открыта.NewObject("ОписаниеТипов", "Число"));
---
Сдается мне , что так не прокатит. ВнешнийИсточник должен содержать типы конечной базы , т.е что то типа Открыта.NewObject("ТаблицаЗначений"). И внутри это ТЗ должны быть сом объекты

Похожая тема
---
Сохранить ТЗ через ЗначениеВФайл, восстановить его в КОМ-овской базе. Только в ТЗ должны быть примитивные данные. Строка, число, дата.
---
ВнешнийИсточник заполняйте примерно так...

```1c
    ВнешнийИсточник = Открыта.NewObject("ТаблицаЗначений");
    .....

    Выборка = ЗапросПроценты.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
    НоваяСтрока = ВнешнийИсточник .Добавить();
    НоваяСтрока.Колонка1 = Открыта.Справочники.НазваниеСправочника.НийтиПоНаименованию/Коду(Выборка.Колонка1Наименование);
    .....
    КонецЦикла
```
---
Ну или попробуйте так:

```1c
    ТекТЗ = ЗапросПроценты.Выполнить().Выгрузить();

    КомТЗ = Открыта.NewObject("ТаблицаЗначений");

    Для Каждого Стр Из ТекТЗ Цикл
    НоваСтрока = КомТЗ.Добавить();
    НоваСтрока.Сумма = Стр.Сумма;
    НоваСтрока.Период = Стр.СумПериод;

    НГ = Открыта.Справочники.НоменклатурнаяГруппа.НайтиПоНаименованию(Стр.НоменклатурнаяГруппа.Наименование);

    НоваСтрока.НоменклатурнаяГруппа = НГ;

    ВД = Открыта.Справочники.ВидДеятельности.НайтиПоНаименованию(Стр.ВидДеятельности .Наименование);
    НоваСтрока.ВидДеятельности = ВД

    КонецЦикла

    Query.УстановитьПараметр("ВнешнийИсточник",КомТЗ);
```

P/s (4) опередил
---
Странный способ передачи результата запроса в качестве параметра... Может так?

```1c
    Query.УстановитьПараметр("ВнешнийИсточник",ЗапросПроценты.Выполнить().Выгрузить()));
```
Чисто интересно - прокатит или нет.
---
да быстрее всего, у него просто описка, а ошибка то правильно озвучена.

```1c
    Query.УстановитьПараметр("ВнешнийИсточник",ЗапросПроценты.Выполнить().Выгрузить()));
```

Так работать не будет
---
Здесь http://1c-pro.ru/threads/podkljuchenie-ib-cherez-com-obekt-i-poluchenie-dannyx.42056/ нашёл объекты, передаваемые в базу через коннектор должны быть созданы в той базе, структуры и запросы через коннектор не передаются, так же как не передаются и ссылочные типы из текущей базы. если вы получили ссылочный тип из коннектора, его можно передавать в качестве параметров
Здесь http://j008.ru/ps/035_COMConnector_TT предлагают передавать значения через .ЗначениеВСтрокуВнутр() .ЗначениеИзСтрокиВнутр();

Здесь http://j008.ru/ps/031_1c_COMConnector_Ex предлагают переделать запрос на стороне com-объекат под возврат простых типов

```1c
    | ПРЕДСТАВЛЕНИЕ(ПРЕДСТАВЛЕНИЕССЫЛКИ(Док.Контрагент.Наименование)) как Контрагент
```

Здесь http://forum.infostart.ru/forum9/topic40234/ есть идея
Когда в параметр передаете ссылку, то передайте ее так Запрос.УстановитьПараметр("Ссылка", Ссылка.Ref); но нет подтверждения правильности

П.С. Давно понял, что гугль - это квест, а не решебник.
---
Пример, который написал Алексей будет работать (и нужно именно так), а тема с конвертацией значений через .ЗначениеВСтрокуВнутр() .ЗначениеИзСтрокиВнутр(); от Роберта прекрасно работает если в базах совпадают ссылки (то есть не нужно по коду или наименованию искать), на худой конец, если не верите этим функциям, то для ссылочных типов можно получить идентификатор, преобразовывать в строку, а в базе удаленной через получитьссылку получать ссылку на элемента ссылочного типа
---
С оле проще всего работать через внешние отчеты. Премущества отладка и минимум ограничений
http://www.forum.mista.ru/topic.php?id=761328#37
---
Всем большое спасибо за отклики!

Сделал так:

```1c
    ВнешнийИсточник = Открыта.NewObject("ТаблицаЗначений");

    ВнешнийИсточник.Колонки.Добавить("Сумма");
    ВнешнийИсточник.Колонки.Добавить("НоменклатурнаяГруппа");
    ВнешнийИсточник.Колонки.Добавить("ВидДеятельности");
    ВнешнийИсточник.Колонки.Добавить("Период");

    Пока Выборка.Следующий() Цикл
    НоваяСтрока = ВнешнийИсточник.Добавить();
    НоваяСтрока.Сумма = Выборка.Сумма;
    НоваяСтрока.НоменклатурнаяГруппа = Выборка.НоменклатурнаяГруппа;
    НоваяСтрока.ВидДеятельности = Выборка.ВидДеятельности;
    НоваяСтрока.Период = Выборка.Период;
    КонецЦикла;

    Query.УстановитьПараметр("ВнешнийИсточник", ВнешнийИсточник);
```

Но теперь возникает другая ошибка:
Тип не может быть выбран в запросе <<?>>ТЗ.Сумма,

Видимо, нужно сделать примерно так:
ТЗ.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));

Пробовал так: ВнешнийИсточник.Колонки.Добавить("Сумма", Открыта.NewObject(Открыта.ОписаниеТипов("Число"))); Но не прокатило
---
```1c
    Видимо, нужно сделать примерно так:
    ТЗ.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
```

Да. Так. колонки ТЗ которая в далнейшем будет использоваться в запросе, обязательно должны быть типизированны.
---
Наверное все-таки нужно так:
ВнешнийИсточник.Колонки.Добавить("Сумма", Открыта.NewObject("ОписаниеТипов", "Число"));
---
ИМХО примитивные типы так должны сработать.