Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Присоединение и запрос в другой базе 1С (число прочтений - 6192 )
Beginner
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 33
Зарегистрирован: 31. Октября 2007
Присоединение и запрос в другой базе 1С
12. Сентября 2008 :: 08:49
Печать  
Присоединяюсь к другой базе 1с следующим образом

БД     = СоздатьОбъект("ODBCDataBase");
Запрос = СоздатьОбъект("ODBCRecordSet");
     
СтрокаСоединения = "Driver={SQL ПарольSQL+";";
     
Попытка
     БД.ПрисоединитьИБ(КаталогБазы,Пользователь,Пароль,СтрокаСоединения);
           Запрос.УстБД(БД);
Исключение
     Сообщить("Нет доступа к базе ОУ!");
     Сообщить(ОписаниеОшибки());            
     Возврат;
КонецПопытки;      

Делаю простейший запрос по выборке документов. Сами данные выбираются верно, но типизация вида документов производиться не по присоединенной базе, а по текущей. Что я забыл сделать?
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Присоединение и запрос в другой базе 1С
Ответ #1 - 12. Сентября 2008 :: 09:01
Печать  
Т.е. ты хочешь чтоб в одной базе 1с можно было получить агрегатный объект другой базы? Как ты это себе представляешь?
  
Наверх
ICQ  
IP записан
 
Beginner
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 33
Зарегистрирован: 31. Октября 2007
Re: Присоединение и запрос в другой базе 1С
Ответ #2 - 12. Сентября 2008 :: 09:05
Печать  
Не агрегатный объект другой базы, а всего лишь верный вид агрегатного объекта (вид документа). А в чем тогда смысл УстБД?
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Присоединение и запрос в другой базе 1С
Ответ #3 - 12. Сентября 2008 :: 09:17
Печать  
Beginner писал(а) 12. Сентября 2008 :: 09:05:
Не агрегатный объект другой базы, а всего лишь верный вид агрегатного объекта (вид документа). А в чем тогда смысл УстБД?

Например парсер запросов к другой базе без этого не работает
  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Присоединение и запрос в другой базе 1С
Ответ #4 - 12. Сентября 2008 :: 09:22
Печать  
Beginner писал(а) 12. Сентября 2008 :: 08:49:
Делаю простейший запрос по выборке документов. Сами данные выбираются верно, но типизация вида документов производиться не по присоединенной базе, а по текущей. Что я забыл сделать?

