Имя: Пароль:
1C
1С v8
Вывести все реквизиты выбранного документа
0 brenli
 
21.06.17
12:17
Доброго времени 1с 8.3 , как можно получить коллекцию реквизитов документа чтобы обойти их все?
1 Адский плющ
 
21.06.17
12:17
Метаданные.Документы.ТвойДокумент.Реквизиты
2 brenli
 
22.06.17
08:11
&НаСервере
Процедура ДокументПриИзмененииНаСервере(Док)
     ДокРеквизиты = Новый Массив;
     Если НЕ Док.Пустая() Тогда
         Для Каждого Рекв Из Док.Метаданные().Реквизиты Цикл
             Сообщить(Рекв);
         КонецЦикла;
     КонецЕсли;
    
КонецПроцедуры

Как получить значение реквизита?  Параметр Док - значение любого типа документа
3 Гипервизор
 
22.06.17
08:20
Док[Рекв.Имя]
4 Рэйв
 
22.06.17
08:23
щас еще про таб части вспомнит:-)
5 brenli
 
22.06.17
08:27
(4) нее ТЧ не надо
6 brenli
 
22.06.17
08:29
(3) спасибо
7 brenli
 
22.06.17
14:45
Ребята еще подскажите пжл

Процедура СоздатьРеквизитНаФорме(нРеквизиты, ЗначРек)
    
     ИзменитьРеквизиты(нРеквизиты);
     Сч = 0;
     Для Каждого Реквизит  Из нРеквизиты Цикл
        Сч = Сч + 1;
        Элемент = ЭтаФорма.Элементы.Добавить("Поле", Тип("ПолеФормы"), ЭтаФорма);
        Элемент.Вид = ВидПоляФормы.ПолеВвода;
         Элемент.ПутьКДанным = ЗначРек[Сч];
     КонецЦикла;
КонецПроцедуры    

Что не так? Реквизиты я создал, но поля элементы на форме не создаются или создается 1 и вылетает ошибка.
Что не так?
8 Адский плющ
 
22.06.17
14:51
Элемент = ЭтаФорма.Элементы.Добавить("Поле" + Сч, Тип("ПолеФормы"), ЭтаФорма);
9 brenli
 
23.06.17
09:37
Камрады еще прошу вашего совета..

&НаСервере
Процедура СоздатьРеквизитНаФорме(МассРекв, ЗначРек, УдРекв)
     ИзменитьРеквизиты(МассРекв);
     Сч = 0;
     Для Каждого Реквизит  Из МассРекв Цикл
        Элемент = ЭтаФорма.Элементы.Добавить("Поле" + Сч, Тип("ПолеФормы"), ЭтаФорма);
        Элемент.Вид = ВидПоляФормы.ПолеВвода;
        Элемент.ПутьКДанным = Реквизит.Имя;
        ЭтаФорма[Реквизит.Имя] = ЗначРек[Сч];
        Сч = Сч + 1;
    КонецЦикла;
КонецПроцедуры    

&НаСервере
Процедура ЗаписатьНаСервере()
КонецПроцедуры

&НаКлиенте
Процедура Записать(Команда)
    ЗаписатьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ДокументПриИзмененииНаСервере(Док)
     ДокРеквизиты = Новый Массив;
     ДокРеквИмя   = Новый Массив;
     ДокЗначРекв  = Новый Массив;
     Если НЕ Док.Пустая() Тогда
         Для Каждого Рекв Из Док.Метаданные().Реквизиты Цикл
              ДокЗначРекв.Добавить(Док[Рекв.Имя]);
              ДокРеквИмя.Добавить(Рекв.Имя);
              Реквизит = Новый РеквизитФормы(Рекв.Имя, Рекв.Тип, ,Рекв, Истина);
              ДокРеквизиты.Добавить(Реквизит);
          КонецЦикла;
          СоздатьРеквизитНаФорме(ДокРеквизиты, ДокЗначРекв,ДокРеквИмя);
     КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ДокументПриИзменении(Элемент)
    ДокументПриИзмененииНаСервере(Объект.Документ);
КонецПроцедуры


Как сделать удаление реквизитов чтобы при перевыборе документа не валились ошибки в неуникальных именах?
Во второй параметра метода я уже передавал значения реквизитов которые надо удалять, но после этого валится ошибка. Не может найти пути.  
В описании написано: Что 2 параметр должен содержать массив строк реквизитов и только тех которые созданы программно.