|
8.2 Соединение через COM. Получить Объект.Тип.Типы() | ☑ | ||
---|---|---|---|---|
0
pessok
10.02.12
✎
10:01
|
Всем доброго времени суток. Пытаюсь сделать перенос данных через COM и столкнулся с такой проблемой - не могу получить тип COM-объекта, чтобы в дальнейшем найти этот объект в приемнике через Метаданные.НайтиПоТипу()
Для Каждого ТЧ Из Выборка.Метаданные().ТабличныеЧасти Цикл Для Каждого СтрокаТЧ Из Выборка[ТЧ.Имя] Цикл НСтр = Док[ТЧ.Имя].Добавить(); Для Каждого Колонка Из Выборка.Метаданные().ТабличныеЧасти[ТЧ.Имя].Реквизиты Цикл Для Каждого КолонкаПриемник Из Док.Метаданные().ТабличныеЧасти[ТЧ.Имя].Реквизиты Цикл Если Колонка.Имя = КолонкаПриемник.Имя Тогда НСтр[КолонкаПриемник.Имя] = НайтиОбъектВПриемнике(Приемник, КолонкаПриемник.Тип.Типы(), СтрокаТЧ[Колонка.Имя]); КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КолонкаПриемник.Тип.Типы() возвращает ошибку чтения... Колонка.Тип.Типы() возвращает массив, как и должна... Куда ковырять? Заранее спасибо |
|||
1
Karavanych
10.02.12
✎
10:11
|
Я делал так: ИмяМетаданныхСубконто=ТекСубконто.Метаданные().Имя; - имя объекта
Лев(ТекСубконто.Метаданные().ПолноеИмя(),10)="Справочник" тогда - так определял тип объекта, справочник, перечисление и т.д. ТекСубконто- это ссылка на Ком-объект. ну и соответственно получить объект в текущей базе: Справочники[ИмяМетаданныхСубконто] Предупреждаю сразу - такой метод в цикле долго отрабатывает. у меня значений 200 обрабатывалось - минут 5. |
|||
2
vmv
10.02.12
✎
10:12
|
все что есть в сом тоже сом - помни ето
а вообще сократи вопрос до абзаца и более внгятно задай. ну типы и чо - ни нирвируй меня! |
|||
3
pessok
10.02.12
✎
10:14
|
(1) распарсить полученный тип - проблем нет. Проблема - получить этот тип
(2) Внятно задаю вопрос - как получить массив типов COM-объекта в удобоваримом для метода НайтиПоТипу() виде |
|||
4
Defender aka LINN
10.02.12
✎
10:16
|
(0) Ищи через имя метаданных.
Ну и какбе напрашивающийся вопрос: в вашей религии использование КД - это смертный грех, или таки можно замолить? |
|||
5
vmv
10.02.12
✎
10:16
|
(4) КД для слабаков)
|
|||
6
pessok
10.02.12
✎
10:18
|
(4) не грех есессна, но так уж была поставлена задача
так ведь я и ищу через имя метаданных, если внимательнее присмотреться :) |
|||
7
Defender aka LINN
10.02.12
✎
10:20
|
(6) Я готов на пиво поспорить, что задача звучит "передать данные".
Ну и по имени ты не ищешь. |
|||
8
vmv
10.02.12
✎
10:21
|
ключевое слово "хмл". хватит чушь юзать!
подумай над ним, тогда найти по типу можно сдать в утиль ит вообщек забыть про ету ересь, уже 2012, чувак и мыслить надо другими категориями. думай сам - я же думал и у меня все получилось |
|||
9
pessok
10.02.12
✎
10:22
|
(7) задача стоит именно так - по средствам прямого подключения к приемнику передавать документы регламентным заданием. неси пиво :)
если не трудно - ткни носом, где конкретно надо искать, голова что-то отказывается воспринимать как надо (8) хмл таки подразумевает некие действия от юзверя в большинстве своем, хоть и не всегда |
|||
10
vmv
10.02.12
✎
10:24
|
(9) бгг, СП открой и поищи по этому мему. боже с кем я тут живу - они пишут в заголовке темы 82 и ищут метаданные по имени, мдя
|
|||
11
pessok
10.02.12
✎
10:25
|
хотя чую я, что пошлю все нафик и сделаю на КД... но ответ на вопрос таки интересует до сих пор :)
|
|||
12
pessok
10.02.12
✎
10:25
|
(10) тебе есть что сказать по существу уже?)
|
|||
13
vmv
10.02.12
✎
10:26
|
секс с КД уместен, когда тебе нужно все и многа)
|
|||
14
Defender aka LINN
10.02.12
✎
10:26
|
(9) Я тебе открою большой секрет: обработки КД умеют и через COM работать. Где МОЕ пиво?
"хмл таки подразумевает некие действия от юзверя" - в каком месте, мне прямо интересно? |
|||
15
vmv
10.02.12
✎
10:27
|
(12) мои вразумительные ответы стоят денег, причем никто не требует деньги назад.
сейчас я не хочу барижить |
|||
16
pessok
10.02.12
✎
10:28
|
(14) мгм... вот насчет того, что обработки КД умеют работать через COM - по-подробнее если можно. Где почитать? А насчет пива - ты таки сформулировал вопрос неверно :)
|
|||
17
wPa
10.02.12
✎
10:29
|
(0) логично же - твоя база не знает типы подключенной базы и не может их разрешить.
Выход прост - в той базе куда подключаешься завести функции и вызывать их через ком Функция ТипКом(ОбъектСсылка) Экспорт Возврат Тип(ОбъектСсылка); КонецФункции Функция ТипЗнчКом(ОбъектСсылка) Экспорт Возврат ТипЗнч(ОбъектСсылка); КонецФункции Функция ОписаниеТиповПоТипамКом(МассивТиповПереданнный) Экспорт ОписаниеТповВозвращаемое = Новый ОписаниеТипов(МассивТиповПереданнный); Возврат ОписаниеТповВозвращаемое; КонецФункции ну это если с КД не работаешь ) |
|||
18
pessok
10.02.12
✎
10:31
|
(17) о, пасиба. хотя быб пояснил ПОЧЕМУ оно не находится. Заводить функции не буду. Пойду раскуривать КД лучше :)
|
|||
19
vmv
10.02.12
✎
10:33
|
какой безпринципный спец, то туда то сюда кидаетца.
еслди я сейчас начну пропагандировать питона - он станет его адептом? |
|||
20
pessok
10.02.12
✎
10:43
|
(19) питон годен, ксто :)
ну а на самом деле - для каждой задачи надо выбирать наиболее приемлемый и наименее трудозатратный метод ее решения. КД в моем случае, наверное, самый верный вариант |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |