Имя: Пароль:
1C
 
Как определить ссылочный это тип данных или нет?
0 Алгоритм
 
23.07.07
16:43
???
1 asady
 
23.07.07
16:44
(0)
1.Метод Рупора
2. Если Найти(Строка(ТипЗнч(Ссылка)),"сылка")>0 Тогда
3....
2 xenus
 
23.07.07
16:44
если знаешь, какого типа эта ссылка, то может так:

Если ТипЗнч(ТекОбъект) = Тип("СправочникСсылка.Номенклатура") Тогда
   ...
КонецЕсли;
3 xenus
 
23.07.07
16:45
ну да, (1) более универсальнее..
4 Алгоритм
 
23.07.07
16:46
1. а шо за метод Рупора?
5 asady
 
23.07.07
16:47
(1)+

3. Если Найти(Ссылка.Метаданные().ПолноеИмя(),"Ссылка")>0 Тогда
6 asady
 
23.07.07
16:48
Попытка
 ссылкассылки=Ссылка.Ссылка;
исключение
 ЭтоСсылка=Истина;
КонецПопытки;
7 Гений 1С
 
гуру
23.07.07
16:50
(0) Можно перебрать все ссылки. ;-) Всего-то 6 менеджеров.
Чтото вроде Если Документ.ТипВсеСсылки.содержит(типЗнч(Тип(Х))
8 Гений 1С
 
гуру
23.07.07
16:50
(6) Не катит, эта конструкция работает и для ДокументОБъект
9 Гений 1С
 
гуру
23.07.07
16:51
(1) искать не сылка, а "Ссылка."
10 Гений 1С
 
гуру
23.07.07
16:51
(9) так точнее
11 Алгоритм
 
23.07.07
16:51
6. пасиба
12 Алгоритм
 
23.07.07
16:53
10. пасиба
13 asady
 
23.07.07
16:53
(9) а хрень редьки ....

это я на регистр заложился (первая буква "С" или "с") - мало-ли что :))))

тиха украинская ночь - но сало лучше перепрятать! (с) укр.нар.мудрость.
14 PR
 
23.07.07
17:05
Прикольно :))
А если я создам справочник "Ссылка" например?
А если регистр сведений?
А регистр накопления? :)))
15 asady
 
23.07.07
17:08
(14) ты это брось - так никто не делает :))) Я бы за такие названия по рукам!


а если серьезно, то в строке по полному имени надо искать "ссылку" до точки и будет более корректно.
16 PR
 
23.07.07
17:09
(15) А еще корректнее делать не так, а так, как делается в типовых в функции "ЗначениеНеЗаполнено()" :))
17 asady
 
23.07.07
17:12
(16) это как?

вот она будь она неладна:

Функция ЗначениеНеЗаполнено(Значение) Экспорт

   Результат   = Ложь;
   ТипЗначения = ТипЗнч(Значение);

   // Сначала примитивные типы
   Если Значение = Неопределено Тогда
       Результат = Истина;

   ИначеЕсли Значение = NULL Тогда
       Результат = Истина;

   ИначеЕсли ТипЗначения = Тип("Строка") Тогда
       Если СокрЛП(Значение) = "" Тогда
           Результат = Истина;
       КонецЕсли;

   ИначеЕсли ТипЗначения = Тип("Число") Тогда
       Если Значение = 0 Тогда
           Результат = Истина;
       КонецЕсли;

   ИначеЕсли ТипЗначения = Тип("Дата") Тогда
       Если Значение = Дата('00010101') Тогда
           Результат = Истина;
       КонецЕсли;

   ИначеЕсли ТипЗначения = Тип("Булево") Тогда
       Результат = Ложь; // Булево будем считать не пустым

       //Отдельное определение, так как конструкторов данного типа не существует    
   ИначеЕсли ТипЗначения = Тип("РежимПроведенияДокумента") Тогда

       Если Значение = РежимПроведенияДокумента.Неоперативный или Значение = РежимПроведенияДокумента.Оперативный тогда
           Результат = Ложь;
       КонецЕсли;

       // Для остальных будем считать значение пустым, если оно равно
       // дефолтному значению своего типа

   Иначе

       Если Значение = Новый(ТипЗначения) Тогда
           Результат = Истина;
       КонецЕсли;

   КонецЕсли;

   Возврат Результат;

КонецФункции // ЗначениеНеЗаполнено()


что здесь можно взять за образец?
18 ymv
 
23.07.07
17:17
Например, применительно к справочнику можно так:

Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч("Ссылка"))
19 asady
 
23.07.07
17:26
(18) еще вариант:

имяТипа=XMLТипЗнч(Ссылка).ИмяТипа;
Если Прав(Лев(имяТипа,Найти(имяТипа,".")-1,3)="Ref" тогда
Сообщить("Это точно ссылка: зуб даю!!!");
Конецесли;