Проверить, чей IDispatch получила ВК #551797


#0 by Rie
ВК интересуется - чей IDispatch (v7 или v8) она получила в Init. Как это проще всего проверить (кроме вопроса "А есть ли ТакойТо метод?")?
#1 by DmitrO
Никак. Ни какого другого документированного способа нет. На самом деле технически можно запросить спец. интерфейс по которому сама 1С определяет родные объекты, но во-первых он не документирован, во-вторых не известно еще есть ли этот интерфейс у объекта переданного в Init.
#2 by Rie
Что ж, придётся оставить обычный способ. А так хотелось чего-нибудь чудесного! :-) Спасибо.
#3 by DmitrO
Ну наверно есть масса способов через среду ОС. Типа получить имя текущего процесса, и т.п.
#4 by Rie
Это дольше, нежели спросить о наличии свойства/метода. А хотелось именно чудесного :-)
#5 by DmitrO
ну дык получение DISPID метода L"NewObject" и есть самый чудесный, имхо. :)
#6 by DmitrO
ну есть конечно вероятность что какой-нибудь умник в глобальном контексте 7.7 разместит функцию с таким именем :)
#7 by Rie
, Не взлетит :-( Под "чудесным" я имел в виду - в Init. А там до NewObject ещё не добраться. Придётся проверять уже "на местах" - то есть, непосредственно перед тем как обращаться к тому или иному.
#8 by orefkov
Почему не добраться? Тебе дают IDispatch, берешь у него свойство AppDispatch, ищешь метод NewObject. Или пытаешься создать объект "Справочник"
#9 by Rie
В Init я не могу взять AppDispatch. Мне же хотелось именно "чуда" - получить информацию уже в Init, чтобы потом тупо дёргать нужный вариант.
#10 by Rie
+ Хотелось не проверять, а сразу выбрать нужного наследника.
#11 by H A D G E H O G s
Тупо узнать версию exe-шника по ID процессу - гораздо быстрее
#12 by Rie
Точно. Даже PID не нужен. Тупо гляну в GetCommandLine - и всё узнаю.
#13 by H A D G E H O G s
Это некошерно.
#14 by H A D G E H O G s
По варварски как то. Тупо взять и глянуть. А тут ты можешь сказать - "пользователь, под версией 8.0.18.79 моя приблуда не работает"
#15 by Rie
Она как раз будет работать. Я хочу просто унаследоваться от объекта, который был для 7.7 и выбрать в Init нужного наследника. Но почему-то меня потянуло проверять наличие методов для этой полезной цели. в уже намекнул на более другие варианты - однако тут меня что-то заклинило. А получив из командной строки имя файла - дальше уж вытащить из него всё, что требуется, - дело техники.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям