Имя: Пароль:
1C
1С v8
Тип("....") как использовать в СОМ - соединении
,
0 Sasha_H
 
14.06.13
10:48
Есть СОМ-соединение к другой ИБ. Необходимо собрать СКД и исполнить это все дело на стороне СОМ-базы. Натолкнулся вот на такую проблему:

ИсточникДанных = СхемаКомпоновкиCOM.ИсточникиДанных.Добавить();
   ИсточникДанных.Имя = "ИсточникДанных1";
   ИсточникДанных.ТипИсточникаДанных = "Local";
   
   НаборДанных = СхемаКомпоновкиCOM.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));

Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"), как типизироваться со стороны СОМ?

СоединениеBase_COM.Тип("НаборДанныхЗапросСхемыКомпоновкиДанных") - не помагает

пробовал юзать XMLТип(), но ошибочно так как возвращает этот метод не тот тип.

Разве надо для этого использовать специализированную функцию в другой ИБ которая вернеть мне нужный тип?
1 hhhh
 
14.06.13
11:08
да, конечно, нужно тип из другой ИБ. Просто Тип() по-любому не прокатит - это не тот тип, в другой ИБ таких типов нет.

попробуй по английски написать

СоединениеBase_COM.Type
2 Sasha_H
 
14.06.13
11:30
(1)
{ВнешняяОбработка.СравнениеБазCOMСоединение.МодульОбъекта(20)}: Метод объекта не обнаружен (Type)
   НаборДанных = СхемаКомпоновкиCOM.НаборыДанных.Добавить(СоединениеBase_COM.Type("НаборДанныхЗапросСхемыКомпоновкиДанных"));
3 Serginio1
 
14.06.13
11:54
Используйте внешние отчеты. С ними все намного проще
v8: Можно ли по OLE выполнять запросы из 1с 7.7 в 1с 8.2
4 Sasha_H
 
14.06.13
11:54
Это не ОЛЕ! а СОМ-соединение!
5 Sasha_H
 
14.06.13
11:55
(3) Запрос я знаю чито можно, мне надо схему СКД собрать!
6 Ковычки
 
14.06.13
11:56
СоединениеBase_COM.Вычислить("Тип(""НаборДанныхЗапросСхемыКомпоновкиДанных"")")
?
7 Sasha_H
 
14.06.13
11:57
Здесь встретиол аналогичную проблему, правда человек так ине понял почему у него не работает: http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=588208

КС_Э = DataSource.NewObject("КвалификаторыСтроки",250);
   Массив_Э = DataSource.NewObject("Массив");
   Массив_Э.Добавить(Тип("Строка"));
   ОписаниеТиповС_Э = DataSource.NewObject("ОписаниеТипов",Массив_Э,Неопределено,КС_Э);
8 Sasha_H
 
14.06.13
11:58
(6) метод объекта не обнаружен Вычислить
9 shurikvz
 
14.06.13
11:59
XMLТип()
ИзXMLТипа()
10 Sasha_H
 
14.06.13
11:59
(9) смотри в (0) пробовал юзать XMLТип(), но ошибочно так как возвращает этот метод не тот тип.
11 Sasha_H
 
14.06.13
12:03
Я понял, тут видимо функцию делать чтобы возвращала нужный тип из Вне, либо запросами по-старинке.
12 Serginio1
 
14.06.13
12:05
(4) А какая разница? Вызвать внешний отчет ты можешь и через V8x.COMConnector
13 shurikvz
 
14.06.13
12:05
(10) ?
а какой?

ИмяТипаСтрокой = XMLТип(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных")).ИмяТипа;
НаборДанных = СхемаКомпоновкиCOM.НаборыДанных.Добавить(СоединениеCOM.ИзXMLТипа(ИмяТипаСтрокой, ""));
14 Sasha_H
 
14.06.13
12:07
(13) XMLТип(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных")) - это уже падает  НЕОПРЕДЕЛЕНо возвращает
15 Ковычки
 
14.06.13
12:09
16 Sasha_H
 
14.06.13
12:18
(15) спс, то что надо!

Функция ТипВнешнегоСоединения(ИмяТипа)
   
   Описатель = СоединениеBase_COM.NewObject("ОписаниеТипов",ИмяТипа);
   НужныйТип = Описатель.Типы().Получить(0);
   
   Возврат НужныйТип;
КонецФункции
17 shurikvz
 
14.06.13
18:36
(14) Объяснили. Моя невнимательность. Не XMLТип(), а СериализаторXDTO.XMLТип(). Вот так правильно:
   
ТипXML = СериализаторXDTO.XMLТип(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
   //НаборДанных = СхемаКомпоновкиCOM.НаборыДанных.Добавить(Соединение.СериализаторXDTO.ИзXMLТипа(ТипXML));
   НаборДанных = СхемаКомпоновкиCOM.НаборыДанных.Добавить(СоединениеCOM.СериализаторXDTO.ИзXMLТипа(ТипXML.ИмяТипа, ТипXML.URIПространстваИмен));