Имя: Пароль:
1C
1С v8
Запрос через COM соединение
0 dimqa
 
16.05.12
09:57
base = новый COMОбъект("V82.Application");
Открыта = base.Connect(СтрокаПодключения);
Если не Открыта Тогда
   Предупреждение("Не могу открыть соединение!", 20);
   Возврат;
КонецЕсли;  
Сообщить("Подключение к базе "+" успешно!");

Запрос = base.newObject("Запрос");
Запрос.Текст = "ВЫБРАТЬ
   |    ПоступлениеТоваровУслуг.Ссылка
   |ИЗ
   |    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
   |ГДЕ
   |    ПоступлениеТоваровУслуг.Номер = &Номер
   |    И ПоступлениеТоваровУслуг.Дата = &Дата";
Запрос.установитьПараметр("Номер",Рез.Ссылка.Номер);
Запрос.установитьПараметр("Дата",Рез.Ссылка.Дата);
НовыйДокумент = Запрос.Выполнить().Выбрать();
Если не НовыйДокумент.Следующий() Тогда
   Новый = base.Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
иначе
   Новый = НовыйДокумент.Ссылка.ПолучитьОбъект();
КонецЕсли;


Вроде все правильно, но почему к результате запроса я получаю локальные документы, а не те, которые в другой базе?
1 salvator
 
16.05.12
10:02
Я бы зарезервированные слова не стал использовать
2 Goodvaso
 
16.05.12
10:02
А почему ты используешь "Application", а не коннектор. Тебе нужно приложение открывать?
3 Галахад
 
гуру
16.05.12
10:06
А так?
Запрос = Открыта.newObject("Запрос");
4 Широкий
 
16.05.12
10:10
"я получаю локальные документы"
проверь , есть ли у тебя реквизит с именем "Запрос"
5 dimqa
 
16.05.12
10:11
base = новый COMОбъект("V82.COMConnector");
   base = base.Connect(СтрокаПодключения);
-------
   ЗапросКом = base.newObject("Запрос");
   ЗапросКом.Текст = "ВЫБРАТЬ
               |    ПоступлениеТоваровУслуг.Ссылка
               |ИЗ
               |    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
               |ГДЕ
               |    ПоступлениеТоваровУслуг.Номер = &Номер
               |    И ПоступлениеТоваровУслуг.Дата = &Дата";
   ЗапросКом.установитьПараметр("Номер",Рез.Ссылка.Номер);
   ЗапросКом.установитьПараметр("Дата",Рез.Ссылка.Дата);
   НовыйДокумент = ЗапросКом.Выполнить().Выбрать();
   Если не НовыйДокумент.Следующий() Тогда
       Нов = base.Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
   иначе
       Нов = НовыйДокумент.Ссылка.ПолучитьОбъект();
   КонецЕсли;

Все равно, почему то получаются локальные документы... а по поводу реквизита - не понял
6 dimqa
 
16.05.12
10:13
Блин, извините, Самое очевидное не проверил, стрка подключения была на эту базу)))))
7 salvator
 
16.05.12
10:14
base = новый COMОбъект("V82.COMConnector");
base = base.Connect(СтрокаПодключения);

Ты уж определись
8 Reset
 
16.05.12
10:14
(6) Зачет
9 dimqa
 
16.05.12
10:36
Ну я поменял на COMConnector думал поможет