Имя: Пароль:
1C
1C 7.7
v7: Как узнать значение реквизита
0 tmpnikl
 
21.01.13
11:26
Если ТекущийЭлемент().Выбран() = 1 Тогда
    Сообщить(ТекущийЭлемент().Наименование);
    Колво_Док=Метаданные.Документ();
    Для к1=1 по Колво_Док Цикл
       Сообщить("Идентификатор:"+Метаданные.Документ(к1).Идентификатор);
        Сообщить("Синоним:"+Метаданные.Документ(к1).Синоним);
        Колво_РШ=Метаданные.Документ(к1).РеквизитШапки();
        Для  к2=1 по Колво_РШ Цикл
            Сообщить(Метаданные.Документ(к1).РеквизитШапки(к2));
// Вот здесь хотелось бы вывести значение реквизита Сообщить(Метаданные.Документ(к1).РеквизитШапки(к2).значение);
        КонецЦикла;        
    КонецЦикла;        
КонецЕсли;
1 vinogradъ
 
21.01.13
11:27
значение реквизита какого объекта?
2 Godofsin
 
21.01.13
11:28
сначала спозиционироваться на конкретном объекте
3 Андрей_Андреич
 
naïve
21.01.13
11:28
ПолучитьАтрибут(<?>);
Синтаксис:
ПолучитьАтрибут(<ИмяРеквизита>)
Назначение:
Получить значение реквизита по имени идентификатора. Возвращает значение реквизита.
Параметры:
<ИмяРеквизита> - строковое выражение, содержащее имя реквизита, как оно задано в конфигураторе.
4 tmpnikl
 
21.01.13
11:31
спасибо
5 tmpnikl
 
21.01.13
11:37
Что-то пишет ошибка в выражении..
ПолучитьАтрибут(Метаданные.Документ(к1).РеквизитШапки(к2))
6 dk
 
21.01.13
11:40
дык ты получитьатрибут должен применять к спозиционированному документу
либо в модуле самого документа выполнять
7 Mikeware
 
21.01.13
11:40
(5)1986?
8 tmpnikl
 
21.01.13
11:42
А если это модуль справочника, то как получить значение реквизита документа..
9 tmpnikl
 
21.01.13
11:42
я не знаю чтозначит в вашем сленге 1986
10 dk
 
21.01.13
11:44
(8) сам подумай хоть немного
вот в базе 10 000 документов, ты говоришь "хочу получить значение реквизита документа"
Спрашивается реквизит КАКОГО документа тебе 1 должна вернуть? )))
11 1Сергей
 
21.01.13
11:45
Метаданные - это структура документов, справочников etc. А тебе нужно спозиционироваться на конкретном объекте, заномером таким-то от такой-то даты
12 Mikeware
 
21.01.13
11:49
(9) год рождения - 86?
13 tmpnikl
 
21.01.13
11:54
Понял.., тогда переформулируем...Как можно построить цикл по всем значениям конкретного реквизита...
Для  к3=1 по Колво_значений(записей)этого документа Цикл

ПолучитьАтрибут(Метаданные.Документ(к1).РеквизитШапки(к2))

КонецЦикла;

Как правидьно надо спозиционировать...
14 1Сергей
 
21.01.13
11:54
(13) либо запросом, либо выборкой всех документов
15 dk
 
21.01.13
12:00
можно спозиционироваться на самом первом

Док = СоздатьОбъект("Документ." + Метаданные.Документ(к1).Идентификатор);
Если Док.ВыбратьДокументы() = 1 Тогда
      Сообщить("Идентификатор:"+Метаданные.Документ(к1).Идентификатор);
      Сообщить("Синоним:"+Метаданные.Документ(к1).Синоним);
      Колво_РШ=Метаданные.Документ(к1).РеквизитШапки();
      Для  к2=1 по Колво_РШ Цикл
            Сообщить(Метаданные.Документ(к1).РеквизитШапки(к2).Идентификатор);
            Сообщить(Док.ПолучитьАтрибут(Метаданные.Документ(к1).РеквизитШапки(к2).Идентификатор));
      КонецЦикла
КонецЕсли
16 tmpnikl
 
21.01.13
12:05
спасибо.. а я пытался через Метаданные.Документ(к1).РеквизитШапки(к2).ВыбратьДокументы(), что приводило к ошибке...
17 tmpnikl
 
21.01.13
12:07
Где-то, не помню точно, писали, чтоб пытались обходиться без команды "Создатьобъект", в каких случаях уже не помню...
18 Mikeware
 
21.01.13
12:14
(16) в данном случае к ошибке приводило не это...
19 tmpnikl
 
21.01.13
12:22
Ваш последующий ответ, уже можно догадаться.."не хватает мозгов..."
20 1Сергей
 
21.01.13
12:40
(17) у тебя создатьобъектофобия?
21 tmpnikl
 
21.01.13
12:50
нет е фобия, просто очередная стадия акцентуации
22 Mikeware
 
21.01.13
12:54
(21) говори проще: "обострение"
:-))
23 tmpnikl
 
21.01.13
12:57
На каком форуме поведёшься, того и наберёщься..., ладно пусть обострение, лишь бы не затупление...
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан