• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Дайнеко
  • Дата начала
Д

Дайнеко

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

Код:
Признак = Ложь;
Попытка
Признак = Док.Признак;
Исключение
КонецПопытки;

Так вот выдает ошибку времени выполнения. Не помогла и конструкция:
Код:
Попытка
Признак = Док[П_Поле];

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

Я надеюсь, что просто где-то настраивается поведение Попытки. А иначе зачем она нужна?
 
Д

Дайнеко

Спасибо. Сотворил:
Код:
Если П_Объект.Метаданные().Реквизиты.Найти(П_ИмяРеквизита) = Неопределено Тогда

А что с "Попытка". Выходит, для обращения к реквизитам не годится?
 
D

Darlock

С метаданными, к сожалению не работает
 
M

Mirage

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


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


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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!