|
Как узнать тип ссылки? |
☑ |
0
Omskdizel
29.03.17
✎
13:30
|
Доброго дня!
Озадачился заданной задачей малость...
Имеется: 1с 8.х, обычное приложение, форма обработки, на форме поле выбора реквизита формы, этот реквизит имеет составной тип "СправочникСсылка" + "ДокументСсылка". Теперь вопрос: Как мне получить тип выбранного в формате к примеру "Документ.ПеремещениеТоваров"? Вторая часть находится легко - это РеквизитФормы.Метаданные().Имя, а вот как понять, документ это или справочник? Или вообще ПВХ? Способ желательно прямой, а не по наличию уникальных свойств метаданных. Ибо ничто не вечно :)
|
|
1
Волшебник
модератор
29.03.17
✎
13:30
|
ТипЗнч(значение)
|
|
2
Omskdizel
29.03.17
✎
13:32
|
(1) Оно не возвращает строку. Если преобразовать, то вернет к примеру "Перемещение товаров"
|
|
3
Волшебник
модератор
29.03.17
✎
13:33
|
(2) Его можно сравнивать с Тип, например
Если ТипЗнч(зн) = Тип("СправочникСсылка.Номенклатура") Тогда
|
|
4
Любопытная
29.03.17
✎
13:34
|
ПолноеИмя (FullName)
Синтаксис:
ПолноеИмя()
Возвращаемое значение:
Тип: Строка.
Описание:
Получает полное имя объекта метаданного. Имя отвечает требованиям, предъявляемым к именам (должно начинаться с буквы, содержать только буквы, цифры или символ "_", может содержать одну точку (не начальный и не конечный символ)).
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Пример:
// В конфигурации определены справочники "Банки", "Валюты" и "Товары"
// Результатом работы примера:
Для каждого Объект Из Метаданные.Справочники Цикл
Сообщить(Объект.ПолноеИмя());
КонецЦикла;
// будут сообщения:
// Справочник.Банки
// Справочник.Валюты
// Справочник.Товары
|
|
5
Волшебник
модератор
29.03.17
✎
13:34
|
(2) Для точного решения твоей задачи сначала нужно определить тип ссылки - справочник или документ, например,
Если Метаданные.Справочники.ТипВсеСсылки.Содержит(ТипЗнч(зн)) Тогда
//справочник
Далее получаем имя через зн.Метаданные().Имя и конкатенируем
|
|
6
youalex
29.03.17
✎
13:35
|
Справочники.ТипВсеСсылки().СодержитТип()
Метаданные.Справочники.Содержит()
Метаданные.НайтиПоТипу()
|
|
7
Omskdizel
29.03.17
✎
13:35
|
(3) Дак там же может быть видов документов целая куча, неужто только циклом искать? Как-то мне такой способ видится сильно громоздким.
|
|
8
Волшебник
модератор
29.03.17
✎
13:35
|
(4) или так
|
|
9
Omskdizel
29.03.17
✎
13:37
|
(4) Спасибо огромное, прям то, что мне надо! Если не для моего случая, то просто можно строку расковырять до точки. Спасип!
|
|
10
Serginio1
29.03.17
✎
14:20
|
Тип=СериализаторXDTO.XMLТипЗнч(Объект);
Сообщить(Тип.ИмяТипа);
|
|