Имя: Пароль:
1C
1С v8
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) питон годен, ксто :)
ну а на самом деле - для каждой задачи надо выбирать наиболее приемлемый и наименее трудозатратный метод ее решения. КД в моем случае, наверное, самый верный вариант