Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) Запрос в чужой базе + синхронизация (число прочтений - 12558 )
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Запрос в чужой базе + синхронизация
Ответ #15 - 22. Июня 2007 :: 13:30
Печать  
kiruha, оть:

     |SELECT CAST(LEFT((ЖурРозн.Date_Time_IDDoc),8) as DateTime)
     |      , Номенклатура.ID [Номенклатура $Справочник.Номенклатура]
     |FROM TestBaseRozn.dbo.RA9731 AS ПартииРозн WITH (NOLOCK)
     |INNER JOIN TestBaseRozn.dbo._1SJOURN AS ЖурРозн ON ЖурРозн.IDDOC = ПартииРозн.IDDOC
     |LEFT OUTER JOIN TestBaseRozn.dbo.SC656 AS НоменклатураРозн ON ПартииРозн.SP9732 = НоменклатураРозн.ID
     |LEFT OUTER JOIN $Справочник.Номенклатура AS Номенклатура ON RIGHT(НоменклатураРозн.CODE, 5) = Номенклатура.CODE
     |WHERE ПартииРозн.IDDOC IN (
     |SELECT DISTINCT OBJID from TestBaseRozn.dbo._1SUPDTS WITH (NOLOCK))
     |";

Райт использован т.к. длина кода не совпадает ешкин кот, ну остальное по аналогии  Подмигивание
berezdetsky, спасибо за наводки, ступил!
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Запрос в чужой базе + синхронизация
Ответ #16 - 22. Июня 2007 :: 13:32
Печать  
berezdetsky писал(а) 22. Июня 2007 :: 13:29:
не определён Регистр.Партии. Они точно в одной РИБ? .md одинаковые? Запрос


МД разные. И они не в одной УРБД! База-получатель вообще не имеет отношения к УРБД
В общем так как выше написал поборол
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Запрос в чужой базе + синхронизация
Ответ #17 - 10. Июля 2007 :: 08:32
Печать  
Цитата:
kiruha, оть:

     |SELECT CAST(LEFT((ЖурРозн.Date_Time_IDDoc),8) as DateTime)
     |      , Номенклатура.ID [Номенклатура $Справочник.Номенклатура]
     |FROM TestBaseRozn.dbo.RA9731 AS ПартииРозн WITH (NOLOCK)
     |INNER JOIN TestBaseRozn.dbo._1SJOURN AS ЖурРозн ON ЖурРозн.IDDOC = ПартииРозн.IDDOC
     |LEFT OUTER JOIN TestBaseRozn.dbo.SC656 AS НоменклатураРозн ON ПартииРозн.SP9732 = НоменклатураРозн.ID
     |LEFT OUTER JOIN $Справочник.Номенклатура AS Номенклатура ON RIGHT(НоменклатураРозн.CODE, 5) = Номенклатура.CODE
     |WHERE ПартииРозн.IDDOC IN (
     |SELECT DISTINCT OBJID from TestBaseRozn.dbo._1SUPDTS WITH (NOLOCK))
     |";

Райт использован т.к. длина кода не совпадает ешкин кот, ну остальное по аналогии  Подмигивание
berezdetsky, спасибо за наводки, ступил!



Так и не понял. Как использовать МЕТАПАРСЕР.
Явно указывать таблицы типа SP9732 можно было и так.
Для этого 1С++ не нужен.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Запрос в чужой базе + синхронизация
Ответ #18 - 10. Июля 2007 :: 12:06
Печать  
Вообщем пока интересней - строковая замена в запросе (для ДБФ, не УРБД) :
Код
Выбрать все
Функция глПарсерВторойБазы(ТекстЗапроса,ПутьКБазе2,ИмяБазы2="База2")
//1. Для идентичных
   ТекстЗапроса=СтрЗаменить(ТекстЗапроса,ИмяБазы2+".",ПутьКБазе2) ;
 //2. Для уникальных реквизитов и спр. второй базы
 //........
КонецФункции

