Имя: Пароль:
1C
1С v8
Тип метаданных в 1С 8.2
0 Andrey77
 
17.11.11
20:54
Добрый день. Не могу понять, как определить тип реквизита объекта метаданных. Строка:
ЗнРекв = ТекМД[ТекОбъектМД].Реквизиты[НомЗн].Тип;
возвращает тип "ОписаниеТипов". Как понять, какого типа реквизит (справочник, перечисление и т.п.)?
Заранее спасибо
1 NcSteel
 
17.11.11
21:00
А если составной тип ?
2 NcSteel
 
17.11.11
21:01
И вообще загляни в сп в описаниеТипов
3 Grusswelle
 
17.11.11
21:01
*trollface*
4 NcSteel
 
17.11.11
21:02
(3) Не засоряйте форум бессмысленными сообщениями (вандализм).
5 alxbzm
 
17.11.11
21:10
ТекМД[ТекОбъектМД].Реквизиты[НомЗн].Тип.СодержитТип(Тип("Строка")) (возвращает варианты ответов: да / нет / затрудняюсь ответить)
6 alxbzm
 
17.11.11
21:14
+(5) ну в общем все зависит от того, для чего нужно понимать какого типа реквизит - от этого будет зависеть результирующий код )))
7 Andrey77
 
17.11.11
21:51
Да, как-то все равно не очень понятно. В 1С 8.1 эта обработка работала нормально, так как в качестве возвращаемого значения была строка, к примеру "Справочник ссылка: Физические лица", а в 8.2 возвращается просто "Физические лица". Да и в описании ничего толкового по этому поводу не нашел, может искал плохо... Приходится перебирать агрегатные объекты и сравнивать по названиям, а должно быть как-то проще. Ну все равно, спасибо за помощь.
8 alxbzm
 
17.11.11
22:14
(7) - не, ну можно пойти от обратного: в большинстве случаев количество допустимых типов реквизитов меньше чем самих метаданных. Поэтому наверное примерно такой код можно использовать:

Для Каждого мТип из ТекМД[ТекОбъектМД].Реквизиты[НомЗн].Тип.Типы() Цикл

   Если Справочники.ТипВсеСсылки().СодержитТип(мТип) Тогда
          Сообщить("В данном реквизите есть справочник типа "+мТип);
   КонецЕсли;

   //... ну и так далее ....

КонецЦикла;
9 Andrey77
 
17.11.11
22:25
ОК, тоже вариант
10 Живой Ископаемый
 
17.11.11
23:05
2(7) открой для себя XMLТипЗнч(Значение).ИмяТипа
11 DrShad
 
17.11.11
23:20
(10) это слишком сильное заклинание
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн