|   |   | 
| 
 | Как, имея значение, получить его тип в виде строки "СправочникСсылка.ХХХХХ"? | ☑ | ||
|---|---|---|---|---|
| 0
    
        dave2000 01.04.15✎ 21:29 | 
        Есть переменная "СсылкаНаЧтоНибудь", ее тип может быть любым. Как получить её тип в виде строки "СправочникСсылка.ХХХХХ" или "ДокументСсылка.ХХХХХ"?
 Т.е. нужна такая строка, которую можно было бы использовать, например, в функции Тип(). | |||
| 1
    
        ДенисЧ 01.04.15✎ 21:31 | 
        Через метаданные, разумеется.
 В справке описано | |||
| 2
    
        Chameleon1980 01.04.15✎ 21:41 | 
        конечная какая задача?
 может вам вообще нужно если типзнч(Элемент)=Тип("ДокументСсылка.РКО") Тогда НЕ? | |||
| 3
    
        User_Agronom 01.04.15✎ 21:50 | 
        (0) В запросе можно использовать, например
 ГДЕ Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг | |||
| 4
    
        mikecool 01.04.15✎ 21:56 | 
        Строка(ТипЗнч(КакаяТоСсылка)) не?     | |||
| 5
    
        dave2000 01.04.15✎ 22:00 | 
        Есть ссылка на документ. Нужно через метаданные этого документа перебрать все реквизиты и табличных частей, и записывать все это в XML. Но для реквизитов, которые имеют составной тип нужно передавать еще и тип значения.
 Например, в составном реквизите "УказательНаОбъект" могут быть значения как простые типов (число, строка), так и ссылки на справочники и документы. Мне нужно получать тип этого значения в указанном в (0) представлении, чтобы потом анализировать. | |||
| 6
    
        dave2000 01.04.15✎ 22:03 | 
        (4) Пробовал, он возвращает синоним имени. Например, вместо "ТоварыНаСкладах" вернет "Товары на складах"     | |||
| 7
    
        D_E_S_131 01.04.15✎ 22:05 | 
        А почему бы всю эту информацию не посмотреть в конфигураторе?     | |||
| 8
    
        User_Agronom 01.04.15✎ 22:06 | 
        ТаблицаРеквизитов = МетаДанные.Справочники[ИмяОбъектаМетаданных];
 Для каждого Реквизит из ТаблицаРеквизитов.Реквизиты цикл Сообщить("Имя реквизита: "+ Реквизит.Имя); КонецЦикла; | |||
| 9
    
        User_Agronom 01.04.15✎ 22:07 | 
        (8) к (5)
 Так же и по документам можно, наверное:) | |||
| 10
    
        dave2000 01.04.15✎ 22:17 | 
        (9) Вот, что я делаю:
 ..... Для каждого Рекв Из Док.Метаданные().Реквизиты Цикл ЗаписьXML.ЗаписатьАтрибут(Рекв.Имя, ВСтроку(Док[Рекв.Имя])); Если Рекв.Тип.Типы().Количество() > 1 Тогда Запись.ЗаписатьАтрибут(Рекв.Имя+"Тип", Строка(Рекв.Тип)); КонецЕсли; КонецЦикла; ..... В указанном примере функция ВСтроку(знач) должна принимать произвольное значение и возвращать строку в зависимости от типа: Дату в виде: "20150101000000" Для справочников: Код Для документов: Номер Для перечислений: Индекс и т.д. Простые типы я еще смогу проверить, как в (4), а более сложные как? Как узнать, это справочник, документ или перечисление? | |||
| 11
    
        User_Agronom 01.04.15✎ 22:20 | 
        (10) Так же как в (4)
 Потестируй. | |||
| 12
    
        dave2000 01.04.15✎ 22:21 | 
        (10) перебирать в цикле все объекты метаданных конфигурации и делать сравнение типа
 ТипЗнч(Элемент)=Тип("ДокументСсылка.РКО") как-то выглядит не очень :( | |||
| 13
    
        mikeA 01.04.15✎ 22:26 | 
        (0) СсылкаНаЧтоНибудь.Метаданные().ПолноеИмя()
 правда слова "Ссылка" там не будет, но при желании дописать можно | |||
| 14
    
        dave2000 01.04.15✎ 22:28 | 
        (13) ВОТ!!! Как раз то, что нужно!!! 
 Спасибо всем! :) | |||
| 15
    
        Drac0 01.04.15✎ 22:41 | 
        Извращенцы. 
 (10) Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(ТвояСсылка)); Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(ТвояСсылка)); | |||
| 16
    
        Drac0 01.04.15✎ 22:43 | 
        (1) А ты бы хоть намекнул, они же дословно поняли про метаданные...     | |||
| 17
    
        D_E_S_131 01.04.15✎ 22:45 | 
        (16) Когда не знаешь конечной цели всех этих извращений, то можно давать любые советы.     | |||
| 18
    
        hhhh 01.04.15✎ 22:52 | 
        (14) xml ведь
 Запись.ЗаписатьАтрибут(Рекв.Имя+"Тип", xmlСтрока(Рекв.Тип)); | |||
| 19
    
        dave2000 01.04.15✎ 23:05 | 
        (15) Тоже вариант, пригодится
 (18) Прекрасно подходит для простых типов, а вот для ссылочных уникальный идентификатор не подходит, т.к. он мало о чем говорит при чтении в другой базе. | |||
| 20
    
        hhhh 01.04.15✎ 23:10 | 
        (19) тип - это простой тип, не ссылочный.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |