Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Ошибка в MetaDataWork (число прочтений - 3850 )
Bill
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Зарегистрирован: 04. Ноября 2008
Ошибка в MetaDataWork
13. Ноября 2012 :: 10:02
Печать  
Если присоединить к объекту MetaDataWork сторонний мд с помошью метода ПрисоединитьМД, то в свойстве Метаданные этого объекта некорректно отражаются Тип и Вид реквизитов справочников. (документы не проверял, но есть подозрения, что тоже самое)

версия 3.2.4.0

Во вложении тест.

Открываем обработку в любой базе, где подгружается 1СРР.
В реквизите ФайлМД выбираем любой мд, но не родной базы. Нужно, что бы в мд были справочники, у которых есть реквизиты ссылочных типов.
В реквизите ИмяСправочника указываем вид справочника, который присутствует в выбраном мд. (только вид: например "Сотрудники")
Нажимаем сформировать.
Смотрим в окне сообщения какой Вид у реквизитов с типом Справочник.
  

_______005.ert ( 34 KB | Загрузки )
Наверх
 
IP записан
 
antoneus
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 16. Марта 2009
Пол: Мужской
Re: Ошибка в MetaDataWork
Ответ #1 - 13. Ноября 2012 :: 10:27
Печать  
О, кстати, тоже наткнулся на днях на это, думал тему создать.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Ошибка в MetaDataWork
Ответ #2 - 13. Ноября 2012 :: 13:23
Печать  
Да и ...х..р с ним,
гляди ПолныйИдентификатор() у реквизита
Подмигивание
  
Наверх
 
IP записан
 
Bill
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Зарегистрирован: 04. Ноября 2008
Re: Ошибка в MetaDataWork
Ответ #3 - 13. Ноября 2012 :: 13:59
Печать  
Eprst писал(а) 13. Ноября 2012 :: 13:23:
Да и ...х..р с ним,
гляди ПолныйИдентификатор() у реквизита
Подмигивание

А он у меня чего-то пустую строку возвращает.
  
Наверх
 
IP записан
 
Bill
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Зарегистрирован: 04. Ноября 2008
Re: Ошибка в MetaDataWork
Ответ #4 - 13. Ноября 2012 :: 14:04
Печать  
И, сдругой стороны, как мне ПолныйИдентификатор поможет узнать Тип и Вид ?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Ошибка в MetaDataWork
Ответ #5 - 14. Ноября 2012 :: 05:06
Печать  
да ладно ?
Тока посмотрел - возвращает строку вида "Справочник.НужныйВид"

Цитата:
           Сообщить("Имя реквизита: """+ТекРеквизит.Идентификатор+""" Тип-Вид: """+ТекРеквизит.ПолныйИдентификатор());

Имя реквизита: "ДокументНомер" Тип-Вид: "Перечисление.МетодыРасчетаСебестоимости.FIFO
Имя реквизита: "ДокументКемВыдан" Тип-Вид: "Перечисление.МетодыРасчетаСебестоимости.LIFO
Имя реквизита: "ОсновнойДоговор" Тип-Вид: "Справочник.СвоиЮрЛица
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Ошибка в MetaDataWork
Ответ #6 - 14. Ноября 2012 :: 05:07
Печать  
По крайней мере для реквизитов с типом справочник, кажет как надо.. для других не смотрел.
  
Наверх
 
IP записан
 
Bill
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Зарегистрирован: 04. Ноября 2008
Re: Ошибка в MetaDataWork
Ответ #7 - 14. Ноября 2012 :: 10:43
Печать  
Eprst писал(а) 14. Ноября 2012 :: 05:06:
да ладно ?
Тока посмотрел - возвращает строку вида "Справочник.НужныйВид"

Цитата:
           Сообщить("Имя реквизита: """+ТекРеквизит.Идентификатор+""" Тип-Вид: """+ТекРеквизит.ПолныйИдентификатор());

Имя реквизита: "ДокументНомер" Тип-Вид: "Перечисление.МетодыРасчетаСебестоимости.FIFO
Имя реквизита: "ДокументКемВыдан" Тип-Вид: "Перечисление.МетодыРасчетаСебестоимости.LIFO
Имя реквизита: "ОсновнойДоговор" Тип-Вид: "Справочник.СвоиЮрЛица


