|
v7: Обратится к виду перечисления не явно | ☑ | ||
---|---|---|---|---|
0
Wefast
20.09.19
✎
13:53
|
У меня в функцию приходит представление значение перечисления и имя перечисления.
Мне нужно получить это значение //ИдентификаторПеречисления = "ВидыПлатежейВБюджет" //ПредставлениеЗначения = "Налог такой то". Значение - Налог Функция ВернутьПеречислениеПоПредставлению(ИдентификаторПеречисления, ПредставлениеЗначения) Для i = 1 По Metadata.Перечисление(ИдентификаторПеречисления).Значение() Цикл Если Metadata.Перечисление(ИдентификаторПеречисления).Значение(i).Представление = ПредставлениеЗначения Тогда зн = Metadata.Перечисление(ИдентификаторПеречисления).Значение(i); //ТипЗначения(Зн) = 100 Если Зн = Перечисление.ВидыПлатежейВБюджет.Налог Тогда Сообщить("ааааааааа"); // не заходит сюда КонецЕсли; Возврат зн; КонецЕсли; КонецЦикла; Возврат ПолучитьПустоеЗначение(); КонецФункции Через метаданные я все нахожу. Но это не ссылка на объект, и я не могу присвоить это значение реквизиту документа |
|||
1
Wefast
20.09.19
✎
13:53
|
что то такое придумал:
Функция ВернутьПеречислениеПоПредставлению(ИдентификаторПеречисления, ПредставлениеЗначения) Для i = 1 По Metadata.Перечисление(ИдентификаторПеречисления).Значение() Цикл Если Metadata.Перечисление(ИдентификаторПеречисления).Значение(i).Представление = ПредставлениеЗначения Тогда зн = Metadata.Перечисление(ИдентификаторПеречисления);//.Значение(i); Пре = Перечисление.ПолучитьАтрибут(Зн); Для Н = 1 По Пре.КоличествоЗначений() Цикл ЗначениеП = Пре.ЗначениеПоНомеру(Н); н = Н+1; Если Строка(ЗначениеП) = ПредставлениеЗначения Тогда НужноеЗначение = ЗначениеП; Прервать; КонецЕсли; КонецЦикла; Возврат НужноеЗначение; КонецЕсли; КонецЦикла; Возврат ПолучитьПустоеЗначение(); КонецФункции Может есть что то более нормальное? |
|||
2
Wefast
20.09.19
✎
13:56
|
Сократил до:
Вид = Перечисление.ПолучитьАтрибут(ИдентификаторПеречисления); Для Н = 1 По Вид.КоличествоЗначений() Цикл ЗначениеП = Вид.ЗначениеПоНомеру(Н); н = Н+1; Если Строка(ЗначениеП) = ПредставлениеЗначения Тогда Возврат ЗначениеП; Прервать; КонецЕсли; КонецЦикла; Возврат ПолучитьПустоеЗначение(); |
|||
3
Wefast
20.09.19
✎
14:27
|
Функция ВернутьПеречислениеПоПредставлению(ИдентификаторПеречисления, ПредставлениеЗначения)
Вид = Перечисление.ПолучитьАтрибут(ИдентификаторПеречисления); Для Н = 1 По Вид.КоличествоЗначений() Цикл ЗначениеП = Вид.ЗначениеПоНомеру(Н); Если Строка(ЗначениеП) = ПредставлениеЗначения Тогда Возврат ЗначениеП; КонецЕсли; КонецЦикла; Возврат ПолучитьПустоеЗначение(); КонецФункции |
|||
4
HawkEye
20.09.19
✎
14:45
|
(3) цикл то зачем?
НужныйЭлементПеречисления = Вид.ЗначениеПоИдентификатору(СокрЛП(ПредставлениеЗначения)); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |