Имя: Пароль:
1C
1С v8
Аналог функции ТипЗначенияСтр() и методов Вид() и ПолучитьАтрибут()
,
0 casufi
 
19.04.12
17:33
Нашел в 8 функцию ТипЗнч , которая выдает что то вроде "Документ ссылка: АвансовыйОтчет" Мне нужно получить сначала тип "Документ", "Справочник" и т.д. и в звисимости от того составной тип или элементарный разветвить алгоритм, в 7 я мог это получить функцией ТипЗначенияСтр() и, если тип справочник или документ , я мог получить его Вид, как это сделать в 8
Кроме того не могу найти как получить значение реквизита документа не через точку, а передав имя реквизита переменной ?
1 Aleksey
 
19.04.12
17:34
В обменах типовых смотрел?
2 КМ155
 
19.04.12
17:34
(0) []
3 Дикообразко
 
19.04.12
17:34
ТипЗнч(Значение) = Тип("СправочникСсылка.Номенклатура")

это в FAQ есть для переходящих с 77
4 Aleksey
 
19.04.12
17:36
Функция ПолучитьИмяБазовогоТипаПоТипуОбъекта(ТипОбъекта) Экспорт
   
   МетаданныеТипа = Метаданные.НайтиПоТипу(ТипОбъекта);
   
   Если МетаданныеТипа = Неопределено Тогда
       
       Возврат "УдалениеОбъекта";
       
   ИначеЕсли Метаданные.РегистрыСведений.Содержит(МетаданныеТипа) Тогда
       
       Возврат "РегистрыСведений";
       
   ИначеЕсли Метаданные.Документы.Содержит(МетаданныеТипа) Тогда
       
       Возврат "Документы";
       
   ИначеЕсли Метаданные.Справочники.Содержит(МетаданныеТипа) Тогда
       
       Возврат "Справочники";    
       
   ИначеЕсли Метаданные.РегистрыНакопления.Содержит(МетаданныеТипа) Тогда
   
       Возврат "РегистрыНакопления";    
       
   ИначеЕсли Метаданные.РегистрыБухгалтерии.Содержит(МетаданныеТипа) Тогда
   
       Возврат "РегистрыБухгалтерии";    
     
   Иначе
     
       Возврат "";
       
   КонецЕсли;
           
КонецФункции
5 Aleksey
 
19.04.12
17:36
ТипОбъекта = ТипЗнч(Объект)
6 Дикообразко
 
19.04.12
17:36
Метаданные.Документы.Содержит(Значение.Метаданные())
7 casufi
 
19.04.12
17:40
(4,5) Спасибо, я видел это решение, просто не думал, что то, что делалось в 7 одной функцией, нужно делать сотней строк кода
(1) У меня нет ИТС
8 casufi
 
19.04.12
18:08
с Типом разобрались, чего теперь с видом делать ?
9 Агент Инфостарта
 
19.04.12
18:35
(8) ВидОбъектаСтрокой = Значение.Метаданные().Имя;
Аналог клюшечных Значение.Вид()
10 fisher
 
19.04.12
19:07
Только Метаданные() - штука дюже медленная. На разовых вызовах пофиг.
А в больших циклах лучше, например, парсить XMLТипЗнч().ИмяТипа
Оттуда и тип и вид легко достается, а главное - быстро.
11 Fragster
 
гуру
19.04.12
19:12
Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Значение))
12 Fragster
 
гуру
19.04.12
19:13
(10) зачем его парсить, если можно просто сравнить с ТипЗнч() = Тип("ДокументСсылка.РТиУ")?
13 fisher
 
19.04.12
19:17
(11) О! Точно. Эта фигня быстро работает. Так что если только доки и справочники нужны, то то что нужно.
(12) Для задач, когда нужно произвольные значения по базовым типам сначала раскладывать. Когда ими могут и регистры всякие выступать и прочая фигня.
14 Fragster
 
гуру
19.04.12
19:26
(13) ну вот поменяет Нуралиев catalogref на catalogreference в сериализаторе и все. А ведь можно сделать ТипЗнч(Значение) = ТипЗнч(Документы["РТиУ"].ПустаяСсылка)
15 fisher
 
19.04.12
19:58
(14) Я уже сказал для каких случаев это не канает.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший