запросы к другой 1С посредством COM-соединения

Форум 1С: Одинэс.Ру

Найти!

запросы к другой 1С посредством COM-соединения

Антиквар
26.05.2009 - 10:42
Добрый день!
Из одной 1С 8.0 подключаюсь к другой 1С 8.0. с помощью COM-соединения.
Хочется для выборки данных из второй базы использовать не перебор данных, а запросы. У меня получилось только через таблицу значений. Вот пример:
 
cntr = Новый COMObject("V8.COMConnector");
V8 = cntr.Connect(СтрокаПодключения);
Запрос = V8.NewObject("Запрос");
Запрос.Текст="ВЫБРАТЬ....."
запрос.УстановитьПараметр(...);
 
тз = V8.NewObject("ТаблицаЗначений");
тз = Запрос.Выполнить().Выгрузить();
Для каждого строка из тз цикл
    сообщить(v8.String(строка.Ссылка));
конеццикла;
 
Кто как ещё запросы ваяет? Может есть способ оптимальней? Выборкой по запросу пройтись у меня не получилось, т.к. отдельного объекта ВыборкаРезультатаЗапроса нет, и его не создашь во второй базе как объект. А если делать
Выборка = Запрос.Выполнить().Выбрать(); - чушь получается, ну это и логично.
К списку тем К списку форумов

Интересные темы

odines.ru
29.03.2024 - 01:10
Смотри также:
нумерация документов в журнале
Разработка внешних отчетов в 8.0
Неизвестная ошибка...Что делать?

Re: запросы к другой 1С посредством COM-соединения

Антиквар
1 - 26.05.2009 - 11:58
хм, в инете вообще не нашел ни одного примера использования запросов

Re: запросы к другой 1С посредством COM-соединения

angro
2 - 26.05.2009 - 12:05
ну запрос выполнился, что не нравится?
что значит чушь получается?

Re: запросы к другой 1С посредством COM-соединения

Arden
3 - 26.05.2009 - 12:19
обход результатов запроса работает даже из 7.7. как пример:
 
ТекстЗапроса = "ВЫБРАТЬ
| ОтчетКомиссионера.Ссылка КАК Ссылка,
| ОтчетКомиссионера.Номер КАК Номер,  
| ОтчетКомиссионера.Дата КАК Дата,
| ОтчетКомиссионера.НомерОтчета КАК НомерОтчета,
| ОтчетКомиссионера.НомерСчФ КАК НомерСчФ,
| ОтчетКомиссионера.ПредприятиеХолдинга.Наименование КАК Организация,
| ОтчетКомиссионера.Контрагент.Наименование КАК Контрагент,
| ОтчетКомиссионераНашаКомиссия.Приемка.Номер КАК НомерПриемки,
| ОтчетКомиссионераНашаКомиссия.Приемка.Дата КАК ДатаПриемки,
//| ОтчетКомиссионераНашаКомиссия.Сортимент.Наименование,
| СУММА(ОтчетКомиссионераНашаКомиссия.Объем) КАК Объем,
| СУММА(ОтчетКомиссионераНашаКомиссия.СуммаКомиссии) КАК СуммаКомиссии
|ИЗ
| Документ.ОтчетКомиссионера.НашаКомиссия КАК ОтчетКомиссионераНашаКомиссия
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетКомиссионера КАК ОтчетКомиссионера
| ПО ОтчетКомиссионера.Ссылка = ОтчетКомиссионераНашаКомиссия.Ссылка
|ГДЕ
| ОтчетКомиссионераНашаКомиссия.Ссылка.Дата Между &ДатаНач И &ДатаКон
| И ОтчетКомиссионера.ПредприятиеХолдинга.Наименование = &Организация
|   И ОтчетКомиссионера.Проведен = ИСТИНА
|СГРУППИРОВАТЬ ПО                      
| ОтчетКомиссионера.Ссылка,
| ОтчетКомиссионера.Номер,
| ОтчетКомиссионера.Дата,
| ОтчетКомиссионера.НомерОтчета,
| ОтчетКомиссионера.НомерСчФ,
| ОтчетКомиссионера.ПредприятиеХолдинга.Наименование,
| ОтчетКомиссионера.Контрагент.Наименование,
| ОтчетКомиссионераНашаКомиссия.Приемка.Номер,
| ОтчетКомиссионераНашаКомиссия.Приемка.Дата
|УПОРЯДОЧИТЬ ПО
| ОтчетКомиссионера.Дата,
| ОтчетКомиссионера.Номер";  
 
Запрос = V8.NewObject("Запрос");
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("ДатаНач",НачДата);
Запрос.УстановитьПараметр("ДатаКон",КонДата+1);
Запрос.УстановитьПараметр("Организация",СокрЛП(Организация));
 
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий()=-1 Цикл
Если Результат.Ссылка.Проведен<>-1 Тогда
    Продолжить;
КонецЕсли;
ТЗОтчетыКомиссионера.НоваяСтрока();
ТЗОтчетыКомиссионера.НомерПриемки = Результат.НомерПриемки;
ТЗОтчетыКомиссионера.ДатаПриемки = Результат.ДатаПриемки;
 
ТЗОтчетыКомиссионера.Комитент = Результат.Контрагент;
ТЗОтчетыКомиссионера.Номер = Результат.Номер;
ТЗОтчетыКомиссионера.ДатаДокумента = Результат.Дата;  
...
 
КонецЦикла;

Re: запросы к другой 1С посредством COM-соединения

Arden
4 - 26.05.2009 - 12:28
хотя у меня 8.1, в 8.0 может и не работает.

Re: запросы к другой 1С посредством COM-соединения

Антиквар
5 - 26.05.2009 - 13:08
(2) Запрос выполнился, не нравится то что без ТЗ не получается. Хотя и так нормально, но интересно, можно ли по другому.
(3) вот в чем наверное и глюк у меня :
"Пока Результат.Следующий()=-1 Цикл"
Я не писал "=-1", т.е. расчитывал на Истина, Ложь. Тормознул.
Спасибо, попробую

Интересные темы

odines.ru
29.03.2024 - 01:10
Смотри также:
Если долго мучиться...
Можно ли в отчете с построителем разрешить вывод строк с нулевыми суммами?
Описание языка

Re: запросы к другой 1С посредством COM-соединения

Arden
6 - 26.05.2009 - 13:19
в 8.1 не надо условие на -1 проверять, это для 7.7

Re: запросы к другой 1С посредством COM-соединения

Антиквар
7 - 26.05.2009 - 13:34
(6) да, и в 8.0 не надо, и всё заработало теперь, не знаю почему сразу не получилось, в чем-то другом была ошибка видимо, вот я и решил через таблицу значений.
Просто подумал, что как выборка в текущей конфигурации может содержать объекты из другой, а она их просто содержит как COM-объекты.
Спасибо.

Re: запросы к другой 1С посредством COM-соединения

roma n
8 - 26.05.2009 - 13:39
(7) да и самой-то выборки в текущей конфигурации нет :)
К списку тем К списку форумов

Добавить новое сообщение

Ваше имя:
Тема сообщения:
Сообщение:
« Объединение данных Как создать уникальный идентификатор по строке для COM-соединения »
© 2009 Форум 1С: Одинэс.Ру