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

Тема в разделе "1C и всё что с ней связано", создана пользователем Дайнеко, 28 окт 2010.

  1. Дайнеко

    Дайнеко Well-Known Member
    1C Team

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Да и "Зенит" проиграл... :*цензура*you:
     
  3. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Парам не ПеречислениеМенеджер, а ПеречислениеСсылка.ВидыЧегоТо
     
  4. Дайнеко

    Дайнеко Well-Known Member
    1C Team

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

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

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

    unknown181538 НеГуру
    1C Team

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

    Дайнеко Well-Known Member
    1C Team

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

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


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

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


    P.S.
    Еще через 10 мин:
    Вот оно правильное решение: Перечисления.ТипВсеСсылки ().СодержитТип(ТипЗнч(Парам))
     
Загрузка...
Похожие Темы - Сравнение типов данных
  1. Erlan
    Ответов:
    8
    Просмотров:
    1.638
  2. k85
    Ответов:
    2
    Просмотров:
    1.149
  3. clas
    Ответов:
    3
    Просмотров:
    1.602
  4. juk-777
    Ответов:
    29
    Просмотров:
    4.705
  5. aank10
    Ответов:
    3
    Просмотров:
    1.968

Поделиться этой страницей