Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Подключение к сторонней базе (число прочтений - 453 )
ElenaSh
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 1
Зарегистрирован: 17. Мая 2018
Подключение к сторонней базе
17. Мая 2018 :: 12:28
Печать  
Добрый день!
Есть задача загружать данные из сторонней базы (тоже 1С).
Проблема: судя по ругани на имена колонок, запрос выполняется к текущей базе.
Делаю следующее:
Код
Выбрать все
глМД = СоздатьОбъект("MetaDataWork");
рс = СоздатьОбъект("ODBCRecordset");
ТекстЗапроса = "
|SELECT ПоступлениеТоваров.IDDOC [Ссылка $Документ.ПоступлениеТоваров]
...
|FROM _1SJOURN AS Журнал With (NOLOCK)
|	INNER JOIN $Документ.ПоступлениеТоваров AS ПоступлениеТоваров With (NOLOCK) ON Журнал.IDDOC = ПоступлениеТоваров.IDDOC
..."
	IDДата1 = Сред(глМД.ЗначениеВСамуюДлиннуюСтрокуБД(Дата1),2,8);
	IDДата2 = Сред(глМД.ЗначениеВСамуюДлиннуюСтрокуБД(Дата2),2,8);
	рс.УстановитьТекстовыйПараметр("Дата1", Дата1);
	рс.УстановитьТекстовыйПараметр("Дата2", Дата2);

	рс.Отладка();

	ПутьКБазе = "\\...\";
	глМД.ПрисоединитьМД(ПутьКБазе+"1Cv7.md");

	ТекстЗапроса=глМД.ОбрМетаСКЛ(ТекстЗапроса);

	тз = рс.ВыполнитьИнструкцию(ТекстЗапроса); 

[/code]

ошибка: State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'sp35986'. - это поле, которое присутствует только в сторонней базе
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1452
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подключение к сторонней базе
Ответ #1 - 17. Мая 2018 :: 13:35
Печать  
Ну, наверное, надо базу присоединить. Как-то так
Код
Выбрать все
рс = СоздатьОбъект("ODBCRecordset");
DataBase = СоздатьОбъект("ODBCDatabase");
DataBase.ПрисоединитьИБ(Путь, Имя, Пароль);
рс.УстБД(DataBase);
ТекстЗапроса = "
|SELECT ПоступлениеТоваров.IDDOC [Ссылка $Документ.ПоступлениеТоваров]
...
 

  

FormEx developer
Наверх
www  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 2984
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Подключение к сторонней базе
Ответ #2 - 18. Мая 2018 :: 07:26
Печать  
и типизировать значения "другой" базы в объект "этой" базы не имеет смысла.
[Ссылка $Документ.ПоступлениеТоваров] - это тут не сработает
  

1&&2&&3
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 2984
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Подключение к сторонней базе
Ответ #3 - 18. Мая 2018 :: 07:34
Печать  
по теме. Чтобы делать запрос к сторонней базе, при этом используя парсер запроса, есть два пути:
1. Подцепится к md и пропарсить запрос (это вы сделали) и соединится с самой базой данных (это не сделали)
2. сделать то и другое за раз. Как написал Альф - ПрисоединитьИБ
  

1&&2&&3
Наверх
IP записан
 
svrozhkov
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 13
Зарегистрирован: 01. Октября 2009
Re: Подключение к сторонней базе
Ответ #4 - 01. Октября 2018 :: 14:15
Печать  
А есть ли способ выполнить прямой запрос к сторонней базе из 1cv8?
Интеграторы сделали обмен данными между 1cv7 и 1cv8 через OLE подключение к базе 1cv7 и там выполняется штатный запрос. Работает это всё очень медленно. Имеется положительный опыт ускорения штатных запросов их заменой на прямые. Но как это сделать, не совсем понятно. Буду рад любой наводке...
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 678
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Подключение к сторонней базе
Ответ #5 - 02. Октября 2018 :: 05:03
Печать  
svrozhkov писал(а) 01. Октября 2018 :: 14:15:
А есть ли способ выполнить прямой запрос к сторонней базе из 1cv8?
Интеграторы сделали обмен данными между 1cv7 и 1cv8 через OLE подключение к базе 1cv7 и там выполняется штатный запрос. Работает это всё очень медленно. Имеется положительный опыт ускорения штатных запросов их заменой на прямые. Но как это сделать, не совсем понятно. Буду рад любой наводке...

Мой любимый вариант: по метаданным генерим view'хи с русскими именами, и далее где и как угодно пользуемся ими, а не напрямую табличками.
Собственно, тогда и метапарсер практически не нужен, и запросы прямо в студии колупать можно (ибо всё по-русски написано).
  
Наверх
 
IP записан
 
svrozhkov
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 13
Зарегистрирован: 01. Октября 2009
Re: Подключение к сторонней базе
Ответ #6 - 02. Октября 2018 :: 06:21
Печать  
Допустим, сам запрос я могу через .Отладка(1) уже в готовом виде получить в базе 1cv7.
А как его выполнить из 1cv8?
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 678
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Подключение к сторонней базе
Ответ #7 - 02. Октября 2018 :: 08:29
Печать  
svrozhkov писал(а) 02. Октября 2018 :: 06:21:
Допустим, сам запрос я могу через .Отладка(1) уже в готовом виде получить в базе 1cv7.
А как его выполнить из 1cv8?

Через ADO DB например. Примеров можно найти.
прям первый в выдаче:  http://www.script-coding.com/ADO.html
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать