Доброго времени суток!
Небходимо сварганить запрос одновременно базе 1С(ДБФ) и к сторонней БД на MS SQL.
Использую 1С++, пытаюсь через OpenRowSet.
База = СоздатьОбъект("OLEDBData");
Соединение = "Provider=VFPOLEDB.1;Deleted=Yes;Data Source=" + КаталогИБ()+ ";Mode=ReadWrite;Extended Properties="";User ID="";Password="";Mask Password=False;Collating Sequence=RUSSIAN;DSN=""";
Рез = База.Соединение(Соединение);
Запрос = База.СоздатьКоманду();
СтрокаПодключенияСКЛ = "Driver={SQL Server};Server=" + сервер + ";Database="+БД+";Uid=sa;Pwd=;";
и собственно сам текст запроса:
Процедура Тест()
ТекстЗапроса = "
|SELECT t.Code, pr.Code, t.[Id] as [Товар $Справочник.Товары] , Pr.Descr,
|pr.Price,Pr.Producer,Pr.Term,
|Pr.PerPack,
|Pr.Unit,
|Pr.Rest,
|Pr.NDS,
|Pr.Reg, pr.Id,pr.Code
|from
|OPENROWSET('MSDASQL','"+СтрокаПодключенияСКЛ+"','
|(SELECT s.ID, Pi.Descr, pi.Price,PI.Price*(1-S.Modify/100) as PriceModify,Pi.Producer,PI.Term,
|PI.PerPack,
|PI.Unit,
|PI.Rest,
|PI.NDS,
|PI.Reg, PI.Id_Price, PI.Code
|From Price.dbo.Suppliers S Right join Price.dbo.PriceLists PL on PL.Id_Supplier = S.Id
|right Join Price.dbo.PriceItems PI on PI.Id_Price = PL.Id)') as Pr Left join
|$Справочник.ТоварыПоставщиков p on pr.Code = p.Code
|Left join $Справочник.Товары t on p.sp5970=t.id
|Left join sc114 c on p.[PARENTEXT]=c.id
|ORDER By Pr.Descr
|";
//--where LTrim(RTrim(pr.Id_Price))=LTrim(RTrim(p.Code))
Запрос.Отладка(1);
Запрос.ВыполнитьИнструкцию(ТекстЗапроса,тзПодбор);
Запрос.Закрыть();
КонецПроцедуры
Из сиквельной версии 1С отрабатывает без проблем. Подозреваю что VFPOLEDB.1 не так работает с конструкцией OPENROWSET либо что то с подключением нужно делать по другому.
Сталкивался кто нибудь с подобным? Как решить?
Заранее благодарен.