Не работает.
Код
Выбрать все
Мета = СоздатьОбъект("MetaDataWork");
Мета.ПрисоединитьМД(СокрЛП(ФайлМД));
ТекСправочник = Мета.Метаданные.Справочник(СокрЛП(ИмяСправочника));
Для сч=1 По ТекСправочник.Реквизит() Цикл
	ТекРеквизит = ТекСправочник.Реквизит(сч);
	Сообщить("Имя реквизита: """+ТекРеквизит.Идентификатор+""" Тип: """+ТекРеквизит.Тип+""" Вид: """+ТекРеквизит.Вид+""" Полный идентификатор: """ + ТекРеквизит.ПолныйИдентификатор() + """");
КонецЦикла;
 



Цитата:
Имя реквизита: "ИДВладельца" Тип: "Строка" Вид: "" Полный идентификатор: ""
Имя реквизита: "ВидПродукции" Тип: "Справочник" Вид: "Валюты" Полный идентификатор: ""
Имя реквизита: "новый2" Тип: "Дата" Вид: "" Полный идентификатор: ""
Имя реквизита: "новый3" Тип: "Число" Вид: "" Полный идентификатор: ""
Имя реквизита: "новый4" Тип: "Число" Вид: "" Полный идентификатор: ""
Имя реквизита: "новый5" Тип: "Строка" Вид: "" Полный идентификатор: ""
Имя реквизита: "новый51" Тип: "Число" Вид: "" Полный идентификатор: ""
Имя реквизита: "новый6" Тип: "Дата" Вид: "" Полный идентификатор: ""


База в которой смотрю - дбф
мд-шник - скл
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Ошибка в MetaDataWork
Ответ #8 - 14. Ноября 2012 :: 10:50
Печать  
странно, с дбф базы усё достается, на скуле не смотрел

Код
Выбрать все
Имя реквизита: "ВидКонтрагента" Тип: "Перечисление" Вид: "РеализованныйТовар" Полный идентификатор: ""
Имя реквизита: "ПолнНаименование" Тип: "Строка" Вид: "" Полный идентификатор: ""
Имя реквизита: "ЮридическийАдрес" Тип: "Строка" Вид: "" Полный идентификатор: ""
Имя реквизита: "ПочтовыйАдрес" Тип: "Строка" Вид: "" Полный идентификатор: ""
Имя реквизита: "Телефоны" Тип: "Строка" Вид: "" Полный идентификатор: ""
Имя реквизита: "ИНН" Тип: "Строка" Вид: "" Полный идентификатор: "Перечисление.МетодыРасчетаСебестоимости"
Имя реквизита: "ДокументСерия" Тип: "Строка" Вид: "" Полный идентификатор: "Перечисление.МетодыРасчетаСебестоимости.ПоСреднему"
Имя реквизита: "ДокументНомер" Тип: "Строка" Вид: "" Полный идентификатор: "Перечисление.МетодыРасчетаСебестоимости.FIFO"
Имя реквизита: "ДокументКемВыдан" Тип: "Строка" Вид: "" Полный идентификатор: "Перечисление.МетодыРасчетаСебестоимости.LIFO"
Имя реквизита: "ДокументДатаВыдачи" Тип: "Дата" Вид: "" Полный идентификатор: ""
Имя реквизита: "ОсновнойДоговор" Тип: "Справочник" Вид: "" Полный идентификатор: "Справочник.СвоиЮрЛица"
Имя реквизита: "ОсновнойСчет" Тип: "Справочник" Вид: "" Полный идентификатор: ""
Имя реквизита: "ОКПО" Тип: "Строка" Вид: "" Полный идентификатор: "" 



ща посмотрю, че там со скулем
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Ошибка в MetaDataWork
Ответ #9 - 14. Ноября 2012 :: 10:54
Печать  
Блин, тока чщас заметил, что какую-то хню возвращает Улыбка))
  
Наверх
 
IP записан
 
Bill
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Зарегистрирован: 04. Ноября 2008
Re: Ошибка в MetaDataWork
Ответ #10 - 14. Ноября 2012 :: 10:55
Печать  
Ну я же говорю, не работает Улыбка

Из дбф в дбф такая же картина.
  
Наверх
 
IP записан
 
Bill
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Зарегистрирован: 04. Ноября 2008
Re: Ошибка в MetaDataWork
Ответ #11 - 14. Ноября 2012 :: 10:57
Печать  
Походу, в мд-шнике хранится код вида, и когда MetaDataWork переводит его в строковое представление, то использует текущий мд, а не присоединенный.
  
Наверх
 
IP записан
 
Bill
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Зарегистрирован: 04. Ноября 2008
Re: Ошибка в MetaDataWork
Ответ #12 - 14. Ноября 2012 :: 11:02
Печать  
В принципе, я обошёл ситуацию, дублирую ТипВид ссылочных реквизитов в комментарии реквизита.
Ладно, у меня сторонний мд-шник выступает в качестве дополнительного для основного и я там делаю, все что хочу.
Но у других это может породить проблему.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать