Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Как лучше сделать? (число прочтений - 1382 )
U_zer
Экс-Участник


Как лучше сделать?
21. Января 2009 :: 06:57
Печать  
Всем привет!

Нужно из одной базы перетащить инфу в другую.
Делаю через ИБ.ПрисоединитьИБ("\\server\КаталогИБ\");
а потом получаю реквизиты в таблицу значений и затем
ВыполнитьSQL_ИзТЗ update в текущей базе.
Вопрос, можно ли это сделать не через таблицу значений, а через
темповую SQL? И вообще, как лучше, может кто делал уже?
  
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Как лучше сделать?
Ответ #1 - 21. Января 2009 :: 07:39
Печать  
Функция ВыполнитьЗапрос(ТекстЗапроса, ВидСправочника)
     Попытка
           _Количество = ЗапросСКЛ.ВыполнитьСкалярный(ТекстЗапроса)
     Исключение
           Сообщить("Ошибка при обработке справочника <" + ВидСправочника + ">!", "!!!");
           Сообщить(ЗапросСКЛ.ПолучитьОписаниеОшибки());
           Сообщить(ОписаниеОшибки());
           Сообщить("----------------------------");
           Сообщить(РадугаМД.ОбрМетаСКЛ(ТекстЗапроса));
           Возврат 0;
     КонецПопытки;;
     
     Сообщить("=>> Обработан справочник <" + ВидСправочника + ">. " + _Количество + " элементов.");
     
     Возврат 1;
КонецФункции


     ТекстЗапроса_Select = "
     |SELECT
     |      " + ТекстЗапроса_СлужебныеКолонкиСправочника(ВидСправочника) + "
     |FROM
     |      " + ИмяБазыИсточника + ".$Справочник." + ВидСправочника + " (NoLock)
     |";
     
     ТекстЗапроса_Select = РадугаМД_Источник.ОбрМетаСКЛ(ТекстЗапроса_Select);
     
     ТекстЗапроса = "
     |Set NoCount ON
     |DECLARE @Количество Int
     |
     |DELETE FROM $Справочник."+ВидСправочника+"
     |
     |INSERT INTO $Справочник."+ВидСправочника+"
     |      (" + ТекстЗапроса_СлужебныеКолонкиСправочника(ВидСправочника) + ")
     |" + ТекстЗапроса_Select + "
     |
     |Set @Количество = @@RowCount
     |
     |SELECT @Количество
     |";
     
     Возврат ВыполнитьЗапрос(ТекстЗапроса, ВидСправочника);

где
РадугаМД_Источник      = СоздатьОбъект("MetaDataWork");
РадугаМД_Источник.ПрисоединитьМД(СокрП(ИмяФайла));
ИмяБазыИсточника = сзБД.ПолучитьЗначение(сзБД.ТекущаяСтрока()) + ".dbo";
  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: Как лучше сделать?
Ответ #2 - 21. Января 2009 :: 08:31
Печать  
Круто! Будем пробовать.
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Как лучше сделать?
Ответ #3 - 22. Января 2009 :: 12:15
Печать  
Вторая база пустая?
Есть еще попроще варианты Улыбка
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
U_zer
Экс-Участник


Re: Как лучше сделать?
Ответ #4 - 22. Января 2009 :: 12:49
Печать  
Вадимко писал(а) 22. Января 2009 :: 12:15:
Вторая база пустая?
Есть еще попроще варианты Улыбка


Нет, не пустая.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать