Имя: Пароль:
1C
 
Как определить тип реквизита?
0 Evlanov
 
01.11.10
18:51
В 1С:Предприятие7.7 есть свойства метаданных Тип и Вид.
Например,
Тип = "Справочник"
Вид = "Номенклатура"

В 1С:Предприятие8 есть аналогичное свойство Тип.
Например,
Метаданные.Справочники.ВидыОплатОрганизаций.Реквизиты.ДоговорКонтрагента.Тип = "Договоры контрагентов"

Как определить что есть "Договоры контрагентов" - справочник, документ или что-либо еще?
1 abitfrosty
 
01.11.10
18:53
ТипЗнч(ДоговорКонтрагента) возвращает тип СправочникСсылка.ДоговорыКонтрагентов
2 Живой Ископаемый
 
01.11.10
19:00
тут внезапно может быть полезной функция XMLТипЗнч(<Значение>)
вот такой вот ассиметричный ответ
3 Evlanov
 
01.11.10
19:08
Результат = ТипЗнч(Метаданные.Справочники.ВидыОплатОрганизаций.Реквизиты.ДоговорКонтрагента.Тип)

Результат = "Описание типов", но не "СправочникСсылка.ДоговорыКонтрагентов"
4 Defender aka LINN
 
01.11.10
19:08
(2) Извращенец.
Документы.ТипВсеСсылки().СожержитТип(НужныйТип).
Надо только помнить, что "Метаданные.Справочники.ВидыОплатОрганизаций.Реквизиты.ДоговорКонтрагента.Тип" - это ОписаниеТипов, а не собственно тип.
5 Defender aka LINN
 
01.11.10
19:09
*"СожержитТип" = "СодержитТип", конечно.
6 Живой Ископаемый
 
01.11.10
19:09
2(4) вот не нравится мне так... с самого первого дня не нравилось когда я узнал как это делается в в8
7 Defender aka LINN
 
01.11.10
19:11
(6) Еще раз: Метаданные.Справочники.ВидыОплатОрганизаций.Реквизиты.ДоговорКонтрагента.Тип - НЕ тип. И даже не ссылка.
8 Живой Ископаемый
 
01.11.10
19:13
я знаю, но мой шаблончик такого не может выдержать и постоянно идет по шву...
9 Evlanov
 
01.11.10
19:23
Результат = ТипЗнч(Метаданные.Справочники.ВидыОплатОрганизаций.Реквизиты.ДоговорКонтрагента)
Результат = "Объект метаданных"

Как определить какой тип у объекта "Метаданные.Справочники.ВидыОплатОрганизаций.Реквизиты.ДоговорКонтрагента"?
10 Defender aka LINN
 
01.11.10
19:32
(9) В (0) есть.
11 Evlanov
 
01.11.10
19:35
(10) В (0) есть вопрос.
12 Живой Ископаемый
 
01.11.10
22:07
главное не пробовать ничего из предложенного... тогда со временем само должно получится... ну... наверное... да?
14 Defender aka LINN
 
01.11.10
22:16
(11) Метаданные.Справочники.ВидыОплатОрганизаций.Реквизиты.ДоговорКонтрагента.Тип <--- это и есть тип реквизита.
15 Evlanov
 
02.11.10
09:30
(14) Правильно. Тип = "Договоры контрагентов".
А что такое "Договоры контрагентов" - справочник, документ, план счетов или еще что-нибудь?
16 Ненавижу 1С
 
гуру
02.11.10
09:33
(15) Документы.ТипВсеСсылки().СожержитТип(Метаданные.Справочники.ВидыОплатОрганизаций.Реквизиты.ДоговорКонтрагента.Тип.Типы[0])
17 Defender aka LINN
 
02.11.10
09:33
(15) Если Тип = "Договоры контрагентов", то Тип - строка.
18 Живой Ископаемый
 
02.11.10
10:31
рассматривай это как часть заговора 1С против тебя лично... Опять твари изобретают неудобный тебе велосипед.
19 Evlanov
 
02.11.10
15:23
Вот на форуме http://devtrainingforum.v8.1c.ru/ посоветовали. Работает.
НеПонятноЧтоЭто = Метаданные.Справочники.ВидыОплатОрганизаций.Реквизиты.ДоговорКонтрагента.Тип;
НеПонятноЧтоСУточнеммымТипом = НеПонятноЧтоЭто.Типы()[0]; // тип может быть составным,
                                                         // если он не составной то там будет один элемент возмем его;
ВсеПонятно = Метаданные.НайтиПоТипу(НеПонятноЧтоСУточнеммымТипом).ПолноеИмя(); // полное имя обекта как оно задано в конфигураторе;
ВсеПонятноНачалоИмени = Лев(ВсеПонятно,Найти(ВсеПонятно,".")-1); // тут получим что это "справочник", "документ" ....
                                                                // в виде текстовотой строки



Или такой:


ТипПолный = Метаданные.НайтиПоТипу(Метаданные.Справочники.ВидыОплатОрганизаций.Реквизиты.ДоговорКонтрагента.Тип.Типы()[0]).ПолноеИмя();
Тип1 = Лев(ТипПолный,Найти(ТипПолный,".")-1);