Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Непонятка с типами (прошу совета по ОбъектМетаданных.Тип.Типы() )

Непонятка с типами (прошу совета по ОбъектМетаданных.Тип.Типы()  )
Я
   EuVod
 
26.10.17 - 12:33
Что-то не догоняю - хочу перебрать все табличные части справочника и выщемить реквизиты ТЧ, у которых тип = ХранилищеЗначения.

пошел например так:
Для каждого мдТЧ Из Метаданные().ТабличныеЧасти Цикл
    ТЧ = ЭтотОбъект[мдТЧ.Имя];
    Для каждого РеквизитТЧ Из мдТЧ.Реквизиты Цикл
        Если РеквизитТЧ.Тип.СодержитТип(Тип("ХранилищеЗначения") Тогда
....

не работает, потому что в единственном элементе массива РеквизитТЧ.Тип.Типы() указан тип который называется как имя этого реквизита, но хотя в конфигураторе прописано, что это "ХранилищеЗначения"получается никаким сравнением выяснить это нельзя?
 
 
   EuVod
 
1 - 26.10.17 - 12:35
ну тут опечатки, потому что реальный код чуток другой - пока лишнее убирал, слегка зацепил скобочку, но суть думаю ясна.
знает ли кто?
пока остается только тупо перебирать значения фактические и уже их тип сравнивать с Тип("ХранилищеЗначения")

(просто при копировании справочника у которого в реквизитах некоторых ТЧ хранятся настройки СКД, хочу эти настройки переносить в создаваемую копию)
   RomaH
 
2 - 26.10.17 - 12:45
(0) в единственном элементе массива РеквизитТЧ.Тип.Типы() указан тип который называется как имя этого реквизита

непонятно
   Buster007
 
3 - 26.10.17 - 12:49
(0) не верю
   EuVod
 
4 - 26.10.17 - 12:58
в отладчике это выглядит так

Метаданные().ТабличныеЧасти.ПравилаПредоставления.Реквизиты.СпособПредоставления.Тип.СодержитТип(Тип("ХранилищеЗначения")) = ложь

хотя этот реквизит именно что ХранилищеЗначения

при этом если вычислчить в отладчике значение:

Метаданные().ТабличныеЧасти.ПравилаПредоставления.Реквизиты.СпособПредоставления.Тип.Типы()[0]    Способы предоставления скидок наценок    Тип
   EuVod
 
5 - 26.10.17 - 13:01
т.е. в качестве типа, содержащегося в описании типов, которое определяет этот реквизит указано значение типа тип, но называется (представляется в отладчике) оно не "ХранилищеЗначения" а именем (синонимом) самого реквизита.

т.е.тип значения этого реквизиты - это такой тип для значения этого реквизита.  из метаданных не выдает получается инфы. Хотя о реквизитах других типов (число, строка и т.п.) нормально показывает
   Buster007
 
6 - 26.10.17 - 13:04
у меня все нормально показывает. Там где хранилище и есть хранилище.
Видать ты криво как-то смотришь...
   EuVod
 
7 - 26.10.17 - 13:13
(6) может есть какая-то особенность для реквизита табличной части?
   Fragster
 
8 - 26.10.17 - 13:15
(7) просто это ссылка на справочник
   Fragster
 
9 - 26.10.17 - 13:15
ну, или перечисление
   Fragster
 
10 - 26.10.17 - 13:15
а не хранилизе
 
 Рекламное место пустует
   EuVod
 
11 - 26.10.17 - 13:19
не очень понятно что можно смотреть криво.. в модуле объекта обращаюсь к его метаданным.
у меня в ТЧ ПравилаПредоставления есть реквизит СпособПредоставления его тип Храниище значения.

пытаюсь с этим поработать программно

Метаданные().ТабличныеЧасти.ПравилаПредоставления.Реквизиты.СпособПредоставления.Тип

это описание типов. как выяснить что он содержит тип "ХранилищеЗначения" - либо методом СодержитТип либо получить массив Методом Типы() и перебрать там уже сами типы сравнив опять же с Тип("ХранилищеЗначения").
и вот не проканывает (
Хотя если взять объект справочника и посмотреть тип значения хранящийся в базе в ТЧ, то там нормально "ХранилищеЗначения".
   EuVod
 
12 - 26.10.17 - 13:22
прикольно для реквизита справочника все ок.
а для реквизита ТЧ этого справочника не работает. странно
   EuVod
 
13 - 26.10.17 - 13:24
тьфу. точно (8)
всем спасибо, все работает ))
запутался в реквизитах

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует