Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) ПрисоединитьИБ() (число прочтений - 5524 )
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: ПрисоединитьИБ()
Ответ #15 - 30. Января 2009 :: 12:40
Печать  
mov68 писал(а) 30. Января 2009 :: 12:32:
До меня к базе была привязана отдельная база SQL, в которой хранится часть информации,
А  from SC33 это для связи с другой базой 1С, метапарсер не конает (если уже есть возможность использовать метапарсер с присоединяемыми базами, укажи где смотреть - буду прыгать от восторга)

Прыгай Улыбка

ЗапросСКЛ                  = СоздатьОбъект("ODBCRecordSet");
РадугаМД_Источник      = СоздатьОбъект("MetaDataWork");

ИмяБазыИсточника = сзБД.ПолучитьЗначение(сзБД.ТекущаяСтрока()) + ".dbo";
РадугаМД_Источник.ПрисоединитьМД(СокрП(ИмяФайла)); //MD-ник другой базы

ВидСправочника      = "НематериальныеАктивы";
стрВсеРеквизиты = ТекстЗапроса_ВсеРеквизитыСправочника(ВидСправочника);

ТекстЗапроса_Select = "
|SELECT
|      " + ТекстЗапроса_СлужебныеКолонкиСправочника(ВидСправочника) + "
|      " + стрВсеРеквизиты + "
|FROM
|      " + ИмяБазыИсточника + ".$Справочник." + ВидСправочника + " (NoLock)
|WHERE
|      IsFolder = 1
|";

ТекстЗапроса_Select = РадугаМД_Источник.ОбрМетаСКЛ(ТекстЗапроса_Select);

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

Возврат ВыполнитьЗапрос(ТекстЗапроса, ВидСправочника);


mov68 писал(а) 30. Января 2009 :: 12:32:
Ltrim(Z.ID) = Ltrim(:ID)  перестает быть бредом если понимать, что Z.ID и ID поля из разных баз

Неа, не перестает Улыбка Char(9) он и в Африке Char(9)...
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПрисоединитьИБ()
Ответ #16 - 30. Января 2009 :: 13:07
Печать  
sadovnikov писал(а) 30. Января 2009 :: 12:40:
Неа, не перестает Улыбка Char(9) он и в Африке Char(9)...

Не скажи. Попадалось и varchar(9) с несовпадающим collation..  Ужас
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: ПрисоединитьИБ()
Ответ #17 - 30. Января 2009 :: 13:25
Печать  
berezdetsky писал(а) 30. Января 2009 :: 13:07:
Не скажи. Попадалось и varchar(9) с несовпадающим collation..  Ужас

Согласись, что в свете данной ветки - это не тот случай?
  
Наверх
 
IP записан
 
mov68
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: ПрисоединитьИБ()
Ответ #18 - 30. Января 2009 :: 13:26
Печать  
sadovnikov писал(а) 30. Января 2009 :: 12:40:
mov68 писал(а) 30. Января 2009 :: 12:32:
До меня к базе была привязана отдельная база SQL, в которой хранится часть информации,
А  from SC33 это для связи с другой базой 1С, метапарсер не конает (если уже есть возможность использовать метапарсер с присоединяемыми базами, укажи где смотреть - буду прыгать от восторга)

Прыгай Улыбка

mov68 писал(а) 30. Января 2009 :: 12:32:
Ltrim(Z.ID) = Ltrim(:ID)  перестает быть бредом если понимать, что Z.ID и ID поля из разных баз

Неа, не перестает Улыбка Char(9) он и в Африке Char(9)...


А вот за это огромное человеческое спасибо,  захожу на сайт наскоками, где-то эта инфа меня обошла (или я ее)
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПрисоединитьИБ()
Ответ #19 - 30. Января 2009 :: 13:33
Печать  
sadovnikov писал(а) 30. Января 2009 :: 13:25:
berezdetsky писал(а) 30. Января 2009 :: 13:07:
Не скажи. Попадалось и varchar(9) с несовпадающим collation..  Ужас

Согласись, что в свете данной ветки - это не тот случай?

Согласен.  Улыбка
  

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


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: ПрисоединитьИБ()
Ответ #20 - 30. Января 2009 :: 13:37
Печать  
sadovnikov писал(а) 30. Января 2009 :: 12:40:
mov68 писал(а) 30. Января 2009 :: 12:32:
До меня к базе была привязана отдельная база SQL, в которой хранится часть информации,
А  from SC33 это для связи с другой базой 1С, метапарсер не конает (если уже есть возможность использовать метапарсер с присоединяемыми базами, укажи где смотреть - буду прыгать от восторга)

Прыгай Улыбка
.

Не сочти за наглость, но приведи плиз ТекстЗапроса_ВсеРеквизитыСправочника и ТекстЗапроса_СлужебныеКолонкиСправочника
  
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: ПрисоединитьИБ()
Ответ #21 - 30. Января 2009 :: 13:49
Печать  
Функция ТекстЗапроса_ВсеРеквизитыСправочника(ВидСправочника)
     ТекстЗапроса = "";
     
     МетаСправочник = Метаданные.Справочник(ВидСправочника);
     Для Н = 1 По МетаСправочник.Реквизит() Цикл
           _Реквизит = МетаСправочник.Реквизит(Н);
           Если _Реквизит.Периодический <> 1 Тогда
                 ТекстЗапроса = ТекстЗапроса + ", $Справочник." + ВидСправочника + "." + _Реквизит.Идентификатор;
           КонецЕсли;
     КонецЦикла;
     
     Возврат ТекстЗапроса;
КонецФункции

Функция ТекстЗапроса_СлужебныеКолонкиСправочника(ВидСправочника, ПрефиксКолонок = "")
     Если ПустаяСтрока(ПрефиксКолонок) = 0 Тогда
           ПрефиксКолонок = ПрефиксКолонок + ".";
     КонецЕсли;
     
     МетаСправочник      = Метаданные.Справочник(ВидСправочника);
     ТекстЗапроса      = ПрефиксКолонок + "ID, " + ПрефиксКолонок+ "ISMARK, " + ПрефиксКолонок + "VERSTAMP";
     
     Если МетаСправочник.ДлинаКода > 0 Тогда
           ТекстЗапроса = ТекстЗапроса + ", " + ПрефиксКолонок + "CODE";
     КонецЕсли;
     Если МетаСправочник.ДлинаНаименования > 0 Тогда
           ТекстЗапроса = ТекстЗапроса + ", " + ПрефиксКолонок + "DESCR";
     КонецЕсли;
     Если МетаСправочник.КоличествоУровней > 1 Тогда
           ТекстЗапроса = ТекстЗапроса + ", " + ПрефиксКолонок + "ISFOLDER, " + ПрефиксКолонок + "PARENTID";
     КонецЕсли;
     Если МетаСправочник.Владелец.Выбран() = 1 Тогда
           ТекстЗапроса = ТекстЗапроса + ", " + ПрефиксКолонок + "PARENTEXT";
     КонецЕсли;
     
     Возврат ТекстЗапроса;
КонецФункции
  
Наверх
 
IP записан
 
mov68
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: ПрисоединитьИБ()
Ответ #22 - 30. Января 2009 :: 13:51
Печать  
СПАСИБО!!!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать