Подвела Попытка

Дайнеко

Well-known member
19.11.2009
951
0
#1
Есть общая процедура работающая с несколькими док-ми. И она работает с реквизитом, который может отсутствовать у некоторых:

Код:
Признак = Ложь;
Попытка
Признак = Док.Признак;
Исключение
КонецПопытки;
Так вот выдает ошибку времени выполнения. Не помогла и конструкция:
Код:
Попытка
Признак = Док[П_Поле];
Я в семерке всегда так делал. Что теперь? Как шустренько и универсально читать рекивзиты. Понимаю, что можно через метаданные проверить наличие реквизита, но громоздко это.
А еще хуже, когда надо записать в документ.
С попыткой легко:
Код:
Попытка
Док.СуммаНДС	= П_СуммаНДС;
Исключение КонецПопытки;
Док.Сумма	= П_Сумма;
Я надеюсь, что просто где-то настраивается поведение Попытки. А иначе зачем она нужна?
 

Дайнеко

Well-known member
19.11.2009
951
0
#3
Спасибо. Сотворил:
Код:
Если П_Объект.Метаданные().Реквизиты.Найти(П_ИмяРеквизита) = Неопределено Тогда
А что с "Попытка". Выходит, для обращения к реквизитам не годится?
 
M

Mirage

#5
Код:
Признак = Ложь;
ИмяРеквизита = "Признак";
СтруктураЗаполнения = Новый Структура(ИмяРеквизита,Неопределено);
ЗаполнитьЗначениеСвойств(СтруктураЗаполнения,Док);


Признак = ?(СтруктураЗаполнения[ИмяРеквизита] = Неопределено,Признак,СтруктураЗаполнения[ИмяРеквизита] );

Наверное можно как то так, В конфигураторе не проверял но должно отработать.