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

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

Автор dim-mich-t, 20 мая 2026, 20:00

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

dim-mich-t

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

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

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

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

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

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


antoneus


dim-mich-t

перечитал вчерашние свои исследования, действительно, непонятно написано.

ВременаГода - это перечисление Зима,лето,осень,весна

в отладчике тип переменной "ВремяГода" из первого цикла по shift-f9 показывается как "ПеречислениеСсылка.ВременаГода",

а из кода тип этой переменной выходит:

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


Зима (синоним) Перечисление.ВременаГода
Зима (синоним) ВременаГода
Весна (синоним) Перечисление.ВременаГода
Весна (синоним) ВременаГода
Лето (синоним) Перечисление.ВременаГода
Лето (синоним) ВременаГода
Осень (синоним) Перечисление.ВременаГода
Осень (синоним) ВременаГода

т.е. не смог я получить наименование типа переменной ВремяГода из кода обработки, поэтому и три цикла приведено, по-разному пытался с этим разобраться.

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


antoneus

Надо, я так понял, получить прям строку "ПеречислениеСсылка.ВременаГода"? Штатно не получится, в БСП есть функция ОбщегоНазначения.СтроковоеПредставлениеТипа.

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

Рейтинг@Mail.ru

Поиск