Перечисления по OLE #110226


#0 by slaz
Есть документ ОЛЕ "ТекДокОле", у него в табличной части реквизит "СтавкаНДС", тип которого "Перечисление.ЗначенияНДС".Нужно получить текстовое представление этой самой ставки (18% или 10%) как оно выглядит в базе ОЛЕДелаю так:...СтавкаНДС=ТекДокОле.Перечисление.ЗначенияНДС.ЗначениеПоИдентификатору(ТекДокОле.СтавкаНДС.Идентификатор);...Выдает ошибку :(
#1 by slaz
Простите, опИсАлся... Конечно, "БазаОЛЕ.Перечисление.ЗначенияНДС..." и т.п.
#2 by Lexusss
РТФМПредставлениеСинтаксис:Метаданные.Перечисление(<Идентификатор>).Значение(<Номер>).ПредставлениеилиМетаданные.Перечисление(<Идентификатор>).Значение(<Идентификатор2>).ПредставлениеНазначение:  Получить синоним вида перечисления.Параметр<Идентификатор> - идентификатор вида перечисления, как он задан в конфигурации.<Номер> - порядковый номер значения перечисления, как он задан в конфигурации.<Идентификатор2> - идентификатор значения перечисления, как он задан в конфигурации.Возвращаемое значение  Строка - представление значения перечисления, как оно будет отображаться в реквизитах форм и диалогах. Если не указано, возвращается идентификатор значения перечисления.
#3 by slaz
И с использованием ".ПорядковыйНомер" - "ЗначениеПоНомеру(...)" то же не работает :(
#4 by КонецЦикла
Дело именно в волшебном слове "Идентификатор" (с)
#5 by slaz
- хрен там!БазаОле.Метаданные.Перечисление("ЗначенияНДС").Значение(ТекДокОле.СтавкаНДС.ПорядковыйНомер).Представление;- err: Типы не совпадают
#6 by slaz
- ? И как это понимать?
#7 by slaz
Ну, я так понял, что никто не знает, как с этим работать :(((
#8 by Lexusss
Не помню такой ошибки. Что то Вы не правильно делаете. :-(Ну это точно должно сработать.БазаОЛЕ.глрасшифровка = ТекДокОле.СтавкаНДС;Сообщить(БазаОЛЕ.EvalExpr("Строка(глРасшифровка)"));
#9 by КонецЦикла
2Вот тебе пример:.
#10 by slaz
- "Из того же материала...." см.
#11 by slaz
- Дорогой, у меня в текущей базе НЕТУ такого же перечисления, как в ОЛЕ и я не могу использовать строку "Перечисление.ВидыДолга.ЗначениеПоИдентификатору...." и т.д.
#12 by КонецЦикла
2 Милый мой, пеши так:Пер = ТекДок.ВидДолга.Идентификатор;
#13 by slaz
- Ура! Заработало!> Сообщить(БазаОЛЕ.EvalExpr("Строка(глРасшифровка)"));Только если если бы Вы еще объяснили (кратко) что есть "БазаОЛЕ.глрасшифровка" ?!
#14 by slaz
- см. Мне НЕ нужен идентификатор, мне нужно ПРЕДСТАВЛЕНИЕ
#15 by КонецЦикла
2 Это через глоб. контекст :) Все то, что со словом Экспорт в твоей базеА попробовать все же что выдаст:
#16 by slaz
- Правильно ли я понял, что "глРасшифровка" просто глобальная переменная, через которую можно что-либо передать?
#17 by slaz
2 Ё..пть... Да пробовал я! Мне нужны были циферки "10%", "18%", т.е. представления, а идентификаторы в моей базе - "ни уму, ни сердцу", по ним хрен разберешь, о чем речь...
#18 by Lexusss
Идентификатор выдаст вестимо, но не перечисление. Неужели через ОЛЕ не так, не пробовал.
#19 by slaz
Да вот и я впервые столкнулся с ситуацией, когда у меня в разных базах разные перечисления (и по виду, и по идентификаторам) и необходимо их синхронизировать по представлениям, которые, к счастью, совпадают...
#20 by КонецЦикла
2 Я тут отвлекаюсь... видимо уже забыл чего надо было :)Короче, замялиЗЫ. Всем спасибо за внимание
#21 by Lexusss
Ну да. Просто она очень часто встречается.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С