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


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Запрос в чужой базе + синхронизация
22. Июня 2007 :: 07:37
Печать  
Как лучше сделать такое?
Запрос к чужой базе - получаю таблицу с кодами элементов справочников
В базе из которой происходит запрос эти коды синхронизированы с имеющимися элементами
Т.е. как бы сделать лучше чтобы не искать каждый элемент по коду?
Думал временную таблицу создавать, но она же будет у меня опять же в чужой базе...
  

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


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос в чужой базе + синхронизация
Ответ #1 - 22. Июня 2007 :: 08:08
Печать  
В одном запросе можно получать данные из разных баз и из разных серверов. В чём проблема то?
  

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


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

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

Вот типо как сейчас:

     ИБ = СоздатьОбъект("ODBCDataBase");
     ИБ.ПрисоединитьИБ(ПутьКИсточнику, "Вадим", "");
     
     Запрос = СоздатьОбъект("ODBCRecordSet");
    Запрос.УстБД(ИБ);
     
     ТекстЗапроса = "
     |CREATE TABLE #tablrozn (DateDoc datetime, Tov char(9), Par char(9), Skl char(9), Kol numeric(15,3), Sum numeric(15,0), KO char(9))
     |INSERT INTO #tablrozn      
     |SELECT CAST(LEFT((Жур.Date_Time_IDDoc),8) as DateTime)
     |      , $Партии.Товар
     |      , $Партии.Партия
     |      , $Партии.Склад
     |      , $Партии.Количество
     |      , $Партии.СуммаРозн
     |      , $Партии.КодОперации
     |FROM $Регистр.Партии AS Партии WITH (NOLOCK)
     |INNER JOIN _1SJOURN AS Жур ON Жур.IDDOC = Партии.IDDOC
     |WHERE Партии.IDDOC IN (
     |SELECT DISTINCT OBJID from _1SUPDTS WITH (NOLOCK))
     |";
  

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


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Запрос в чужой базе + синхронизация
Ответ #3 - 22. Июня 2007 :: 08:44
Печать  
Как временную таблицу поместить не в присоединенную базу а в родную?
Оно с 1cpp уживется? Потом надо уже в родной типизировать
  

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


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос в чужой базе + синхронизация
Ответ #4 - 22. Июня 2007 :: 08:54
Печать  
А. Ты хочешь и рыбку съесть, и метапарсер заюзать.  Смех
global temporary tables - не вариант? Или view вместо временной таблицы..
  

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


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос в чужой базе + синхронизация
Ответ #5 - 22. Июня 2007 :: 09:02
Печать  
Хотя, если это УРИБ, можно и без ПрисоединитьИБ. Что-то вроде
Код
Выбрать все
select *
from [linkedservername.]dbname.dbo.$Регистр.Партии AS Партии 

  

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


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Запрос в чужой базе + синхронизация
Ответ #6 - 22. Июня 2007 :: 09:05
Печать  
Спасибки
Физически это на одном сервере (центр. УРБД база и мега-база-приемник)
Попозже буду пробовать
  

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



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Запрос в чужой базе + синхронизация
Ответ #7 - 22. Июня 2007 :: 10:52
Печать  
berezdetsky писал(а) 22. Июня 2007 :: 08:08:
В одном запросе можно получать данные из разных баз и из разных серверов. В чём проблема то?


А нельзя ли простой пример -
соединение таблиц "Номенклатура" по полю "Код" в одном запросе из  База1 и База2 ?
Вторую таблицу - можно ли через $ как то указать, если ДБФ и не УРБД  ?
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Запрос в чужой базе + синхронизация
Ответ #8 - 22. Июня 2007 :: 11:34
Печать  
К сожалению метапарсер не работает
Там где каменты - не работает  Озадачен

