Имя: Пароль:
1C
1С v8
Как узнать тип ссылки?
, ,
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ТипЗнч(Объект);

Сообщить(Тип.ИмяТипа);
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс