Как найти значение в перечислении

1. alw-1 16.06.12 20:31 Сейчас в теме
При загрузки данных из Экселя в спраочнике есть реквизит тип Перечисление для приведения его перечислениеСсылка
надо найти значение типа строка в перечислении. Пробовал:

Пар = Новый Структура("Отбор,СтрокаПоиска");
Пар.СтрокаПоиска = "Обычная";
Стр = Перечисления.ВариантыВажностиЗадачи.ПолучитьДанныеВыбора(Пар);
Для Каждого Строка Из Стр Цикл
Сообщить(Строка);
КонецЦикла;
Стр - пустой список. Не могу понять какие параметры задаю не правильно?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Ягг 495 16.06.12 20:48 Сейчас в теме
(1) alw-1, может конечно не в тему, но к значениям перечисления можно обращаться по имени заданному в строковом виде.

Т.е. например у нас есть значнеие перечисления "Перечисления.ВариантыВажностиЗадачи.Обычная", мы можем ее получить и так:

ИмяЗначения = "Обычная";
СсылкаНаПеречисление = Перечисления.ВариантыВажностиЗадачи[ИмяЗначения];

этого достаточно.

или не об этом вопрос был?

ЗЫ. Кстати, для меня вобоще загадка для чего в перечислениях может понадобится ПолучитьДанныеВыбора с отбором параметров? Может кто прояснит что там отбирать то?
NicolasCage; Bespechnii_kot; user1089040; user594251_deryabina_ann; user1066941; Crazy_Max; asisdes; +7 Ответить
4. alw-1 16.06.12 20:52 Сейчас в теме
(2) Ягг, А если такого значения нет в перечислении, то СсылкаНаПеречисление - ПустаяСсылка()?
5. Ягг 495 16.06.12 20:54 Сейчас в теме
(4) alw-1, нет, скорее всего вывалится ошибка. Так что надо делать в "Попытке... исключение ... конецПопытки"

Ну можно конечно проверить через метаданные (есть ли такое значение или нет), но проше через попытку (хотя наверно "методологически" не правильно :) )
6. krasavcheg 16.06.12 22:51 Сейчас в теме
(1) alw-1, Что-то не совсем понял задачи поподробнее можно описать проблему?
7. Поручик 4675 17.06.12 00:23 Сейчас в теме
(1)
Перебор по метаданным.
Для синонима перечисления.

	Для каждого ЭлементПеречисления Из Метаданные.Перечисления.ВариантыВажностиЗадачи.ЗначенияПеречисления Цикл
		Если ЭлементПеречисления.Синоним = Какая_то_строка Тогда
			СсылкаНаПеречисление = Перечисления.ВариантыВажностиЗадачи[ЭлементПеречисления.Имя];
			Прервать;
		КонецЕсли; 
	КонецЦикла;
NicolasCage; jan-pechka; dooD1iez; ivnik; AndreySchel; Socradt; houpl; denis83; Aggressorak; user1674465; vladimir-89; rzabolotin; alexovik; agdam_m; Papilion; ASV085; pashamix; myoker; klinval; +19 Ответить
13. pashamix 10.01.18 01:28 Сейчас в теме
(7) самый годный вариант.
17. jan-pechka 409 17.01.24 13:35 Сейчас в теме
(7) можно не только по имени, а и по "Порядок". Например у меня в обоих базах, стоящих в обменке, Перечисление СтатусыУслуг имеет очень большой перечень данных и неудобно эти Наименования в запросе перебирать, запихивая их в строку, а вот Порядок данного перечисления и в той и в другой базе одинаковый, сл.передаю этот Порядок(число), а в принимающей базе - просто по этому порядку (он же Индекс)- получаю ссылку на нужное значение перечисления:

новСтр.ИсходныйСтатус=Перечисления.СтатусыУслуг.Получить(стр.ИсходныйСтатусПорядок);
18. Sashares 34 17.01.24 13:56 Сейчас в теме
(17)Гениально. *сарказм*
Изменится по какой-то причине перечень/порядок элементов в одной из баз, вот рады то будут пользователи, что обмен как бы работает, но данные не те.
Так раскидывать грабли, чтобы потом на них самому же наступать... скучно живете?

В БСП есть функция в модуле ОбщегоНазначения:
Функция ИмяЗначенияПеречисления(Значение) Экспорт
	
	ОбъектМетаданных = Значение.Метаданные();
	ИндексЗначения = Перечисления[ОбъектМетаданных.Имя].Индекс(Значение);
	Возврат ОбъектМетаданных.ЗначенияПеречисления[ИндексЗначения].Имя;
	
КонецФункции


Передавайте имя перечисления из одной в базы в другую.
Если у вас нет в базе БСП, добавьте функцию самостоятельно в общий модуль.
Прикрепленные файлы:
8. Поручик 4675 17.06.12 00:33 Сейчас в теме
(1) Для имени перечисления

Мета = Метаданные.Перечисления.ВариантыВажностиЗадачи.ЗначенияПеречисления.Найти(Какая_то_Строка);
Если Мета <> Неопределено Тогда
      СсылкаНаПеречисление = Перечисления.ВариантыВажностиЗадачи[Мета.Имя];
КонецЕсли;
user2022329; dooD1iez; kabantus; G_101609183801980130681; Aggressorak; user1674465; vladimir-89; ASV085; stupidgamer; LisaAVR; non1ka; +11 Ответить
14. G_101609183801980130681 15.03.23 12:10 Сейчас в теме
(8)спасибо! я ради + зарегался) отлично подошло <> Нопределено, а то постоянно ошибка выскакивала бл
12. Поручик 4675 17.06.12 16:57 Сейчас в теме
(1) Исправь заголовок темы, иначе поиском трудно будет найти.
3. alw-1 16.06.12 20:48 Сейчас в теме
Хотел уточнить - "Обычная" - одно из значений перечисления. У меня есть значение тип Строка а надо преобразовать в ПеречислениеСсылка.
9. asved.ru 36 17.06.12 06:33 Сейчас в теме
Получение строкового значения имени перечисления:
 Функция ФПеречисление(Значение) Экспорт
	 Если Значение.Пустая() Тогда
		 Возврат "";
	 КонецЕсли;
	 
//получаем как названо перечисление в конфигураторе
ИмяПеречисления = Значение.Метаданные().Имя;

//теперь получим индекс где хранится то что нам надо
НужныйИндекс = Перечисления[ИмяПеречисления].Индекс(Значение);

//и вот счастье. то что нам надо - идентификатор!!! всего-то четыре строчки кода
ИмяЗначения = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[НужныйИндекс].Имя;	 
	 
	 
Возврат ИмяЗначения;	 
	 
	 
 КонецФункции
Показать
buy_sale; nez; lambert@inbox.ru; TerveRus; +4 Ответить
10. Поручик 4675 17.06.12 13:11 Сейчас в теме
(9) Это не то, что нужно ТС. У него строка в таблице Excel, которую нужно преобразовать в перечисление 1С при загрузке данных. А у тебя наоборот.
11. asved.ru 36 17.06.12 16:34 Сейчас в теме
Это для более широкой иллюстрации принципа. Когда-то сам с этим намаялся, пока разобрался.
15. romankoav 4 01.08.23 17:25 Сейчас в теме
ОбщегоНазначенияБП.НайтиЗначениеПеречисления(ИмяПеречисления,ИмяЗначения)
Raskad; user1559729; user594854_agentofis; abryazgin; +4 Ответить
16. пользователь 01.08.23 19:18
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот