![]() |
|
|
| ||
TormozIT 25.03.21 - 12:15 | Есть в метаданных перечисление Метаданные.СвойстваОбъектов.РежимСовместимости. У него есть тип "ПеречислимыеСвойстваОбъектовМетаданных.РежимСовместимости".
Как создать значение типа Тип с таким именем? Проще говоря, что нужно передать в функцию Тип(?), чтобы получить то же значение, что возвращает ТипЗнч(Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать)? | ||
PR 1 - 25.03.21 - 12:20 | (0) Тип("СвойстваОбъектов.РежимСовместимости"), не? | ||
TormozIT 2 - 25.03.21 - 12:22 | (1) Мимо | ||
azernot 3 - 25.03.21 - 12:30 | Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать | ||
TormozIT 4 - 25.03.21 - 12:32 | (3) Ловко ты меня процитировал. Молодец. | ||
azernot 5 - 25.03.21 - 12:36 | (4) Пардон. Писатель, не читатель :) | ||
polosov 6 - 25.03.21 - 12:37 | (0) Ты не эту задачу случайно пытаешься решить?
Режимы = Метаданные.СвойстваОбъектов.РежимСовместимости; ТекущийРежим = Метаданные.РежимСовместимости; ПоддерживаемаяВерсияПлатформы = "8.3.12"; ВерсияПлатформы = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(СистемнаяИнформация.ВерсияПриложения); Если ТекущийРежим = Режимы.НеИспользовать Тогда Если ОбщегоНазначенияКлиентСервер.СравнитьВерсииБезНомераСборки(ВерсияПлатформы, ПоддерживаемаяВерсияПлатформы) = 0 Тогда НеПоддерживаемаяВерсияПлатформы = ""; Иначе НеПоддерживаемаяВерсияПлатформы = ВерсияПлатформы; КонецЕсли; ИначеЕсли ТекущийРежим = Режимы.Версия8_1 Тогда НеПоддерживаемаяВерсияПлатформы = "8.1" ИначеЕсли ТекущийРежим = Режимы.Версия8_2_13 Тогда НеПоддерживаемаяВерсияПлатформы = "8.2.13" ИначеЕсли ТекущийРежим = Режимы.Версия8_2_16 Тогда НеПоддерживаемаяВерсияПлатформы = "8.2.16"; ИначеЕсли ТекущийРежим = Режимы.Версия8_3_1 Тогда НеПоддерживаемаяВерсияПлатформы = "8.3.1"; ИначеЕсли ТекущийРежим = Режимы.Версия8_3_2 Тогда | ||
TormozIT 7 - 25.03.21 - 12:39 | У меня задача как всегда очень универсальная - получить по имени типа значение типа. А в этой теме я дал частную формулировку для облегчения восприятия. | ||
polosov 8 - 25.03.21 - 12:50 | (7) Тип("ПеречислимоеСвойствоОбъектовМетаданных") = ТипЗнч( Метаданные.СвойстваОбъектов.РежимСовместимости) | ||
Fragster 9 - 25.03.21 - 12:51 | (7) там конструктора нет, так что не получится. И сериализатор не жрёт :( | ||
polosov 10 - 25.03.21 - 12:53 | (7) А с режимом совместимости так не прокатит. | ||
TormozIT 11 - 25.03.21 - 12:57 | |||
polosov 12 - 25.03.21 - 13:00 | (11) А ты для обычного перечисления можешь тип получить по строковому представлению типа? | ||
polosov 13 - 25.03.21 - 13:00 | (12) *Для значения обычного перечисления. | ||
TormozIT 14 - 25.03.21 - 13:04 | (12) Если ты про обычное системное перечисление (например ТипУзлаXML), то по имени перечисления можно получить оба типа - тип перечисления и тип значения перечисления. | ||
polosov 15 - 25.03.21 - 13:09 | (14) Ты про это?
ТипЗнч(ТипУзлаXML.Ничего) = Тип("ТипУзлаXML") И ТипЗнч(ТипУзлаXML.Атрибут) = Тип("ТипУзлаXML") | ||
polosov 16 - 25.03.21 - 13:10 | +(15) = Истина | ||
polosov 17 - 25.03.21 - 13:19 | Как-то так:
А = Новый Массив; А.Добавить(ТипЗнч(Метаданные.СвойстваОбъектов.РежимСовместимости.Версия8_1)); А.Добавить(ТипЗнч(Метаданные.СвойстваОбъектов.РежимСовместимости.Версия8_2_13)); А.Добавить(ТипЗнч(Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать));  //И т.д. Б = Новый ОписаниеТипов(А); Результат = Б.СодержитТип(ТипЗнч(Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать)); | ||
RomanYS 18 - 25.03.21 - 13:21 | (17) Зачем добавлять 3 одинаковых типа? | ||
polosov 19 - 25.03.21 - 13:23 | (18) Нда, точно. Повелся на размышления ТС, что якобы у значений перечислений могут быть разные типы. | ||
CHerypga 20 - 25.03.21 - 13:24 | (7) если по имени получить значение, то имя типа можно разбить на нужные куски и задача будет совсем не похожа на изначально поставленную
Тип = ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(ТипЗнч(Метаданные["СвойстваОбъектов"]["РежимСовместимости"]["НеИспользовать"]))); | ||
RomanYS 21 - 25.03.21 - 13:30 | |||
TormozIT 22 - 25.03.21 - 13:32 | (19) Такого я не утверждал. У значений одного перечисления типы одинаковые. Но тип перечисления отличается от типа своих значений, т.е. ТипЗнч(ТипУзлаXML) <> ТипЗнч(ТипУзлаXML.Ничего) | ||
CHerypga 23 - 25.03.21 - 13:41 | (21) пафоса чуточку больше в (0) там где "проще говоря" для функции Тип("") не такой строки, с которой она бы вернула то же самое что и ТипЗнч(Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать) а если постановка как в (7) разбираем строку на нужные куски и делаем ТипЗнч(Метаданные["СвойстваОбъектов"]["РежимСовместимости"]["НеИспользовать"]) | ||
RomanYS 24 - 25.03.21 - 14:02 | (23) Если такой строки не существует, надо просто сказать ТСу, но он возможно будет спорить и требовать доказательств :)). | ||
CHerypga 25 - 25.03.21 - 14:10 | (24) отрицание недоказуемо, доказать можно только утверждение | ||
TormozIT 26 - 25.03.21 - 14:12 | У меня есть имя типа перечисления, но нет имени значения перечисления. | ||
polosov 27 - 25.03.21 - 14:26 | |||
CHerypga 28 - 25.03.21 - 14:27 | (26) тогда из имени типа собираем Метаданные["СвойстваОбъектов"]["РежимСовместимости"] затем делаем то, что делается по нажатию Ctrl+Space в консоли кода и берём оттуда |
|
Список тем форума |