Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема ВыполнитьИнструкцию: типы получаемых полей (число прочтений - 2609 )
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
ВыполнитьИнструкцию: типы получаемых полей
23. Октября 2012 :: 13:20
Печать  
Здравствуйте. Подключаюсь в удаленной базе 1С sql через УстБД и тяну оттуда данные. Через ВыполнитьИнструкцию получаю ТЗ, данные из которой данные нужно поместить в запрос с локальной БД, т.е. запихиваю ТЗ в #ВТ (ВыполнитьSQL_изТЗ).
Проблема: тяну из удаленной базы много полей (3-4 десятка) и приходится каждый раз укладывать ТЗ вручную в #ВТ, описывая имена и типы полей (create table #vt(...), insert #vt(...) values (?,?,...)). Описывать вручную 30-40 полей быстро надоело и захотел написать процедуру, которая бы укладывала переданную ТЗ в #ВТ. Но, ПолучитьПараметрыКолонки возвращает типы (Строка,0,0), Число (0,0) и т.д.
Может есть какой вариант запихивания данных из удаленной БД во временную таблицу локальной или получить как-нибудь типы полей ТЗ, полученной из ВыполнитьИнструкцию?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ВыполнитьИнструкцию: типы получаемых полей
Ответ #1 - 23. Октября 2012 :: 13:33
Печать  
vinogradoff писал(а) 23. Октября 2012 :: 13:20:
Может есть какой вариант запихивания данных из удаленной БД во временную таблицу локальной

Код
Выбрать все
select *
into #temptable
from somebase.._1SJOURN with (nolock) 


Если база на том же сервере. Если нет - подключить его как linked server и добавить имя сервера в запрос.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ВыполнитьИнструкцию: типы получаемых полей
Ответ #2 - 23. Октября 2012 :: 13:41
Печать  
Э.... а зачем тебе вообще временная для этих целей ?
Пиши в одном запросе обращение к удаленной и этой базы сразу.
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: ВыполнитьИнструкцию: типы получаемых полей
Ответ #3 - 23. Октября 2012 :: 13:44
Печать  
berezdetsky подключить его как linked server - не подскажите как?
Eprst в одном запросе обращение к удаленной и этой базы сразу - тот же вопрос)
п.с. удаленная база на другом сервере
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: ВыполнитьИнструкцию: типы получаемых полей
Ответ #4 - 23. Октября 2012 :: 13:48
Печать  
Eprst как в одном запросе обращаться к разным базам, если подключаюсь через ПрисоединитьИБ
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ВыполнитьИнструкцию: типы получаемых полей
Ответ #5 - 23. Октября 2012 :: 13:56
Печать  
vinogradoff писал(а) 23. Октября 2012 :: 13:44:
berezdetsky подключить его как linked server - не подскажите как?

Программно - процедурой sp_addlinkedserver. Из гуя - в Enterprise Manager не помню, в Management Studio: на Объекты сервера\Связанные серверы правой кнопкой, Создать связанный сервер...

В запросе писать имясервера.имябазы.dbo.имятаблицы
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ВыполнитьИнструкцию: типы получаемых полей
Ответ #6 - 23. Октября 2012 :: 13:56
Печать  
Прилинковываешь сервак, далее пишешь имена табличек, указывая в запросе имя сервака/базу/табличку в базе через точку.
Для использования метапарсера в обеих базах, используешь присоединитьМД и ОбрМетаSQL...
пример могу кинуть
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: ВыполнитьИнструкцию: типы получаемых полей
Ответ #7 - 23. Октября 2012 :: 13:58
Печать  
это "прилинкование" потянет через интернет (не в одной локальной сети)?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ВыполнитьИнструкцию: типы получаемых полей
Ответ #8 - 23. Октября 2012 :: 14:01
Печать  
Подними vpn - потянет, будет как в родной сети

Примерчик:
Код
Выбрать все
Процедура Сформировать()


    рс=создатьОбъект("ODBCRecordSet");


     ТекстЗапроса = "
    |SELECT
    |    СпрНаш.DESCR as КлиентосВЭтойбазе  -- наименование клиентоса в  этой базе, можно и не присоединять справочник, а просто типизировать
    |    ,Спр.DESCR as КлиентосВУдаленнойБазе --наименование клиентоса в удаленной базе
    |FROM $Справочник.Контрагенты СпрНаш
    |left join serverName.dataBase2.dbo.@Справочник.Контрагенты Спр on СпрНаш.Code = Спр.Code
    |";
    глМД = СоздатьОбъект("MetaDataWork");
    ТекстЗапроса=глМД.ОбрМетаСКЛ(ТекстЗапроса);
    глМД2 = СоздатьОбъект("MetaDataWork");
    ПутьКБазе2 = "D:\полный путьк базе данных\";
    глМД2.ПрисоединитьМД(ПутьКБазе2+"1Cv7.md");
    ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"@","$");
    ТекстЗапроса=глМД2.ОбрМетаСКЛ(ТекстЗапроса);

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

КонецПроцедуры 


  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: ВыполнитьИнструкцию: типы получаемых полей
Ответ #9 - 24. Октября 2012 :: 09:09
Печать  
понятно, спасибо
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать