Имя: Пароль:
1C
1С v8
Туплю. Как по значению определить что это документ или справочник или допустим отчет.
,
0 arsik
 
гуру
01.03.19
16:24
Значением может быть или ссылка или объект.
1 Aleksey
 
01.03.19
16:25
что такое значение?
2 RomanYS
 
01.03.19
16:26
ТипЗнч(Значение) = Тип("СправочникОбъект.Банки")
3 Мыш
 
01.03.19
16:30
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Значение))

и т.д.
4 Buster007
 
01.03.19
16:30
Найти(XMLТип(Тип).ИмяТипа, "Справочник") > 0
5 mistеr
 
01.03.19
16:30
Справочники.ТипВсеСсылки.СодержитТип(ТипЗнч(Значение))
6 Aleksey
 
01.03.19
16:31
7 arsik
 
гуру
01.03.19
16:32
(1) Какое то значение, там может быть ссылка на объект или сам объект
(2) Не, мне нужно допустим по ссылка на документ "Счет" узнать, что это ссылка на документ. Или по объекту типа ДокументОбъект.Счет, узнать что это документ.
(3) (5) С объектом не сработает.
(4) Ну по текстовому представлению я знаю как, но мне не нравится.
8 mistеr
 
01.03.19
16:34
(7) Если алгоритм зависит от того, ссылка это или объект, то эту часть лучше вынести в вызывающий метод.
9 Aleksey
 
01.03.19
16:35
(7) Передавай ссылку т.е. Объект.Ссылка или ссылка.Ссылка
10 RomanYS
 
01.03.19
16:37
Метаданные.Документы.Содержит(ЗначениеИлиОбъект.Метаданные())
11 arsik
 
гуру
01.03.19
16:39
Все разобрался. Спасибо камрады.
Что то давно метаданные не ковырял. Вот примерно так.
Если Метаданные.Документы.Содержит(Объект.Метаданные()) Тогда
    Сообщить("Документ");
ИначеЕсли Метаданные.Справочники.Содержит(Объект.Метаданные()) Тогда
    Сообщить("Справочник");
иначе
    Сообщить("Что то еще");
КонецЕсли;
12 Buster007
 
01.03.19
16:40
ОбщегоНазначения.МенеджерОбъектаПоСсылке
13 RomanYS
 
01.03.19
16:44
(11) попытку не забудь, ".Метаданные()" может не быть
14 arsik
 
гуру
01.03.19
16:50
(13) тогда так.
метаОбъекта = Метаданные.НайтиПоТипу(ТипЗнч(Объект));
Если метаОбъекта<>Неопределено Тогда
    Если Метаданные.Документы.Содержит(метаОбъекта) Тогда
        Сообщить("Документ");
    ИначеЕсли Метаданные.Справочники.Содержит(метаОбъекта) Тогда
        Сообщить("Справочник");
    иначе
        Сообщить("Что то еще");
    КонецЕсли;
КонецЕсли;
15 RomanYS
 
01.03.19
16:52
(14) Молодца! Без попытки обошелся)