Коллеги, впал в затык уже три дня.
Подключаюсь к другой ИБ по COM. Соответственно, имею переменную с типом COMОбъект. Плотно работаю в удалённой конфигурации и надо бы сравнить, что некий объект той базы имеет тип "СправочникСсылка.ххх". Грамотно это делается примерно так:
Теперь вопрос. Как получить эту самую переменную ТипОбъекта? Как получить тип объекта удалённой базы? Находил пару вариантов, но они деревенские. Через сравнение на содержание строки "Справочник".
Ссылка на метаданные объекта есть, ссылка на объект тоже есть.
Подключаюсь к другой ИБ по COM. Соответственно, имею переменную с типом COMОбъект. Плотно работаю в удалённой конфигурации и надо бы сравнить, что некий объект той базы имеет тип "СправочникСсылка.ххх". Грамотно это делается примерно так:
ОбъектПодключения.Справочники.ТипВсеСсылки().СодержитТип(ТипОбъекта);
Теперь вопрос. Как получить эту самую переменную ТипОбъекта? Как получить тип объекта удалённой базы? Находил пару вариантов, но они деревенские. Через сравнение на содержание строки "Справочник".
Ссылка на метаданные объекта есть, ссылка на объект тоже есть.
По теме из базы знаний
- Получение информации об экспортных свойствах и методах объектов 1С через COM.
- Перехват методов серверных (x64) контекстов с использованием DynamicWrapperX
- Разработка внешних компонент на ассемблере goAsm
- Эволюция расширения конфигурации
- Конвертация файлов .docx в формат pdf средствами COM-объекта MS Word
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ОбъектПодключения.ТипЗнч(КомОбъект) не работает?
вроде должно:
Встроенные функции языка (Script functions)
ТипЗнч (TypeOf)
Синтаксис:
ТипЗнч(<Значение>)
Параметры:
<Значение> (обязательный)
Тип: Произвольный.
Значение, тип которого необходимо получить.
Возвращаемое значение:
Тип: Тип.
Описание:
Получает тип значения.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
вроде должно:
Встроенные функции языка (Script functions)
ТипЗнч (TypeOf)
Синтаксис:
ТипЗнч(<Значение>)
Параметры:
<Значение> (обязательный)
Тип: Произвольный.
Значение, тип которого необходимо получить.
Возвращаемое значение:
Тип: Тип.
Описание:
Получает тип значения.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
(2) mrstomak, конечно, нет:
Это и англоязычные аналоги (Type, TypeOf) я перепробовал в самом начале.
Получается, что ни к каким функциям вообще в удалённой базе обратиться нельзя. А это гигантский раздел СП "Встроенные функции".
Метод объекта не обнаружен (ТипЗнч)
Это и англоязычные аналоги (Type, TypeOf) я перепробовал в самом начале.
Получается, что ни к каким функциям вообще в удалённой базе обратиться нельзя. А это гигантский раздел СП "Встроенные функции".
(4) Allexe8.1, да, так заработало. Я думаю, это самый прямой способ. Спасибо.
Данные за один заход получать не надо в этом случае. Я хочу получить список реквизитов объекта вообще.
Меня угнетает, что нельзя управлять содержимым РС СоответствиеОбъектовДляОбмена. Решил написать универсальную обработку, которая, используя узел и настройки плана обмена, позволяет выполнить ручное или полуавтоматическое сопоставление объектов.
Данные за один заход получать не надо в этом случае. Я хочу получить список реквизитов объекта вообще.
Меня угнетает, что нельзя управлять содержимым РС СоответствиеОбъектовДляОбмена. Решил написать универсальную обработку, которая, используя узел и настройки плана обмена, позволяет выполнить ручное или полуавтоматическое сопоставление объектов.
В общем, для получения значения типа "Тип" на стороне подключаемой базы родился такой франкенштейн:
СоединениеComCon.Справочники.Контрагенты.пустаяссылка().метаданные().стандартныереквизиты.ссылка.тип.типы().получить(0);
Запрос = База.NewObject("Запрос");// Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Документ.Номер КАК Номер,
| Документ.Дата КАК Дата,
| Документ.Ссылка КАК Ссылка,
| Документ.Проведен КАК Проведен,
| Документ.ПометкаУдаления КАК ПометкаУдаления
|ИЗ
| Документ."+ Элемент.Метаданные.Имя +" КАК Документ
|ГДЕ
| Документ.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания";
Показатьвот так можно обходя елементы метаданных опять на стороне Com потом перетащить
QUID=Com База.String(ВыборкаДетальныеЗаписи.Ссылка.УникальныйИдентификатор());
и уже у себя в приемнике если между базами обмен сравнить.
а так имея QUID вы можете поиск по нему делать передавая как строку.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот