Как получить значение перечисления в 1С 8.2 – 8.3

Как получить значение перечисления в 1С 8.2 – 8.3:

 

ИмяПеречисления = СсылкаНаПеречисление.Метаданные().Имя;

КоличествоЗначенийПеречисления=Метаданные.Перечисления

[ИмяПеречисления].ЗначенияПеречисления.Количество();

КолекцияЗначенийПеречисления = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления;
ИндексЗначенияПеречисления=Перечисления[ИмяПеречисления].Индекс

(СсылкаНаПеречисление);

ИмяЗначенияПеречисления = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления

[ИндексЗначенияПеречисления].Имя
Перебор коллекции значений перечисления
Для каждого знач из КолекцияЗначенийПеречисления Цикл
	Сообщить(знач.Имя);
КонецЦикла;
ПредставлениеПеречисления=Строка(СсылкаНаПеречисление); //синоним

 

 

полезной будет функция:

 

Функция ПолучитьИмяЗначенияПеречисления(Ссылка) Экспорт

ИмяПеречисления = Ссылка.Метаданные().Имя;
Индекс = Перечисления[ИмяПеречисления].Индекс(Ссылка);

Возврат Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[Индекс].Имя;

КонецФункции // ПолучитьИмяЗначенияПеречисления()

 

Альтернативный способ получения имени значения перечисления:

 

ИмяЗначенияПеречисления = XMLстрока(СсылкаНаПеречисление);

 

Полезный прием для работы с перечислениями при COM соединении с другой ИБ 8.0 (например при обмене данных):

Надо передать ссылку на перечисление: 

V8 - COM объект "V8.Application" - ИБ внешнего соединения 
СсылкаНаПеречислениеCOM - COM объект - ссылка на перечисление в ИБ внешнего соединения

ИмяЗначенияПеречисленияCOM= V8.XMLString(СсылкаНаПеречислениеCOM);
ПредставлениеПеречисленияCOM= V8.String(СсылкаНаПеречислениеCOM); //синоним
ИмяПеречисленияCOM= СсылкаНаПеречислениеCOM.Метаданные().Имя;
СсылкаНаПеречисление = XMLЗначение(Тип("ПеречислениеСсылка."+ИмяПеречисленияCOM),

ИмяЗначенияПеречисленияCOM);

 

Разумеется имена перечислений в обоих базах должны быть идентичными.

Пример получения значений перечисления запросом

   Запрос=новый запрос;
   запрос.Текст="ВЫБРАТЬ
            |    ВидыОС.Ссылка,
            |    ВидыОС.Порядок КАК Индекс
            |ИЗ
            |    Перечисление.ВидыОС КАК ВидыОС";
   Выборка=Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() цикл
     Сообщить(""+Выборка.ссылка+" : "+Выборка.индекс);
   конецЦикла;   

 

//Пример для отбора на стороне COMсервера:

    Отбор = v8.Новый ("Структура");
    МД=v8.XMLTypeOf(v8.Перечисления[ИмяПеречисления].ПустаяСсылка());
    Отбор.Вставить("ВидДоговора", v8.XMLЗначение(v8.FromXMLType(МД),ИмяЗначенияПеречисления));

 

  



Есть вопросы? пишите в группу Telegram!

Сканируйте и присоединяйтесь к сообществу!

 

Программа помощник Администратора 1С

Скачай бесплатно YaAdmin !
Программа YaAdmin помощник администратора 1С

Уроки Бесплатно!

Узнайте как правильно администрировать 1С