Метод "Тип" у COM-объекта

1. PLAstic 295 23.07.14 10:41 Сейчас в теме
Коллеги, впал в затык уже три дня.

Подключаюсь к другой ИБ по COM. Соответственно, имею переменную с типом COMОбъект. Плотно работаю в удалённой конфигурации и надо бы сравнить, что некий объект той базы имеет тип "СправочникСсылка.ххх". Грамотно это делается примерно так:
ОбъектПодключения.Справочники.ТипВсеСсылки().СодержитТип(ТипОбъекта);

Теперь вопрос. Как получить эту самую переменную ТипОбъекта? Как получить тип объекта удалённой базы? Находил пару вариантов, но они деревенские. Через сравнение на содержание строки "Справочник".

Ссылка на метаданные объекта есть, ссылка на объект тоже есть.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. mrstomak 422 23.07.14 10:46 Сейчас в теме
ОбъектПодключения.ТипЗнч(КомОбъект) не работает?

вроде должно:
Встроенные функции языка (Script functions)
ТипЗнч (TypeOf)
Синтаксис:

ТипЗнч(<Значение>)
Параметры:

<Значение> (обязательный)

Тип: Произвольный.
Значение, тип которого необходимо получить.
Возвращаемое значение:

Тип: Тип.

Описание:

Получает тип значения.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
3. PLAstic 295 23.07.14 11:00 Сейчас в теме
(2) mrstomak, конечно, нет:
Метод объекта не обнаружен (ТипЗнч)

Это и англоязычные аналоги (Type, TypeOf) я перепробовал в самом начале.
Получается, что ни к каким функциям вообще в удалённой базе обратиться нельзя. А это гигантский раздел СП "Встроенные функции".
4. Allexe8.1 23.07.14 11:09 Сейчас в теме
(3) PLAstic, можно через метаданные попробовать:
ОбъектПодключения.Метаданные.Справочники.Содержит(КомОбъект.Метаданные());


Но лучше, наверное, будет все нужные данные из базы подключения за один раз получать
Greysvandir; zoytsa; PLAstic; +3 Ответить
6. PLAstic 295 23.07.14 11:16 Сейчас в теме
(4) Allexe8.1, да, так заработало. Я думаю, это самый прямой способ. Спасибо.
Данные за один заход получать не надо в этом случае. Я хочу получить список реквизитов объекта вообще.
Меня угнетает, что нельзя управлять содержимым РС СоответствиеОбъектовДляОбмена. Решил написать универсальную обработку, которая, используя узел и настройки плана обмена, позволяет выполнить ручное или полуавтоматическое сопоставление объектов.
8. 7OH 69 06.09.18 21:58 Сейчас в теме
(4) а как быть если по сути КомОбъект = неопределено ?
проверить на неопределено через подключение тоже не выходит
конструкцию
"Если объектКомПодключения = КомПодключение.Неопределено тогда"
тоже не пропускает.
5. PLAstic 295 23.07.14 11:09 Сейчас в теме
Думаю, решения нет. Нашёл в справке:

Именно поэтому NewObject работает, а TypeOf - нет.
9. AndreyMinakov 18.06.21 00:44 Сейчас в теме
(5) Список функций Com объекта не ограничен только теми, что перечислены в документации. Например, ЗначениеВСтрокуВнутр и XMLСтрока работают. Так что почему Тип не работает, непонятно.
7. zoytsa 23.07.14 11:21 Сейчас в теме
10. kanalya 109 05.10.21 11:46 Сейчас в теме
В общем, для получения значения типа "Тип" на стороне подключаемой базы родился такой франкенштейн:
СоединениеComCon.Справочники.Контрагенты.пустаяссылка().метаданные().стандартныереквизиты.ссылка.тип.типы().получить(0);
user1232941; +1 Ответить
11. itwork1c 18.01.22 16:23 Сейчас в теме
Как вариант!
СоединениеComCon.XMLТипЗнч(Источник.Организация).TypeName = Новый(XMLТип(Тип("СправочникСсылка.Организации")).ИмяТипа)
irvin12345; +1 Ответить
12. Abda 09.06.22 19:34 Сейчас в теме
СсылкаНаСОМОбъект.Метаданные().Name - вернет имя объекта, например "РеализацияТоваровИУслуг"
13. x_x 2 09.06.22 20:22 Сейчас в теме
Запрос =  База.NewObject("Запрос");//  Новый Запрос;  
	                                   Запрос.Текст = 
		                                   "ВЫБРАТЬ
		                                   |	Документ.Номер КАК Номер,
		                                   |	Документ.Дата КАК Дата,
		                                   |	Документ.Ссылка КАК Ссылка,
		                                   |	Документ.Проведен КАК Проведен,
		                                   |	Документ.ПометкаУдаления КАК ПометкаУдаления
		                                   |ИЗ
		                                   |	Документ."+ Элемент.Метаданные.Имя +" КАК Документ
		                                   |ГДЕ
		                                   |	Документ.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания";

Показать

вот так можно обходя елементы метаданных опять на стороне Com потом перетащить
QUID=Com База.String(ВыборкаДетальныеЗаписи.Ссылка.УникальныйИдентификатор());
и уже у себя в приемнике если между базами обмен сравнить.

а так имея QUID вы можете поиск по нему делать передавая как строку.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот