Имя: Пароль:
1C
 
Ссылочный тип данных
0 Nadezhdaaaa
 
09.07.10
17:11
Здравствуйте, подскажите, пожалуйста, есть какая-то функция для того, чтобы определить что значение имеет ссылочный тип, неважно ссылка на справочник или документ... важно знать что тип данных какой-то переменной является ссылкой, а не строкой.
1 kokamoonga
 
09.07.10
17:11
ТипЗнч(ТвоиДанные)
2 IceSer1
 
09.07.10
17:13
если ТипЗнч(ТвоиДанные)=тип("Строка") тогда
неамЭтоНеНадо=истина;
конецесли; )
3 Ненавижу 1С
 
гуру
09.07.10
17:14
а если Объект?
4 Ненавижу 1С
 
гуру
09.07.10
17:16
//плохой, но работающий код
Функция ЭтоСсылка(Элемент)
 Попытка
   Возврат Элемент.Ссылка=Элемент;
 Исключение
   Возврат Ложь;
 КонецПопытки;
КонецФункции
5 Nadezhdaaaa
 
09.07.10
17:17
мне нужно знать только является ли это значение ссылкой
если ТипЗнч(МоиДанные).... Ссылка Тогда
   Хорошо = Истина
КонецЕсли
6 Волшебник
 
09.07.10
17:18
7 Serg_1960
 
09.07.10
17:18
типовой код
ЭтоСправочник = Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка));
8 Nadezhdaaaa
 
09.07.10
17:22
Вот так, наверно, можно проверить
ТипЗнч(МоиДанные) = Тип(УникальныйИдентификатор)
9 Nadezhdaaaa
 
09.07.10
17:22
ТипЗнч(МоиДанные) = Тип("УникальныйИдентификатор")
10 kokamoonga
 
09.07.10
17:23
(8)(9) а чем (6)(7) не нравится?
11 Nadezhdaaaa
 
09.07.10
17:27
потому что придется перебирать ЭтоСправочник или ЭтоДокумент...
12 kokamoonga
 
09.07.10
17:28
(11) перебирать булево значение?
13 vde69
 
09.07.10
17:29
для начала ответьте:

перечисление - это ссылка?

у него есть метод ПустаяСсылка()  но нету свойства Ссылка
14 kokamoonga
 
09.07.10
17:31
(13) продолжаешь собеседовать?
15 НетуаНадо
 
09.07.10
17:31
Метаданные.Документы.Содержит(Ссылка.Метаданные())
16 Nadezhdaaaa
 
09.07.10
17:33
Нет, так нельзя ((((
17 vde69
 
09.07.10
17:33
(14) я это к тому, что ссылочные данные - это понятие размытое,

ИХМО
самое правильное это метод основаный на наличие или отсутствие ГУИД-а
18 hhhh
 
09.07.10
17:38
(16) в типовой БП есть специальная функция. Глянь там.
19 kokamoonga
 
09.07.10
17:39
(17) самое правильное это метод основанный на логике имхо. мне трудно представить себе адекватный код в котором одной переменной присваиваются значения типов СправочникСсылка,ДокументСсылка и ПеречислениеСсылка
20 hhhh
 
09.07.10
17:41
(19) ну объект, регистрируемый для обмена, например.
21 kokamoonga
 
09.07.10
17:43
(20) судя по вопросу в (0) вряд ли речь может идти об обменах)
22 hhhh
 
09.07.10
17:49
(18)+ вот например

Функция ОпределитьПоЭлементуЭтоСсылка(Элемент, ИмяБазовогоТипа, ТипЭлемента, ИмяДляЗапроса)
   
   МетаданныеЭлемента = Элемент.Метаданные();
   
   Если ИмяБазовогоТипа = "Справочники" Тогда
       
       ТипСсылки = Тип("СправочникСсылка." + МетаданныеЭлемента.Имя);
       ИмяДляЗапроса = "Справочник." + МетаданныеЭлемента.Имя;
       
   ИначеЕсли ИмяБазовогоТипа = "Документы" Тогда
       
       ТипСсылки = Тип("ДокументСсылка." + МетаданныеЭлемента.Имя);
       ИмяДляЗапроса = "Документ." + МетаданныеЭлемента.Имя;
       
   Иначе
       
       ТипСсылки = Неопределено;
       
   КонецЕсли;
   
   Возврат ТипЭлемента = ТипСсылки;    
   
КонецФункции