Имя: Пароль:
1C
1С v8
Как проверить ссылочность.
0 mkalimulin
 
28.02.17
18:52
Чет туплю под вечер. Как проверить, что значение - это ссылка на справочник или документ?
1 youalex
 
28.02.17
18:55
(0) по типу:  Справочники.ТипВсеСсылки().Содержит() и НЕ <> Неопределено

или через метаданные: Метаданные.Справочники.Содержит(Ссылка.Метаданные())

или Метаданные.Справочники.Содержит(Метаданные.НайтиПоТипу(ТипЗнч(
2 RomanYS
 
28.02.17
19:07
(1)+1 правильно проверять тип, с метаданными можно получить ошибку.
В порядке бреда (я так не делаю))

Функция ЭтоСсылка(ТвояСсылка)
    
    Попытка
        Возврат ТвояСсылка.Ссылка = ТвояСсылка;
    Исключение
    КонецПопытки;
    
    Возврат Ложь;
    
КонецФункции
3 mkalimulin
 
28.02.17
19:08
(1) Спасибо.
4 vi0
 
28.02.17
19:09
(2) неоптимальный вариант
будет обращение к БД
5 H A D G E H O G s
 
28.02.17
19:09
(2) Хороший бред
6 RomanYS
 
28.02.17
19:49
(4) это вообще не вариант.
Просто очень хотелось показать "рекурсивность" ссылки.
7 vi0
 
28.02.17
19:50
(6) для чего?
лучше бы просто анекдот рассказал
8 mkalimulin
 
28.02.17
20:19
(2) Да, метаданные дают ошибку. ТипВсеСсылки() работает. Спасибо.
9 mistеr
 
28.02.17
21:39
(0) ПолноеИмя = ОбъектИлиСсылка.Метаданные().ПолноеИмя();
ВидОбъекта = Лев(ПолноеИмя, Найти(ПолноеИмя, ".")-1);

(2) какая может быть ошибка?
10 RomanYS
 
28.02.17
21:44
(9) ОбъектИлиСсылка.Метаданные()
А если в ОбъектИлиСсылка неопредлено, число, строка, структура, ТЗ и ....?
11 mistеr
 
28.02.17
21:46
(10) Ну если на входе что угодно может быть, тогда да, принимается.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.