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