Как обычно получаем объект
Запрос = Подключение.NewObject("Запрос");
...
...
ТЗ = Запрос.Выполнить().Выгрузить();
Для Каждого СтрТЗ Из ТЗ Цикл
Сообщить("+Матаданные имя:"+СтрТЗ.Ссылка.Метаданные().Имя); //Работает!
Подключение.Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(СтрТЗ.Ссылка)); //Не работает, потому что тип - Comobject
Подключение.Документы.ТипВсеСсылки().СодержитТип(Подключение.TypeOf(СтрТЗ.Ссылка)); //Не работает, потому что тип - COM объект не умеет делать TypeOf, что странно
Как быть? Как узнать - ссылка полученная - это справочник, документ или еще что то?
А в запросе получить колонку "Справочник" или "Документ" или "Перечисление" можно?
И вот еще странность ТИПЗНАЧЕНИЯ() в данном запросе у меня вместо ожидаемого "Контрагенты" выдает "Контрагент". Если смотреть на справочник в конфигураторе 8.3, там есть "Представление объекта:" и там как раз написано Контрагент, а как же получить в запросе название типа, чтобы было так:
Иванов Иван Иванович | Справочник | Контрагенты |
ВЫБРАТЬ
Контрагенты.Ссылка КАК Ссылка,
Контрагенты.ГоловнойКонтрагент Как ГоловнойКонтрагент,
ТИПЗНАЧЕНИЯ(Контрагенты.ГоловнойКонтрагент) КАК ТИПЗНАЧЕНИЯ,
ПРЕДСТАВЛЕНИЕ(Контрагенты.ГоловнойКонтрагент) КАК ПРЕДСТАВЛЕНИЕ,
ПРЕДСТАВЛЕНИЕССЫЛКИ(Контрагенты.ГоловнойКонтрагент) КАК ПредставлениеСсылки,
ВЫРАЗИТЬ(Контрагенты.ГоловнойКонтрагент КАК Справочник.Контрагенты) КАК Справочник_Контрагенты
ИЗ
Справочник.Контрагенты КАК Контрагенты
H A D G E H O G
Задача такая: в запросе к реквизиту объекта получить вид и тип ссылочного типа. Реквизит может иметь составной тип данных.
Справочник | Контрагенты | Иванов Иван Иванович
Документ | РасходныйКссовыйОрдер | траливали
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший