Переключение на Главную Страницу Страницы: 1 2 [3] 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) OleExSup- очередной костыль к семерке (число прочтений - 20408 )
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: OleExSup- очередной костыль к семерке
Ответ #30 - 09. Июля 2009 :: 13:49
Печать  
trad
Получаю из массива com-объекты.
Возвращаются циферки.
ПолучитьТип() возвращает 13.
Чего дальше делать? Как получить сам объект?
  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: OleExSup- очередной костыль к семерке
Ответ #31 - 09. Июля 2009 :: 14:09
Печать  
да, 13 - это VT_UNKNOWN
OleSafeArray не умеет работать с любыми com-объектами. Толко с ole.
Т.е. только VT_DISPATCH
Печаль
  

1&&2&&3
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: OleExSup- очередной костыль к семерке
Ответ #32 - 09. Июля 2009 :: 14:12
Печать  
trad писал(а) 09. Июля 2009 :: 14:09:
да, 13 - это VT_UNKNOWN
OleSafeArray не умеет работать с любыми com-объектами. Толко с ole.
Т.е. только VT_DISPATCH
Печаль

Спасибо. Так и думал.
Придумаем что-нибудь.
  
Наверх
ICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: OleExSup- очередной костыль к семерке
Ответ #33 - 09. Июля 2009 :: 16:28
Печать  
trad
Все порешалось. Еще раз спасибо. Улыбка
  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: OleExSup- очередной костыль к семерке
Ответ #34 - 10. Июля 2009 :: 04:48
Печать  
vip писал(а) 09. Июля 2009 :: 16:28:
Все порешалось.
как? в двух словах.
  

1&&2&&3
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: OleExSup- очередной костыль к семерке
Ответ #35 - 10. Июля 2009 :: 05:26
Печать  
Да, Андрей, расскажи. Я так понимаю, ты получаешь фигурки от компоненты Душелова?
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: OleExSup- очередной костыль к семерке
Ответ #36 - 10. Июля 2009 :: 06:41
Печать  
JohnyDeath писал(а) 10. Июля 2009 :: 05:26:
Да, Андрей, расскажи. Я так понимаю, ты получаешь фигурки от компоненты Душелова?

Пральна. Улыбка
И по подсказке trad'а Василий наладил компоненту.
Теперь все возвращается правильно, VT_DISPATCH

Кстати компонента плавно превращается в чудную вещь.
Близок час победы Улыбка
  
Наверх
ICQ  
IP записан
 
MrDen
Junior Member
**
Отсутствует



Сообщений: 50
Местоположение: Краснодар
Зарегистрирован: 19. Ноября 2008
Пол: Мужской
Re: OleExSup- очередной костыль к семерке
Ответ #37 - 31. Августа 2009 :: 19:45
Печать  
Спасибо автору! Выручила ВК для передачи массивов данных в ActiveX!
  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: OleExSup- очередной костыль к семерке
Ответ #38 - 04. Марта 2010 :: 09:16
Печать  
Новое в версии 1.0.0.6
Добавлены методы OLEExSup :: ПолучитьСвойство, УстановитьСвойство
OleExSup
  

1&&2&&3
Наверх
 
IP записан
 
Donat
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 152
Зарегистрирован: 29. Мая 2006
Re: OleExSup- очередной костыль к семерке
Ответ #39 - 04. Марта 2010 :: 17:50
Печать  
При попытке скачать, говорит: Публикация не активна Печаль
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: OleExSup- очередной костыль к семерке
Ответ #40 - 04. Марта 2010 :: 19:11
Печать  
Donat писал(а) 04. Марта 2010 :: 17:50:
При попытке скачать, говорит: Публикация не активна Печаль

сорри, поправил.

ps
как ни зайдешь на ИС так там каждый раз что то по другому.
я там теряюсь во всем множестве контекстных "фреймов"
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: OleExSup- очередной костыль к семерке
Ответ #41 - 05. Марта 2010 :: 06:32
Печать  
а понадобился мне это функционал для реализации заполнения листа Excel в один присест.
Код
Выбрать все
Excel=СоздатьОбъект("excel.application");
Книга=Excel.Workbooks.Add(ФайлШаблон);
ЛевоВерх=Excel.Cells(НачВыхСтр,1);
ПравоНиз=Excel.Cells(НачВыхСтр+ВсегоСтрокДанных-1,ВсегоКолонокДанных);
Диапазон=Excel.Range(ЛевоВерх, ПравоНиз);

Массив = СоздатьОбъект("OleSafeArray");
х);
//... тут заполнение массива (и строки и числа и даты)

OLEExSup.УстановитьСвойство(Диапазон,"Value",Массив);
Excel.Visible=-1; 

  

1&&2&&3
Наверх
 
IP записан
 
baxxik
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 23. Июня 2009
Re: OleExSup- очередной костыль к семерке
Ответ #42 - 27. Ноября 2012 :: 21:05
Печать  
Добрый день!

Возникла ситуация, когда приложение, успешно работающее под 1с8.х потребовалось реализовать на 1с 77

в кратце так:
есть wsdl схема:
Код
Выбрать все
<s:element name="SendBalanse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="_BalanceData" type="tns:ArrayBalanse"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ArrayOfBalanse">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="Balanse" nillable="true" type="tns: Balanse"/>
</s:sequence>
</s:complexType>
<s:complexType name="Balanse">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="SkuID" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="DistribID" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="ID" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="Nums" type="s:double"/>
</s:sequence>
</s:complexType> 



код 1с 8.х
Код
Выбрать все
Определение = Новый WSОпределения("ht_tp://localhost/Web.asmx?wsdl");
Сервис = Новый WSПрокси(Определение, Определение.Сервисы[0].URIПространстваИмен, Определение.Сервисы[0].Имя, "WebSoap" );
Фабрика = Сервис.ФабрикаXDTO;
СтрокаСессии = Сервис.AuthSession ("root","qwerty");
Остатки = Фабрика.Создать(Фабрика.Тип("ht_tp://localhost /Web.asmx","ArrayOfBalanse"));
Места = Фабрика.Создать(Фабрика.Тип("ht_tp://localhost /Web.asmx", "Balanse"));
 Склады.SkuID = 1;
Склады.WareHouseID = 3;
Склады. ID = 114;
Склады.Nums = 6;
Остатки. Balanse.Добавить(Места)
Сервис.SendBalanse (Остатки); //Отправляем 


Если выгрузить фабрику Остатки в XML то получаем
Код
Выбрать все
<ArrayOfBalanse xmlns="ht_tp://localhost/Web.asmx" xmlns:xs="ht_tp://w_ww.w3.org/2001/XMLSchema" xmlns:xsi="ht_tp://w_ww.w3.org/2001/XMLSchema-instance">
<Balanse>
		<SkuID>1</SkuID>
		<DistribID>3</DistribID>
		<ID>114</ID>
		<Nums>6</Nums>
	</Balanse>
</ArrayOfBalanse> 


На 1с8 все работает отлично.

Но проблема встала в реализации этого же на 7.7
Код
Выбрать все
OLEExSup = СоздатьОбъект("OLEExSup");
SOAPN = CreateObject( "MSSOAP.SoapClient30");
SOAPN.ClientProperty("Serverht_tpRequest", 1);
SOAPN.MSSOAPInit("ht_tp://localhost/Web.asmx?wsdl", "Web", "WebSoap");
Результат = OLEExSup.InvokeOLEMethod(SOAPN,"AuthSession","root","qwerty");
СтрокаДанных = "<ArrayOfBalanse xmlns=""ht_tp://localhost/Web.asmx"" xmlns:xs=""ht_tp://w_ww.w3.org/2001/XMLSchema"" xmlns:xsi=""ht_tp://w_ww.w3.org/2001/XMLSchema-instance"">
|<Balanse>
|		<SkuID>1</SkuID>
|		<DistribID>3</DistribID>
|		<ID>114</ID>
|		<Nums>6</Nums>
|	</Balanse>
|</ArrayOfBalanse>";

Результат = OLEExSup.InvokeOLEMethod(SOAPN,"SendBalanse",СтрокаДанных);
 


И на этом месте выдает ошибку: 0x80020005 : Несовпадение типов.

Подскажите пожалуйста - как мне передать в этот метод данные? И в каком формате это посылать??
Заранее спасибо!
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: OleExSup- очередной костыль к семерке
Ответ #43 - 28. Ноября 2012 :: 05:31
Печать  
Уверенности нет, но попробуй такой код:
Код
Выбрать все
	//создаем массив структур IDispatch
	Структура = СоздатьОбъект("Структура");
	Структура.Вставить("SkuID",1);
	Структура.Вставить("DistribID",3);
	Структура.Вставить("ID",114);
	Структура.Вставить("Nums",6);
	Массив = СоздатьОбъект("OleSafeArray");
	Массив.Создать(Массив.ТипыЗначений.VT_DISPATCH,1);
	Массив.УстановитьЗначение(0,Структура);


	OLEExSup = СоздатьОбъект("OLEExSup");
	SOAPN = CreateObject( "MSSOAP.SoapClient30");
	SOAPN.ClientProperty("Serverht_tpRequest", 1);
	SOAPN.MSSOAPInit("ht_tp://localhost/Web.asmx?wsdl", "Web", "WebSoap");

	СтрокаСессии = SOAPN.AuthSession("root","qwerty");//если метод получает и возвращает только типы которые 1с понимает, то использовать OLEExSup.InvokeOLEMethod необязательно

	Результат = OLEExSup.InvokeOLEMethod(SOAPN,"SendBalanse",Массив);
 

  

1&&2&&3
Наверх
 
IP записан
 
baxxik
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 23. Июня 2009
Re: OleExSup- очередной костыль к семерке
Ответ #44 - 28. Ноября 2012 :: 08:48
Печать  
trad писал(а) 28. Ноября 2012 :: 05:31:
Уверенности нет, но попробуй такой код:


Не сработало Печаль
Выдало

Результат = OLEExSup.InvokeOLEMethod(SOAPN,"SendBalanse",Массив);
{D:\TEST.ERT(310)}: 0x80004002 : Интерфейс не поддерживается

Какие еще есть идеи??? Печаль

делать на ServerXMLHTTP?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 
ОтправитьПечать