Как получить значение перечисления в 1С 8.2 – 8.3:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
ИмяПеречисления = СсылкаНаПеречисление.Метаданные().Имя; КоличествоЗначенийПеречисления=Метаданные.Перечисления [ИмяПеречисления].ЗначенияПеречисления.Количество(); КолекцияЗначенийПеречисления = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления; ИндексЗначенияПеречисления=Перечисления[ИмяПеречисления].Индекс (СсылкаНаПеречисление); ИмяЗначенияПеречисления = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления [ИндексЗначенияПеречисления].Имя Перебор коллекции значений перечисления Для каждого знач из КолекцияЗначенийПеречисления Цикл Сообщить(знач.Имя); КонецЦикла; ПредставлениеПеречисления=Строка(СсылкаНаПеречисление); //синоним |
полезной будет функция:
1 2 3 4 5 6 7 8 |
Функция ПолучитьИмяЗначенияПеречисления(Ссылка) Экспорт ИмяПеречисления = Ссылка.Метаданные().Имя; Индекс = Перечисления[ИмяПеречисления].Индекс(Ссылка); Возврат Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[Индекс].Имя; КонецФункции // ПолучитьИмяЗначенияПеречисления() |
Альтернативный способ получения имени значения перечисления:
1 |
ИмяЗначенияПеречисления = XMLстрока(СсылкаНаПеречисление); |
Полезный прием для работы с перечислениями при COM соединении с другой ИБ 8.0 (например при обмене данных):
Надо передать ссылку на перечисление:
1 2 3 4 5 6 7 8 9 |
V8 - COM объект "V8.Application" - ИБ внешнего соединения СсылкаНаПеречислениеCOM - COM объект - ссылка на перечисление в ИБ внешнего соединения ИмяЗначенияПеречисленияCOM= V8.XMLString(СсылкаНаПеречислениеCOM); ПредставлениеПеречисленияCOM= V8.String(СсылкаНаПеречислениеCOM); //синоним ИмяПеречисленияCOM= СсылкаНаПеречислениеCOM.Метаданные().Имя; СсылкаНаПеречисление = XMLЗначение(Тип("ПеречислениеСсылка."+ИмяПеречисленияCOM), ИмяЗначенияПеречисленияCOM); |
Разумеется имена перечислений в обоих базах должны быть идентичными.
Пример получения значений перечисления запросом
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Запрос=новый запрос; запрос.Текст="ВЫБРАТЬ | ВидыОС.Ссылка, | ВидыОС.Порядок КАК Индекс |ИЗ | Перечисление.ВидыОС КАК ВидыОС"; Выборка=Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() цикл Сообщить(""+Выборка.ссылка+" : "+Выборка.индекс); конецЦикла; //Пример для отбора на стороне COMсервера: Отбор = v8.Новый ("Структура"); МД=v8.XMLTypeOf(v8.Перечисления[ИмяПеречисления].ПустаяСсылка()); Отбор.Вставить("ВидДоговора", v8.XMLЗначение(v8.FromXMLType(МД),ИмяЗначенияПеречисления)); |
Если Вы хотите больше узнать о программировании в 1С, тогда регистрируйтесь на курс: 1С 8.3 Старт >>>