Сравнение типов данных

  • Автор темы Дайнеко
  • Дата начала
Д

Дайнеко

Пишу проверку на принадлежность объекта к Перечислениям. Ошибку не выдает, но не срабатывает.
Код:
Парам = Перечисления.ВидыЧегото.Вариант1;
Сообщить(ТипЗнч(Парам)); // пишет "Вариант1"
Описание = Новый ОписаниеТипов("ПеречисленияМенеджер");
Если Описание.СодержитТип(ТипЗнч(Парам)) Тогда
Сообщить("+");
Иначе
Сообщить("-");
КонецЕсли;

Уж и за окном темно..
 
U

unknown181538

Парам не ПеречислениеМенеджер, а ПеречислениеСсылка.ВидыЧегоТо
 
Д

Дайнеко

Парам не ПеречислениеМенеджер, а ПеречислениеСсылка.ВидыЧегоТо

Спасибо, это я так смогу. Но у меня задача написать функцию проверяющую принадлежность объекта вообще к классу Перечисления.
Вернуть строчечкой его имя. Строка(Объект) почти то, но не то.
А какого он вида - не требуется, да и вид не известен.

Код:
Объект = Перечисления.ВидыЧегото.Вариант1;
Сообщить(ДостатьИдентификаторПеречисления(Объект));

Функция ДостатьИдентификаторПеречисления(Парам)
// В 7.7 делал так
Если	ТипЗначения(Парам) = 10	Тогда	//	Перечисление
Возврат П_Парам.Идентификатор();
КонецФункции
 
U

unknown181538

А вот скажем если:
1) Получить строковое представление типа. И если слева от точки "ПеречислениеСсылка", то далее - имя перечисления.
2) Каким-то образом перебрать метаданные перечислений, поместить типы в массив, и искать вхождение в массиве....
Но, возможно, есть и более простое решение...
 
Д

Дайнеко

Спасибо.
По первому варианту я и пытался. Вот результат такой:
Парам.Метаданные().Представление() выдает "ВидыЧегото". (Правильнее "Парам.Метаданные().Имя" , без синонима).
Нету слова "Перечисления".

Второй вариант наверное сработает. Но уж больно мудро это. По...


Стоп!
Пока писал и проверял, нашел:
Парам.Метаданные().ПолноеИмя() выдает "Перечисление.ВидыЧегото"

Пойми правильно, ломаю голову, не столько ради просто решения, сколько чтобы разобраться. Да и решение должно быть красивым.


P.S.
Еще через 10 мин:
Вот оно правильное решение: Перечисления.ТипВсеСсылки ().СодержитТип(ТипЗнч(Парам))
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!