Имя: Пароль:
1C
1C 7.7
v7: Как программно получить значение перечисления?
0 stpd
 
24.11.11
09:05
Господа и дамы!
Возможно я дебил и лох, но не могу врубиться - где здесь ошибка?
 
 ИначеЕсли РеквТип="Перечисление" Тогда  
   ОткрСкобка = Найти(ТекOLE,"ПЕР.");
   ЗакрСкобка = Найти(ТекOLE,":  [");
   ТекВид     = Сред(ТекOLE,ОткрСкобка+4,ЗакрСкобка-ОткрСкобка-4);
   ОткрСкобка = Найти(ТекOLE,"[");
   ЗакрСкобка = Найти(ТекOLE,"]");
   ТекСтрока  = Сред(ТекOLE,ОткрСкобка+1,ЗакрСкобка-ОткрСкобка-1);
   ТекПрчс = СоздатьОбъект("Перечисление."+ТекВид);
   ТекПрчс.ЗначениеПоИдентификатору(ТекСтрока);
   ДокLocal.УстановитьАтрибут(РеквИдентификатор,ТекПрчс);
 Иначе      

Результатом выскакивает следующее:

 ТекПрчс = СоздатьОбъект("Перечисление."+ТекВид);
 {D:\1SBASES\KONDINSKY\СВЕРКАДОКУМЕНТОВ.ERT(615)}: Неудачная попытка создания объекта                              

Подскажите, плиз: если Перечисления нельзя создавать как объекты, то как с ними работать программно?
1 ДенисЧ
 
24.11.11
09:06
ТекПрчс = Перечисление.ПолучитьАтрибут(ТекВид)
2 andrewks
 
24.11.11
09:13
нестандартный способ:


Функция Присвоить(Чему,Что)
   Чему=Что;
   Возврат "";
КонецФункции


   Перем ЗнПереч;
   
   Стр1="Перечисление."+ТекВид+"."+ТекСтрока;
   Шаблон("[Присвоить(ЗнПереч,"+Стр1+")]");
3 stpd
 
25.11.11
09:31
Первый вариант не прошел - ошибки не дает, но присваивает пустое значение.
В отладчике видно, что после Перечисление.ПолучитьАтрибут(ТекВид) переменная принимает значение "Неизвестный объект".

Второй вариант - прошел. А я все матерился - чего это в 1Ц нет аналога функции EvalExpr? Дык вот же она! Сенькс!
Независимо от того, куда вы едете — это в гору и против ветра!