Как установить значение перечисления по имени.

1. an2007 19.08.21 12:14 Сейчас в теме
Добрый день, помогите с такой проблемой.
Есть имя вида перечисления <видРек> - Перечисление.СтатусПроизводства
и номер значения <значРек>.
Нужно установить значение реквизита документа <идРек> - СтатусПроизводства.
Делаю так:
док.УстановитьАтрибут(идРек, Метаданные.Перечисление(видРек).Значение(значРек));
В результате значение Док.СтатусПроизводства пустое.
Если задаю явно:
док.УстановитьАтрибут(идРек, Перечисление.СтатусПроизводства.Упаковка);
в этом случае все Ок.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. FatPanzer 19.08.21 12:19 Сейчас в теме
XMLЗначение(значРек, Тип("ПеречислениеСсылка." + ВидРек))
3. an2007 19.08.21 12:25 Сейчас в теме
(2)
XMLЗначение(значРек

У меня 1c v77.
4. user856012 13 19.08.21 12:41 Сейчас в теме
(3)
У меня 1c v77
Ну так и читайте Синтакс-помощник по 7.7:
ЗначениеПоНомеру(<?>)
Синтаксис:
ЗначениеПоНомеру(<Номер>)
Назначение:
Возвращает значение перечисления по порядковому номеру в перечислении.
Параметры:
<Номер> - порядковый номер значения в перечислении.
Где вы там вообще увидели метод Значение() для перечисления?
5. user856012 13 19.08.21 13:18 Сейчас в теме
+(4) И если вам нужно значение перечисления, то зачем вы обращаетесь к метаданным? Метаданные - это описание структур конфигурации, а не их значения. На пальцах: через метаданные вы можете получить описание справочника (например, "Номенклатура"), но не значения элементов справочника!

Для получения значения перечисления по его текстовому виду надо использовать метод ПолучитьАтрибут():
док.УстановитьАтрибут(идРек, Перечисление.ПолучитьАтрибут(видРек).ЗначениеПоНомеру(значРек));
an2007; CheBurator; +2 Ответить
6. Octopus 337 20.08.21 11:40 Сейчас в теме
(5) Как раз в случае перечисления в метаданных можно найти сами значения
7. user856012 13 20.08.21 15:20 Сейчас в теме
(6)
в случае перечисления в метаданных можно найти сами значения
Так приведите код, который обращается к метаданным и при этом работает? А то теоретически рассусоливатьждать - дело нехитрое.
8. Octopus 337 20.08.21 18:02 Сейчас в теме
(7) https://infostart.ru/1c/articles/65108/
Цитата оттуда:
Количество имеющихся значений перечисления можно узнать следующим образом: Метаданные.Перечисление(["Идентификатор"/Номер]).Значение();
9. user856012 13 20.08.21 23:17 Сейчас в теме
(8)
Цитата оттуда:
Количество имеющихся значений перечисления можно узнать следующим образом:
Дивная цитата! Вы количество значений перечисления от собственно значений отличаете? Есть ощущение, что не отличаете... но при этом беретесь поучать свысока.

А если вы рассчитываете отмазаться вот этим кусочком чужого кода:
Для й=1 по ТекВид.Значение() Цикл
      Сообщить("----------Значение----------","!");
      ТекЗнач=ТекВид.Значение(й);
      Сообщить("Идентификатор: "+ТекЗнач.Идентификатор);
      Сообщить("Комментарий: "+ТекЗнач.Комментарий);
      Сообщить("Представление: "+ТекЗнач.Представление);
  КонецЦикла;

Так я буду вынужден вас огорчить - именно он у автора не работает! Почему? Ответ на этот вопрос немного сложнее, чем вам впопыхах показалось.

Постараюсь объяснить на простеньком примере: в типовой Бухгалтерии 7.7 есть перечисление "Булево" с двумя значениями: "Да" и "Нет". Так вот, набрав в табло две строчки:
Метаданные.Перечисление("Булево").Значение(1)
Перечисление.ПолучитьАтрибут("Булево").ЗначениеПоНомеру(1)

в обоих случаях получаем "Да". ППолучается, между вашим (и автора) способом и моим нет никакой разницы?

А разница есть, и выявляют ее еще две строчки в табло:
ТипЗначенияСтр(Метаданные.Перечисление("Булево").Значение(1))
ТипЗначенияСтр(Перечисление.ПолучитьАтрибут("Булево").ЗначениеПоНомеру(1))
Первая (ваша) возвращает "Метаданные", а вторая (моя) - "Перечисление". Сюрприз!

Надеюсь, теперь разница между способами понятна? Автор пытается (и вы его в этом поддерживаете) записать в реквизит документа объект метаданных - надеюсь, результат понятен даже вам, господин учитель?

P.S. "Иногда лучше жевать, чем говорить" (с)
Octopus; CheBurator; +2 Ответить
10. CheBurator 3121 21.08.21 11:34 Сейчас в теме
(9) угу, метаданные!
просто их еще могло попутать что визуальное представление метаданного выглядит так же как визуальное представление значения перечисления.
11. an2007 22.08.21 18:50 Сейчас в теме
Всем спасибо разобрался, тема закрыта.
Оставьте свое сообщение

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