Имя: Пароль:
1C
 
Проверка типа составного реквизита (8.3)
,
0 es3000
 
21.11.14
16:36
Помогите, пожалуйста, дописать код условия для проверки типа составного реквизита.

Значит есть составной реквизит, он может содержать любые значения: числа, стоки, ссылки на документы, ссылки на справочники и т.д.
Мне нужно проверить: если это ссылка на документ то делаем ...

Сейчас написан такой код:

ТипЗначения = ТипЗнч(об.реквизит.Ссылка);
ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипЗначения);
Если Метаданные.Документы.Содержит(ОбъектМетаданных) Тогда
...

Но не срабатывает, когда значение этого реквизита оказывается не ссылочного типа или он оказывается незаполненным.
Как добавить эти дополнительные проверки?
так как
1 olegves
 
21.11.14
16:38
типы().Выгрузить()
2 es3000
 
21.11.14
16:39
(1) а дальше что с этим делать?
3 Жан Пердежон
 
21.11.14
16:43
ошибка в первой строке:
ТипЗначения = ТипЗнч(об.реквизит)
4 es3000
 
21.11.14
16:46
(3) тогда ошибка в строке:

Если Метаданные.Документы.Содержит(ОбъектМетаданных) Тогда


текст ошибки: {Форма.Форма(41)}: Ошибка при вызове метода контекста (Содержит): Несоответствие типов (параметр номер '1')
Если Метаданные.Документы.Содержит(ОбъектМетаданных) Тогда
по причине:
Несоответствие типов (параметр номер '1')
5 es3000
 
21.11.14
16:50
(4)+
эта ошибка возникает для того объекта, у которого в реквизит записано число
6 Жан Пердежон
 
21.11.14
16:52
(4) ппц, ты код сам пишешь или из интернетов по кусочка копируешь?

Метаданные.НайтиПоТипу(ТипЗначения);
задайся вопросом, что вернет когда ТипЗначение - для примитивных типов
7 ssh2QQ6
 
21.11.14
16:54
(0)
ЭтоДокумент = Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(МояНепонятноКакаяСсылка));
http://kb.mista.ru/article.php?id=5
8 es3000
 
21.11.14
16:57
(6) не знаю что вернет, в СП не нашел
9 es3000
 
21.11.14
16:57
(7) спасибо, сейчас попробую
10 es3000
 
21.11.14
17:00
(7)+ сработало, спасибо
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс