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

пошел например так:

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

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

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

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

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

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

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

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

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

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

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

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