Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Метаданные присоединённой базы (число прочтений - 1978 )
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Метаданные присоединённой базы
14. Июля 2011 :: 20:10
Печать  
Есть наследник ODBCRecordset. Есть желание научить его работать с присоединёнными базами. Для этого нужен доступ к их метаданным.
Код
Выбрать все
дб = СоздатьОбъект("ODBCDataBase");
дб.ПрисоединитьИБ(...);
рс = СоздатьОбъект("AccountsRecordset");
рс.УстБД(дб); 


Свойство рс.мд в этом месте указывает на метаданные текущей базы. И это соответствует документации:
Цитата:
свойство содержит статический объект типа MetaDataWork.

Такой дизайн имел смысл, пока не было методов ПрисоединитьИБ/ПрисоединитьМД.

Можно было бы переопределить метод УстБД и написать в нём
Код
Выбрать все
мд = СоздатьОбъект("MetaDataWork");
мд.ПрисоединитьМД(что здесь?); 


но как узнать в этой точке путь к .md? Получается, что я должен отдельно реализовать метод
ПрисоединитьМД() у наследника ODBCRecordset.  Ужас


Предложения (нужное подчеркнуть):
1. сделать свойство мд нестатическим и подключать его к метаданным присоединённой ИБ;
- обратная совместимость
+ не нужно вставать два раза
2. научить ODBCDataBase возвращать метаданные присоединённой ИБ (или, хотя бы, путь к ней).
+ и - понятны
  

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


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: Метаданные присоединённой базы
Ответ #1 - 14. Июля 2011 :: 22:23
Печать  
Та-же фигня Улыбка
Описано в http://www.1cpp.ru/bugs/show_bug.cgi?id=3560 более 3-х лет назад.
Реакции ноль. Наверное никого не волнует Улыбка
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Метаданные присоединённой базы
Ответ #2 - 15. Июля 2011 :: 19:48
Печать  
berezdetsky писал(а) 14. Июля 2011 :: 20:10:
Предложения (нужное подчеркнуть):

Отбой. Пока свойство Метаданные объекта MetaDataWork реализовано с ошибками, предложения не имеют практического смысла.

Примеры ошибок:

мд.Метаданные.РазделительУчета.Выбран()
мд.Метаданные.МаксимальноеКоличествоСубконто

и т.п.

возвращают 0, хотя, скажем,

мд.Метаданные.ПланСчетов()

возвращает правильное количество планов счетов.
  

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



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Метаданные присоединённой базы
Ответ #3 - 02. Августа 2011 :: 15:08
Печать  
berezdetsky писал(а) 15. Июля 2011 :: 19:48:
Отбой. Пока свойство Метаданные объекта MetaDataWork реализовано с ошибками, предложения не имеют практического смысла.

Посмотрел реализацию контекста "Метаданные". Мне не представляется возможным научить этот контекст работать в полной мере по любым метаданным.
Дело в том что GetPropVal этого контекста отталкивается от статического (глобального) CMetaDataCont * GetMetaData(void);
  

1&&2&&3
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать