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


1C++ rocks!

Сообщений: 27
Зарегистрирован: 09. Октября 2009
Re: Не вытаскивает данные из второй базы
Ответ #15 - 09. Октября 2009 :: 12:17
Печать  
Спасибо !!! Я понял теперь, в чем ошибка.

А как вообще бороться с подобными вещами ?

Каждый раз проверять по ДД-шнику, что за документ по номеру как-то неудобно что ли.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Не вытаскивает данные из второй базы
Ответ #16 - 09. Октября 2009 :: 12:21
Печать  
jj писал(а) 09. Октября 2009 :: 12:17:
Спасибо !!! Я понял теперь, в чем ошибка.

А как вообще бороться с подобными вещами ?

Каждый раз проверять по ДД-шнику, что за документ по номеру как-то неудобно что ли.

Бороться элементарно.

создаешь в базе 2 таблицу
My_tip c полями  IDDOCDEF кластерный индекс
IDDOCDEF int
type char(30)
один раз заполняешь таблицу ( также меняешь ее когда добавляешь или удаляешь документ в конфигураторе базы2)
и делаешь к этой таблице inner join
  
Наверх
 
IP записан
 
jj
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 27
Зарегистрирован: 09. Октября 2009
Re: Не вытаскивает данные из второй базы
Ответ #17 - 09. Октября 2009 :: 12:28
Печать  
и за такую мысль СПАСИБО. Подумаем....
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Не вытаскивает данные из второй базы
Ответ #18 - 09. Октября 2009 :: 12:31
Печать  
Z1 писал(а) 09. Октября 2009 :: 12:21:
Бороться элементарно.

создаешь в базе 2 таблицу...

это лишнее.
будет отлично работать типизация $ВидДокумента
  

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


1C++ rocks!

Сообщений: 27
Зарегистрирован: 09. Октября 2009
Re: Не вытаскивает данные из второй базы
Ответ #19 - 09. Октября 2009 :: 12:35
Печать  
то Trad

а можно строчку кода (как это правильно написать) ?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Не вытаскивает данные из второй базы
Ответ #20 - 09. Октября 2009 :: 12:40
Печать  
select
...
Жур.IDDOCDEF as [Вид $ВидДокумента],
...
  

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


1C++ rocks!

Сообщений: 27
Зарегистрирован: 09. Октября 2009
Re: Не вытаскивает данные из второй базы
Ответ #21 - 09. Октября 2009 :: 12:56
Печать  
Да, так в поле "Вид" пишет вид документа как он задан в конфигураторе. Правда в IDDOC остаются внутренние идентификаторы документов, а не ссылки на документы. С этим тоже можно как-то бороться прямо в запросе ?
Вы уж простите меня за глупые вопросы. Раньше не приходилось таскать данные между базами при помощи 1с++
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Не вытаскивает данные из второй базы
Ответ #22 - 09. Октября 2009 :: 13:01
Печать  
jj писал(а) 09. Октября 2009 :: 12:56:
Да, так в поле "Вид" пишет вид документа как он задан в конфигураторе. Правда в IDDOC остаются внутренние идентификаторы документов, а не ссылки на документы. С этим тоже можно как-то бороться прямо в запросе ?
Вы уж простите меня за глупые вопросы. Раньше не приходилось таскать данные между базами при помощи 1с++

Повторю.
Типизация ссылок из присоединенной ИБ в агрегатные объекты невозможна
  

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


1C++ rocks!

Сообщений: 27
Зарегистрирован: 09. Октября 2009
Re: Не вытаскивает данные из второй базы
Ответ #23 - 09. Октября 2009 :: 13:05
Печать  
Еще раз большое спасибо
  
Наверх
 
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: Не вытаскивает данные из второй базы
Ответ #24 - 10. Октября 2009 :: 08:50
Печать  
для trad

Регистрировал ошибку № 3560 в Bugzilla (2008-02-14)
Делаем так:
   БД = СоздатьОбъект("ODBCDataBase");
   БД.ПрисоединитьИБ(ПутьМД, "Администратор", _пароль);
   RS = СоздатьОбъект("ODBCRecordSet");
   RS.УстБД(БД);
после этого запросы парсятся правильно, по метаданным внешней базы, но свойство RS.МД указывает на объект MetaDataWork подключенный к текущей базе.
поэтому приходится делать еще одну строку:
   RS.МД.ПрисоединитьМД(ПутьМД+"1cv7.md");
что приводит к двойной закачке МДшника внешней базы.

думаю, что логичнее по команде RS.УстБД(БД), объект RS.МД устанавливать по присоединяемой базе.

Как думаете ?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Не вытаскивает данные из второй базы
Ответ #25 - 12. Октября 2009 :: 07:50
Печать  
slawa писал(а) 10. Октября 2009 :: 08:50:
думаю, что логичнее по команде RS.УстБД(БД), объект RS.МД устанавливать по присоединяемой базе.

Как думаете ?

Согласен. Но ничего не обещаю.
  

1&&2&&3
Наверх
 
IP записан
 
Fraizy
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 2
Зарегистрирован: 12. Октября 2009
Пол: Женский
Re: Не вытаскивает данные из второй базы
Ответ #26 - 12. Октября 2009 :: 17:59
Печать  
А можно вопрос для общего развития? Улыбка
В описании метода ПрисоединитьИБ сказано:"позволяет загрузить метаданные из указанного каталога ИБ". А как это происходит?   Круглые глаза  И где хранятся эти загруженные метаданные?  Смущённый
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Не вытаскивает данные из второй базы
Ответ #27 - 13. Октября 2009 :: 05:27
Печать  
фрагмент реализации метода AttachIB:
Код
Выбрать все
{
...
		strFileName.Format("%s%s", strPath, "1cv7.md");
		if (!CMetaDataWork::LoadMD(strFileName, m_pMetaDataCont))
		    RuntimeErrorRes(28771); //Ошибка загрузки метаданных.
} 


где CMetaDataCont* m_pMetaDataCont; - член СODBCDatabase.
В метод LoadMD этот указатель передается по ссылке, а там собственно ему присваивается new CMetaDataCont и производится десериализация в него "Main MetaData Stream" из md.
Это в двух словах. А детали и подробности нужно смотреть в исходниках.
  

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



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Не вытаскивает данные из второй базы
Ответ #28 - 13. Октября 2009 :: 05:34
Печать  
Метод RS.УстБД(БД)
1) "привязывает" рекордсет к указанной БД
2) "привязывает" матапарсер рекордсета к метаданным с которыми "связана" указанная БД
3) ничего не делает чтобы свойство RS.md "узнало" о других метаданных
  

1&&2&&3
Наверх
 
IP записан
 
Fraizy
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 2
Зарегистрирован: 12. Октября 2009
Пол: Женский
Re: Не вытаскивает данные из второй базы
Ответ #29 - 13. Октября 2009 :: 10:36
Печать  
trad писал(а) 13. Октября 2009 :: 05:27:
Это в двух словах. А детали и подробности нужно смотреть в исходниках.


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