0
stpd
24.11.11
✎
09:05
|
Господа и дамы!
Возможно я дебил и лох, но не могу врубиться - где здесь ошибка?
ИначеЕсли РеквТип="Перечисление" Тогда
ОткрСкобка = Найти(ТекOLE,"ПЕР.");
ЗакрСкобка = Найти(ТекOLE,": [");
ТекВид = Сред(ТекOLE,ОткрСкобка+4,ЗакрСкобка-ОткрСкобка-4);
ОткрСкобка = Найти(ТекOLE,"[");
ЗакрСкобка = Найти(ТекOLE,"]");
ТекСтрока = Сред(ТекOLE,ОткрСкобка+1,ЗакрСкобка-ОткрСкобка-1);
ТекПрчс = СоздатьОбъект("Перечисление."+ТекВид);
ТекПрчс.ЗначениеПоИдентификатору(ТекСтрока);
ДокLocal.УстановитьАтрибут(РеквИдентификатор,ТекПрчс);
Иначе
Результатом выскакивает следующее:
ТекПрчс = СоздатьОбъект("Перечисление."+ТекВид);
{D:\1SBASES\KONDINSKY\СВЕРКАДОКУМЕНТОВ.ERT(615)}: Неудачная попытка создания объекта
Подскажите, плиз: если Перечисления нельзя создавать как объекты, то как с ними работать программно?
|
|
2
andrewks
24.11.11
✎
09:13
|
нестандартный способ:
Функция Присвоить(Чему,Что)
Чему=Что;
Возврат "";
КонецФункции
Перем ЗнПереч;
Стр1="Перечисление."+ТекВид+"."+ТекСтрока;
Шаблон("[Присвоить(ЗнПереч,"+Стр1+")]");
|
|
3
stpd
25.11.11
✎
09:31
|
Первый вариант не прошел - ошибки не дает, но присваивает пустое значение.
В отладчике видно, что после Перечисление.ПолучитьАтрибут(ТекВид) переменная принимает значение "Неизвестный объект".
Второй вариант - прошел. А я все матерился - чего это в 1Ц нет аналога функции EvalExpr? Дык вот же она! Сенькс!
|
|