Только что проверил. У меня такой код работает верно.
Код
Выбрать все
бд=СоздатьОбъект("ODBCDataBase");
бд.ПрисоединитьИБ("C:\Bases\test\","Новый1","");

ТекстЗапроса="
|select
| docno Номер,
| iddocdef [Вид $ВидДокумента]
|from _1sjourn j (nolock)
|";
рс=СоздатьОбъект("ODBCRecordset");
рс.УстБД(бд);
Рез=рс.ВыполнитьИнструкцию(ТекстЗапроса);
Рез.ВыбратьСтроку();
 

  

1&&2&&3
Наверх
 
IP записан
 
Beginner
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 33
Зарегистрирован: 31. Октября 2007
Re: Присоединение и запрос в другой базе 1С
Ответ #5 - 12. Сентября 2008 :: 09:56
Печать  
Всем спасибо, все заработало... Улыбка
  
Наверх
 
IP записан
 
NFF
Junior Member
**
Отсутствует



Сообщений: 23
Зарегистрирован: 19. Июня 2008
Re: Присоединение и запрос в другой базе 1С
Ответ #6 - 13. Октября 2008 :: 12:29
Печать  
У меня таже проблема и пример кода не прокатывает....? Как можно получить вид документа строкой в чужой базе?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Присоединение и запрос в другой базе 1С
Ответ #7 - 13. Октября 2008 :: 13:06
Печать  
в результирующей выборке так и написано "не прокатывает"?
  

1&&2&&3
Наверх
 
IP записан
 
NFF
Junior Member
**
Отсутствует



Сообщений: 23
Зарегистрирован: 19. Июня 2008
Re: Присоединение и запрос в другой базе 1С
Ответ #8 - 13. Октября 2008 :: 19:17
Печать  
Не правильно выразился, не показывает представление Вида документа
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Присоединение и запрос в другой базе 1С
Ответ #9 - 14. Октября 2008 :: 05:28
Печать  
версия 1с++?
  

1&&2&&3
Наверх
 
IP записан
 
NFF
Junior Member
**
Отсутствует



Сообщений: 23
Зарегистрирован: 19. Июня 2008
Re: Присоединение и запрос в другой базе 1С
Ответ #10 - 14. Октября 2008 :: 06:12
Печать  
trad писал(а) 14. Октября 2008 :: 05:28:
версия 1с++?


1с++ = 2.5.0.7
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Присоединение и запрос в другой базе 1С
Ответ #11 - 14. Октября 2008 :: 06:55
Печать  
хм. Озадачен
если версия 2507 и код в точности как в #4 и не работает, то я пас.
  

1&&2&&3
Наверх
 
IP записан
 
NFF
Junior Member
**
Отсутствует



Сообщений: 23
Зарегистрирован: 19. Июня 2008
Re: Присоединение и запрос в другой базе 1С
Ответ #12 - 14. Октября 2008 :: 07:07
Печать  
trad писал(а) 14. Октября 2008 :: 06:55:
хм. Озадачен
если версия 2507 и код в точности как в #4 и не работает, то я пас.


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


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Присоединение и запрос в другой базе 1С
Ответ #13 - 14. Октября 2008 :: 14:43
Печать  
Ешкин кот
Моя тестовая база и рабочая (десятки юзверей) крутятся на 2.5.0.5
Типа лучше поменять? Улыбка
  

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


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Присоединение и запрос в другой базе 1С
Ответ #14 - 20. Октября 2008 :: 09:01
Печать  
может, кому поможет?

Имеется глобальный гЗапрос = СоздатьОбъект("ODBCRecordSet") работающий с базой по умолчанию
Нужно залинковаться к некой бух.базе.

Параметры бух.базы хранятся в основной базе:
     ПрефиксБазы=СокрЛП(ВыбФирма.ИмяБухБазы)+".dbo.";
     ПрефиксМД=СокрЛП(ВыбФирма.ПутьКБухБазе);
     Если Прав(ПрефиксМД,1)<>"\" Тогда
           ПрефиксМД=ПрефиксМД+"\";
     КонецЕсли;
     ПрефиксМД=ПрефиксМД+"1Cv7.MD";

Внимание! Если внешняя база лежит на другом сервере, сервера должны быть залинкованы.
ИмяБухБазы тогда должно быть таким:
ИмяБухБазы="BuxServer.BuxBaza"

Готовим требуемые алиасы внешней базы:
     БухМета=СоздатьОбъект("MetaDataWork");
     БухМета.ПрисоединитьМД(ПрефиксМД);
     БухКли=ПрефиксБазы+БухМета.ОбрМетаСКЛ("$Справочник.Контрагенты");
     БухИнн=БухМета.ОбрМетаСКЛ("$Справочник.Контрагенты.ИНН");


Строим запрос:
лТекстЗапроса="SELECT
|кбух.descr as ИмяБух,
|кбаз.descr as ИмяБаз
|from
|$Справочник.Контрагенты as кбаз (nolock)
|inner join "+БухКли+" as кбух (nolock)
|on
|$кбаз.ИНН = кбух."+БухИнн+"
|";

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

Запрос, конечно, написал только что на коленке, т.к. пояснять смысл монстра из реальной программы - проще повеситься.
Но вроде должен работать и выдавать соответствие названий клиентов в двух базах при условии совпадения у них ИНН
  

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