|
Вывести все реквизиты выбранного документа |
☑ |
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 параметр должен содержать массив строк реквизитов и только тех которые созданы программно.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший