Тип(Реквизит.Тип) = Тип("Строка") #300141


#0 by Shutov
Есть метаданные документа. Перебираю реквизиты (метаданных) табличной части и смотрю какого они типа. Преобразую сразу же полученный тип с помощью функции Тип и сравниваю с типом строки (см.ниже). Как только в Реквизите встречается сложный тип - например Ссылка на Справочник, то на условии "Если" код программы "вылетает" :(    Для Каждого Реквизит Из ТабЧастьМетаданные.Реквизиты Цикл Подскажите, пожалуйста, как бы проверить и обойти данную ситуацию? Понимаю, что нужны дополнительные проверки реквизита, но какие?
#1 by Serg343
Это сравнение  Если Тип(Реквизит.Тип) = Тип("Строка") Тогда изначально не верно....посмотри что возвращает "Реквизит.Тип". Можно попробовать так:    КонецЦикла; Однако в этом коде не учтено то что Тип("Справочникссылка.Номенклатура") в качестве параметра использует наименование справочника, а Реквизит.Тип содержит синоним справочника (объекта)
#2 by Serg343
Если же действительно нужно определить только тип строки, то достаточно: 1. Липо вставить Попытка....Исключение....КонецПопытки; 2. Найти(Реквизит.Тип, "Строка") вместо Тип(Реквизит.Тип) = Тип("Строка")
#3 by Wehrmacht
Если Реквизит.Тип.СодержитТип(Тип("Строка")) Тогда
#4 by Serg343
Гениально :)
#5 by Wehrmacht
Если же составные типы тоже необходимо исключить, то можно попробовать что-нибудь вроде
#6 by Serg343
не надо ))) Он пропускает составные типы на ура!
#7 by Serg343
т.е. проверяет!
#8 by BabySG
Вылетает, потому что ТипЗнч, а не тип должно быть...
#9 by BabySG
С 17.25 точно используется ТипЗнч, раньше было Тип
#10 by Serg_Volga
- что-то похожее видел у Гения1С тока с листингом страницы на 2 (миниГений :) )
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С