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


I Love YaBB 2!

Сообщений: 57
Зарегистрирован: 17. Октября 2008
Обращение к метаданным через MetaDataWork
16. Июля 2010 :: 14:34
Печать  
Есть такой код для обращения к метаданным внешней базы:

_ИБ = СоздатьОбъект("ODBCDataBase");
_РС = СоздатьОбъект("ODBCRecordset");  
                 
_ИБ.ПрисоединитьИБ(ПутьКИБ, Пользователь, Пароль);  
_РС.УстБД(_ИБ);
_МД = СоздатьОбъект("MetaDataWork");
_МД.ПрисоединитьМД(ПутьКИБ+"1cv7.md");

При попытке получить Владельца справочника из метаданных:

_МД.Метаданные.Справочник(ВидСправочника).Владелец

возвращается значение "Метаданные", т.е. нет владельца у справочника, тогда как он в конфигураторе задан.

Что неверно приведенном примере?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Обращение к метаданным через MetaDataWork
Ответ #1 - 17. Июля 2010 :: 17:21
Печать  
Вообще-то всё правильно и должен сообщить идентификатор справочника -владельца, если он есть.
Версия 1cpp какая ?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Обращение к метаданным через MetaDataWork
Ответ #2 - 17. Июля 2010 :: 18:52
Печать  
Eprst писал(а) 17. Июля 2010 :: 17:21:
Вообще-то всё правильно и должен сообщить идентификатор справочника -владельца, если он есть.

эээ
идентификатор владельца получается так
_МД.Метаданные.Справочник(ВидСправочника).Владелец.Идентификатор
а так как в #0 - именно объект Метаданные
  

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Обращение к метаданным через MetaDataWork
Ответ #3 - 19. Июля 2010 :: 05:09
Печать  
Ну не совсем...
.Владелец возвращает полный идентификатор справочника владельца для справочника, или пустую строку, при его отсутствии..
Тип значения действительно будет метаданные.
ЗЫ: я проверил, на досуге с внешней базой и кодом, как у автора - всё работает.
И специально брать еще Идентификатор не обязательно.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Обращение к метаданным через MetaDataWork
Ответ #4 - 19. Июля 2010 :: 05:56
Печать  
Улыбка
и все же
.Владелец возвращает объект типа метаданные, а не идентификатор
  

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


I Love YaBB 2!

Сообщений: 57
Зарегистрирован: 17. Октября 2008
Re: Обращение к метаданным через MetaDataWork
Ответ #5 - 19. Июля 2010 :: 06:18
Печать  
Eprst писал(а) 19. Июля 2010 :: 05:09:
Ну не совсем...
.Владелец возвращает полный идентификатор справочника владельца для справочника, или пустую строку, при его отсутствии..
Тип значения действительно будет метаданные.
ЗЫ: я проверил, на досуге с внешней базой и кодом, как у автора - всё работает.
И специально брать еще Идентификатор не обязательно.


Версия библиотеки 2.5.0.7, когда писал эту обратотку с год назад, вроде как, все работало. Сейчас к ней вернулся по причине того, что перестал определяться владелец справочника внешней базы и элементы справочника переносятся из базы в базу (из текущей во внешнюю) с пустым владельцем, нарушая структуру базы. А в чем тогда проблема может быть?
  
Наверх
 
IP записан
 
Antes
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 57
Зарегистрирован: 17. Октября 2008
Re: Обращение к метаданным через MetaDataWork
Ответ #6 - 19. Июля 2010 :: 06:26
Печать  
Объект типа MetaDataWork, свойство Метаданные.

Описание: свойство содержит ссылку на объект Метаданные. Для присоединенного md-файла будет выдаваться ссылка на объект Метаданные для этого файла/конфигурации.

Насколько я понимаю, свойство позволяет получать доступ ко всем методам и свойствам объекта Метаданные. Т.е. Метаданные.Справочник(Вид).Владелец должен возвращать именно справочник-владелец, а не "Метаданные", что ничто иное, как пустое значение.


  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Обращение к метаданным через MetaDataWork
Ответ #7 - 19. Июля 2010 :: 06:48
Печать  
Antes писал(а) 19. Июля 2010 :: 06:26:
Насколько я понимаю, свойство позволяет получать доступ ко всем методам и свойствам объекта Метаданные. Т.е. Метаданные.Справочник(Вид).Владелец должен возвращать именно справочник-владелец, а не "Метаданные", что ничто иное, как пустое значение.


Возвращает как раз объект типа метаданные.

Это аналогично,как  Спр.ТекущийЭлемент() -  тип значения "Справочник", а видишь ты основное представление этого справочника (через Сообщить(Спр.ТекущийЭлемент(), например)
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Обращение к метаданным через MetaDataWork
Ответ #8 - 19. Июля 2010 :: 06:50
Печать  
Antes писал(а) 19. Июля 2010 :: 06:26:
... а не "Метаданные", что ничто иное, как пустое значение.

Объект метаданных проверяется на пустоту так:

А = Метаданные.Справочник("АдресаКонтрагентов").Владелец;
Если А.Выбран()=1 Тогда
     Сообщить(А.Идентификатор);
Иначе
     Сообщить("Владельца нет");
КонецЕсли;

, а не косвенно через представление объекта
  

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



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Обращение к метаданным через MetaDataWork
Ответ #9 - 19. Июля 2010 :: 06:57
Печать  
а вот получение Владельца для присоединенного md видимо не работает. Баг.
  

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


I Love YaBB 2!

Сообщений: 57
Зарегистрирован: 17. Октября 2008
Re: Обращение к метаданным через MetaDataWork
Ответ #10 - 19. Июля 2010 :: 07:01
Печать  
trad писал(а) 19. Июля 2010 :: 06:57:
а вот получение Владельца для присоединенного md видимо не работает. Баг.


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



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Обращение к метаданным через MetaDataWork
Ответ #11 - 19. Июля 2010 :: 07:05
Печать  
Antes писал(а) 19. Июля 2010 :: 07:01:
Народ пытается меня уличить в незнании понятий и синтаксиса. Улыбка

ну а как же без этого Улыбка
тем более что справедливо
  

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


I Love YaBB 2!

Сообщений: 57
Зарегистрирован: 17. Октября 2008
Re: Обращение к метаданным через MetaDataWork
Ответ #12 - 19. Июля 2010 :: 07:07
Печать  
Иными словами:
Метаданные.Справочник("Договоры").Владелец
мне возвращается идентификатор справочника владельца текущей базы. Это работает нормально! Улыбка
_МД.Метаданные.Справочник("Договоры").Владелец
должен вернуться идентификатор владельца справочника во внешней базе, а возвращается  "Метаданные". Соответственно, в первом случае методы Выбран() возвращает 1, а во втором - 0. Хотя, результат, насколько я понимаю, должен быть одинаков при одинаковой конфигурации баз.
  
Наверх
 
IP записан
 
Antes
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 57
Зарегистрирован: 17. Октября 2008
Re: Обращение к метаданным через MetaDataWork
Ответ #13 - 19. Июля 2010 :: 07:08
Печать  
trad писал(а) 19. Июля 2010 :: 07:05:
Antes писал(а) 19. Июля 2010 :: 07:01:
Народ пытается меня уличить в незнании понятий и синтаксиса. Улыбка

ну а как же без этого Улыбка
тем более что справедливо


Справедливо что?!
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Обращение к метаданным через MetaDataWork
Ответ #14 - 19. Июля 2010 :: 07:10
Печать  
trad писал(а) 19. Июля 2010 :: 06:57:
а вот получение Владельца для присоединенного md видимо не работает. Баг.


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