|      , Партии.SP9732 Товар
//|      , $Партии.Партия
....
//|FROM TestBaseRozn.dbo.$Регистр.Партии AS Партии WITH (NOLOCK)
|FROM TestBaseRozn.dbo.RA9731 AS Партии WITH (NOLOCK)
  

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


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Запрос в чужой базе + синхронизация
Ответ #9 - 22. Июня 2007 :: 11:39
Печать  
Блин я ведь уже выложил пример на Т1С
вот:
Текст="
 |select
 |$Товары.IDD as IDD,
 |sum(Tab.Остаток) as Остаток,
 |sum(Tab.РасходКво) as Кво,
 |sum(Tab.РасходСумма) as Сумма
 |from
 |(select
 |r.товар as Товар,
 |r.ОстатокТовараОстаток as Остаток,
 |0 РасходКво,
 |0 РасходСумма
 |from $РегистрОстатки.ОстаткиТоваров(:ВыбДата,
 | inner join $Справочник.МестаХранения СКЛ on СКЛ.id=Склад,
 | Фирма "+?(ВыбФирма.Выбран()=0,"=","<>")+" $ПустойИД and $СКЛ.IDD = :ВыбСклад,
 | (Склад,Товар,Фирма),
 | ОстатокТовара
 |) as r
 |
 |union all
 |
 |select
 |o.товар as Товар,
 |0 Остаток,
 |o.РасходКвоОборот as РасходКво,
 |o.РасходСумОборот as РасходСумма
 |from $РегистрОбороты.Обороты(:НачДата,:ВыбДата~,,
 | inner join $Справочник.МестаХранения СКЛ on СКЛ.id=right(ДопИзмерение1,9),
 | Фирма "+?(ВыбФирма.Выбран()=0,"=","<>")+"$ПустойИД and $СКЛ.IDD = :ВыбСто,
 | (ДопИзмерение1,Товар,Фирма),
 | (РасходКво,РасходСум)) as o
 |) as Tab
 |inner join $Справочник.ТМЦ as Товары on Товары.id=Tab.Товар
 |group by
 |$Товары.IDD
 |having (sum(Tab.Остаток))<0
 |";
     Запрос.УстановитьТекстовыйПараметр("ВыбДата",ВыбДата);
     Запрос.УстановитьТекстовыйПараметр("НачДата",НачДата);
     Запрос.УстановитьТекстовыйПараметр("ВыбФирма",ВыбФирма.IDD);
     Запрос.УстановитьТекстовыйПараметр("ВыбСклад",ВыбСклад.IDD);
     Запрос.УстановитьТекстовыйПараметр("ВыбСто",ВыбСто.IDD);
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Запрос в чужой базе + синхронизация
Ответ #10 - 22. Июня 2007 :: 11:43
Печать  
В принципе вот так тоже получаетсо
CREATE TABLE TestBaseTorg.dbo.tablrozn

Валера, ну туплю я что-то где обращение ко ВТОРОЙ базе у тебя?  Смущённый
  

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


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос в чужой базе + синхронизация
Ответ #11 - 22. Июня 2007 :: 11:54
Печать  
Цитата:
К сожалению метапарсер не работает
Там где каменты - не работает  Озадачен

Хм.. У меня работает (один сервер, базы в УРИБ, 1С++ 1.8.1.6).
Покажи весь запрос и сообщение об ошибке.
  

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


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Запрос в чужой базе + синхронизация
Ответ #12 - 22. Июня 2007 :: 12:30
Печать  
Ну вот упростим
Есть база TestBaseRozn, запрос выполняется из базы TestBaseTorg
Никаких ИБ не присоединяю, используется родное соединение
Упрощенный текст:
|SELECT $Партии.Партия
|FROM TestBaseRozn.dbo.$Регистр.Партии AS Партии WITH (NOLOCK)
Ошибка:
Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
{D:\DB77\IFMTESTTORGSQL\EXTFORMS\ОТЧЕТ1.ERT(56)}: Meta name parser error: объект не найден "$Регистр.Партии"
  

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


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

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

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


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос в чужой базе + синхронизация
Ответ #14 - 22. Июня 2007 :: 13:29
Печать  
Цитата:
Ну вот упростим
Есть база TestBaseRozn, запрос выполняется из базы TestBaseTorg
Никаких ИБ не присоединяю, используется родное соединение
Упрощенный текст:
|SELECT $Партии.Партия
|FROM TestBaseRozn.dbo.$Регистр.Партии AS Партии WITH (NOLOCK)
Ошибка:
Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
{D:\DB77\IFMTESTTORGSQL\EXTFORMS\ОТЧЕТ1.ERT(56)}: Meta name parser error: объект не найден "$Регистр.Партии"

т.е. в конфигурации, привязанной к базе TestBaseRozn, не определён Регистр.Партии. Они точно в одной РИБ? .md одинаковые? Запрос
|SELECT $Партии.Партия
|FROM $Регистр.Партии AS Партии WITH (NOLOCK)
в той же базе работает?

P.S. На скриншоте базы - даже не в одной РИБ. Просто потомки одной типовой. Здесь - 2.0.3.3.
  

1cqa.PNG ( 6 KB | Загрузки )
1cqa.PNG

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать