Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 мая 2026, 00:44

Получить правильное название типа элемента перечисления.

Автор dim-mich-t, Вчера в 20:00

0 Пользователей и 1 гость просматривают эту тему.

dim-mich-t

Казалось бы, простой вопрос, но... Какой из трех вариантов кода 1С правильный с точки зрения 1С:Платформы 8 при обращении к элементам перечисления и как получить правильное название типа данных итератора в первом цикле "ВремяГода"?

для эксперимента имена значениям перечисления ВременаГода дал: Зима, Лето, Осень, Весна, а в синонима каждому прибавил (синоним), например: Зима (синоним). После этого выполнил вышеприведенный код, вот его результат:

&НаСервереБезКонтекста
Процедура ВыводПеречисленияВременаГодаНаСервере()
   ВременаГода = Перечисления.ВременаГода;
   Сообщить("1-й способ:");
   Для каждого ВремяГода из ВременаГода Цикл               
      ТипЗначения = ТипЗнч(ВремяГода);
      МетаОбъект = Метаданные.НайтиПоТипу(ТипЗначения);
      Если МетаОбъект <> Неопределено Тогда   
         ТипЗначения = МетаОбъект.ПолноеИмя();
      КонецЕсли;
      Сообщить("" + ВремяГода + " " + ТипЗначения);
      Сообщить("" + ВремяГода + " " + ТипЗнч(ВремяГода));
   КонецЦикла;   
   
   Сообщить("2-й способ:");
   ВременаГода = Метаданные.Перечисления.ВременаГода;
   Для каждого ВремяГода из ВременаГода.ЗначенияПеречисления Цикл
      Сообщить(ВремяГода.Синоним + " " + ТипЗнч(ВремяГода.Синоним));
   КонецЦикла;

   Сообщить("3-й способ:");
   ВременаГода = Метаданные.Перечисления.ВременаГода;
   Для каждого ВремяГода из ВременаГода.ЗначенияПеречисления Цикл
      Сообщить("" + Перечисления.ВременаГода[ВремяГода.Имя] + " " + ТипЗнч(Перечисления.ВременаГода[ВремяГода.Имя]));
   КонецЦикла;
КонецПроцедуры

1-й способ:
Зима (синоним) Перечисление.ВременаГода
Зима (синоним) ВременаГода
Весна (синоним) Перечисление.ВременаГода
Весна (синоним) ВременаГода
Лето (синоним) Перечисление.ВременаГода
Лето (синоним) ВременаГода
Осень (синоним) Перечисление.ВременаГода
Осень (синоним) ВременаГода
2-й способ:
Зима (синоним) Строка
Весна (синоним) Строка
Лето (синоним) Строка
Осень (синоним) Строка
3-й способ:
Зима (синоним) ВременаГода
Весна (синоним) ВременаГода
Лето (синоним) ВременаГода
Осень (синоним) ВременаГода

В первом цикле итератор ВремяГода имеет в отладчике тип "ПеречислениеСсылка.ВременаГода", но получить это значения я не смог, как видно из кода, представленного выше.
Можете объяснить, что не так я делаю и чего я в платфоме не понимаю и ткнуть что покурить?


antoneus


Похожие темы (5)

Рейтинг@Mail.ru

Поиск