У меня в функцию приходит представление значение перечисления и имя перечисления.
Мне нужно получить это значение
//ИдентификаторПеречисления = "ВидыПлатежейВБюджет"
//ПредставлениеЗначения = "Налог такой то". Значение - Налог
Функция ВернутьПеречислениеПоПредставлению(ИдентификаторПеречисления, ПредставлениеЗначения)
Для i = 1 По Metadata.Перечисление(ИдентификаторПеречисления).Значение() Цикл
Если Metadata.Перечисление(ИдентификаторПеречисления).Значение(i).Представление = ПредставлениеЗначения Тогда
зн = Metadata.Перечисление(ИдентификаторПеречисления).Значение(i);
//ТипЗначения(Зн) = 100
Если Зн = Перечисление.ВидыПлатежейВБюджет.Налог Тогда
Сообщить("ааааааааа"); // не заходит сюда
КонецЕсли;
Возврат зн;
КонецЕсли;
КонецЦикла;
Возврат ПолучитьПустоеЗначение();
КонецФункции
Через метаданные я все нахожу. Но это не ссылка на объект, и я не могу присвоить это значение реквизиту документа
Функция ВернутьПеречислениеПоПредставлению(ИдентификаторПеречисления, ПредставлениеЗначения)
Для i = 1 По Metadata.Перечисление(ИдентификаторПеречисления).Значение() Цикл
Если Metadata.Перечисление(ИдентификаторПеречисления).Значение(i).Представление = ПредставлениеЗначения Тогда
зн = Metadata.Перечисление(ИдентификаторПеречисления);//.Значение(i);
Пре = Перечисление.ПолучитьАтрибут(Зн);
Для Н = 1 По Пре.КоличествоЗначений() Цикл
ЗначениеП = Пре.ЗначениеПоНомеру(Н);
н = Н+1;
Если Строка(ЗначениеП) = ПредставлениеЗначения Тогда
НужноеЗначение = ЗначениеП;
Прервать;
КонецЕсли;
КонецЦикла;
Вид = Перечисление.ПолучитьАтрибут(ИдентификаторПеречисления);
Для Н = 1 По Вид.КоличествоЗначений() Цикл
ЗначениеП = Вид.ЗначениеПоНомеру(Н);
н = Н+1;
Если Строка(ЗначениеП) = ПредставлениеЗначения Тогда
Функция ВернутьПеречислениеПоПредставлению(ИдентификаторПеречисления, ПредставлениеЗначения)
Вид = Перечисление.ПолучитьАтрибут(ИдентификаторПеречисления);
Для Н = 1 По Вид.КоличествоЗначений() Цикл
ЗначениеП = Вид.ЗначениеПоНомеру(Н);
Если Строка(ЗначениеП) = ПредставлениеЗначения Тогда
Возврат ЗначениеП;
КонецЕсли;
КонецЦикла;
(3) цикл то зачем?
НужныйЭлементПеречисления = Вид.ЗначениеПоИдентификатору(СокрЛП(ПредставлениеЗначения));
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс