Имя: Пароль:
1C
1С v8
Доступ к реквизиту объекта через имя реквизита в переменной.
0 nacsa
 
09.11.11
14:10
Доброго времени суток.
Не смог найти хорошего решения такой задачи:

Есть имя справочника: СпрИмя
Есть имя реквизита этого справочника в переменной: РекИмя
Как получить, например, значение реквизита РекИмя для элемента справочника с кодом "0001"?

Видел в инете одно решение, но очень не удобное - через создание табличного документа.
1 DrShad
 
09.11.11
14:12
Справочники[СпрИмя].НайтиПоКоду(МойКод)[РекИмя]
2 guitar_player
 
09.11.11
14:12
получить - запросом.
например так:
Выбрать тСпрИмя.РекИмя Из Справочник.СпрИмя Как тСпрИмя Где тСпрИмя.Код = &Код
3 vde69
 
09.11.11
14:13
Справочники[СпрИмя].НайтиПоКоду("0001")[ИмяРеквизита]

только не вздумай действительно так писать, это быдлокод
4 guitar_player
 
09.11.11
14:17
(0) что нужно то?
5 nacsa
 
09.11.11
14:18
DrShad,vde69
Это было бы очень красиво и просто, но
"получение элемента по индексу для значения не определено"
6 nacsa
 
09.11.11
14:19
guitar_player
буду пробовать запросом
7 guitar_player
 
09.11.11
14:19
(5) предположу, что по коду не нашлось.
Пользуйтесь отладчиком
8 nacsa
 
09.11.11
14:22
все, спасибо. разобрался.
действительно можно получить через [ИмяРеквизита]
9 guitar_player
 
09.11.11
14:23
конечно можно. это объектная техника.
Реализация запросом примерно такая:
Запрос = Новый Запрос;
Запрос.Текст =
"Выбрать тСпрИмя.РекИмя КАК РекИмя Из Справочник.СпрИмя Как тСпрИмя Где тСпрИмя.Код = &Код";

Запрос.УстановитьПараметр("Код", "0001");

РезультатЗапроса = Запрос.Выполнить();

Если РезультатЗапроса.Пустой() Тогда
   Примечание = "Не найден элемент справочника";
Иначе
   
   Выборка = РезультатЗапроса.Выбрать();
   
   Пока Выборка.Следующий() Цикл
       Сообщить(Выборка.РекИмя);
   КонецЦикла;
   
КонецЕсли;


только полюбому эту задачу можно решить совсем по другому
Программист всегда исправляет последнюю ошибку.