Процедура Сформировать()
    ОлеДБКоманда = глОлеДБ.СоздатьКоманду();
	ПутьКБазе2= "C:\МояВтораяБаза\";// Указываем путь, в конце слэш не забываем
	ТекстЗапроса = "
	|SELECT
	|	$Спр.Артикул as Артикул,
	|	$Спр2.Артикул as Артикул2,
	|	Спр.Descr as Наименование,
	|	Спр2.Descr as Наименование2
	|FROM
	|	$Справочник.Номенклатура as Спр
	|
	|LEFT JOIN	База2.$Справочник.Номенклатура as Спр2  ON Спр2.Code=Спр.Code
	|";
    глПарсерВторойБазы(ТекстЗапроса,ПутьКБазе2,"База2");
    ТЗ = ОлеДБКоманда.ВыполнитьИнструкцию(ТекстЗапроса);
КонецПроцедуры
 



Не нужно дополнительных подключений,временных таблиц и можно использовать стандартные имена таблиц и реквизитов  .
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Запрос в чужой базе + синхронизация
Ответ #19 - 10. Июля 2007 :: 15:23
Печать  
Последний вариант (для ДБФ) .
Можно использовать неидентичные базы,
возможно несовпадение название полей и наличие новых реквизитов в разных базах.

Правило применения - Запрос составляется стандартно,
но при обращении ко второй базе вместо "$" используется "@"
Код
Выбрать все
Функция глПарсерВторойБазы(ТекстЗапроса,ИмяБазы2,ПутьКБазе2)
	  глМД = СоздатьОбъект("MetaDataWork");
	ТекстЗапроса=глМД.ОбрМетаСКЛ(ТекстЗапроса);

	глМД2 = СоздатьОбъект("MetaDataWork");
	глМД2.ПрисоединитьМД(ПутьКБазе2+"1Cv7.md");

	ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"@","$");
	ТекстЗапроса=СтрЗаменить(ТекстЗапроса,ИмяБазы2+".",ПутьКБазе2) ;
	ТекстЗапроса=глМД2.ОбрМетаСКЛ(ТекстЗапроса);

	  Возврат 0
КонецФункции

Процедура Сформировать()
	  ОлеДБКоманда = глОлеДБ.СоздатьКоманду();
	ПутьКБазе2= "C:\МояВтораяБаза\";// Указываем путь, в конце слэш не забываем
	ТекстЗапроса = "
	|SELECT
	|	$Спр.Артикул as Артикул,
	|	@Спр2.Артикул_no as Артикул2,
	|	@Спр2.новыйВБазе as новыйВБазе, /* комментарий : это уникальный реквизит второй базы */
	|	Спр.Descr as Наименование,
	|	Спр2.Descr as Наименование2
	|FROM
	|	$Справочник.Номенклатура as Спр
	|
	|LEFT JOIN	База2.@Справочник.Номенклатура as Спр2  ON Спр2.Code=Спр.Code
	|";

	  глПарсерВторойБазы(ТекстЗапроса,"База2",ПутьКБазе2);

	ТЗ = ОлеДБКоманда.ВыполнитьИнструкцию(ТекстЗапроса);

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


Протестировано.
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Запрос в чужой базе + синхронизация
Ответ #20 - 11. Июля 2007 :: 21:12
Печать  
Молодец! Осталось теперь обдумать типизацию Улыбка
У меня другая задача была - соотнести разные перечисления (возможно и один ко многим)
В общем я отлучался в отпуск, но сделал с помощью временной таблицы
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Запрос в чужой базе + синхронизация
Ответ #21 - 12. Июля 2007 :: 11:29
Печать  
Помогите разобраться с запросами. Есть две базы данных. Мне надо из одной базы данных по нажатию кнопки чтобы открылся справочник другой базы данных. это вообще реально или мне придеться создавать свой справочник и каждый записи туда "вбивать" значения... И вообще как получить все наименование другого справочника?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать