Имя: Пароль:
1C
1С v8
Как из типа получить полное имя объекта метаданных?
0 xaozai
 
04.04.14
10:26
Есть Тип (например, ДокументСсылка.ЗаказПокупателя), нужно получить из него полное имя объекта метаданных (Документ.ЗаказПокупателя), чтобы подставить в динамически формируемый текст запроса.

Как это проще и красивее сделать?
1 PR
 
04.04.14
10:28
Просто не получится.
Метаданные.Документы.ТипВсеСсылки().Содержит
Как-то так.
2 Полотенчик
 
04.04.14
10:30
// Функция возвращает значение реквизита произвольного объекта ссылочного типа
// Предназначена для получения реквизитов недоступных пользователю объектов
Функция ПолучитьРеквизитОбъекта(Ссылка, ИмяРеквизита) Экспорт
    
    ОбъектМетаданные = Ссылка.Метаданные();
    ИмяТаблицы = ОбъектМетаданные.ПолноеИмя();
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ " + ИмяРеквизита + " КАК " + ИмяРеквизита + " ИЗ " + ИмяТаблицы + "
    |ГДЕ Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
        Возврат Выборка[ИмяРеквизита];
    Иначе
        РеквизитМетаданные = ОбъектМетаданные.Реквизиты.Найти(ИмяРеквизита);
        Возврат РеквизитМетаданные.Тип.ПривестиЗначение();
    КонецЕсли;
        
КонецФункции //ПолучитьРеквизитОбъекта()
3 xaozai
 
04.04.14
10:39
Сделал так:
Для Каждого ТипОбъекта Из Метаданные.РегистрыСведений["ОбъектыОбмена"].Измерения["Объект"].Тип.Типы() Цикл
    ПустаяСсылка = Новый (ТипОбъекта);
    Сообщить(ПустаяСсылка.Метаданные().ПолноеИмя());
КонецЦикла;
4 k1us181b
 
04.04.14
10:45
делал поиск объекта по ид
ТипОбъекта - поле на форме с типом ОписаниеТипов
ИД - поле на форме тип Строка

спр = Справочники[СтрЗаменить(Строка(ТипОбъекта.Типы().Получить(0))," ", "")].ПолучитьСсылку(Новый УникальныйИдентификатор(ЭтаФорма.ИД));
спр.ПолучитьФорму().Открыть();
5 Aprobator
 
04.04.14
10:59
(0) В запросе делаем метку типа %ТипДокумента%. По типу документа формируем имя для запроса:

МетаданныеДокумента = Метаданные.НайтиПоТипу(ТипДокумента);
ИмяВзапрос = "Документ." + МетаданныеДокумента.Имя;

Дальше делаем подмену в тексте запроса.
Основная теорема систематики: Новые системы плодят новые проблемы.