Имя: Пароль:
1C
1C 7.7
v7: Вызов веб сервиса из 7.7, msxml3.dll: Неопознанная ошибка
0 Gobo
 
16.04.19
12:10
Доброек время суток !

Не нашел открытой темы где обсуждался данный вопрос, поэтому открыл.
На клиенте установлен Windows 7 x64.

Пробовал так обращаться:

Процедура Выполнить()
    ПараметрыSoap="<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/""; xmlns:core=""http://core.webservice.config.core.auction.bas.com/"">;
   |<soapenv:Header/>
   |<soapenv:Body>
      |<core:createEntities>
        |  <auth_key>0c18fd768c0cdab0ee41d4c605314259dff9b8cf8c8e4c3a0cb1e24090482c963190d643fe58b75f1bcb45e05cd861c1</auth_key>
          |<secret_key>8724112f3bf585cbb872f77562d06920d9b613327267dbf4f9190e99f0e35a82</secret_key>        
          |<data_content>![CDATA[{""Организации"": [{
            |""Ref"": ""eaf3d8f2-5207-11e5-9b29-000c293829c4"",
            |""Код"": ""000000001"",
            |""Наименование"": ""ТОО Cloudmaker""}]}
            |]]
        |</data_content>
        |<!--Optional:-->
         |<batchId>201</batchId>
         |<!--Optional:-->
         |<data_type>json</data_type>
     |</core:createEntities>
   |</soapenv:Body>
|</soapenv:Envelope>";
                      
Сообщить("ПараметрыSoap="+ПараметрыSoap);

    об = СоздатьОбъект("MSXML2.XMLHTTP");
    об.open("POST", "https://presale.tophr.kz/corews?wsdl";);
    об.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    об.setRequestHeader("SOAPAction", "http://core.webservice.config.core.auction.bas.com/#CoreWebServiceImplService:CoreWebServiceImplPort";);
    
    об.send(ПараметрыSoap);
    
    
    Если об.Status=200 Тогда
        ТекстОтвета = об.responseXml;
    КонецЕсли;

КонецПроцедуры

Получаю ошибку:
Если об.Status=200 Тогда
{F:\SOAPSENDER.ERT(45)}: msxml3.dll: Неопознанная ошибка


Отладчик показывает что объект "об" пустой.
1 NikVars
 
16.04.19
12:21
Обновления все установлены? Не просит обновиться или перезагрузиться после установки обновлений?
2 Gobo
 
16.04.19
12:27
Если вопрос на счет обновления ОС, они отключены.
3 MadDAD
 
16.04.19
14:29
(0) попробовать перерегистрировать "msxml3.dll" ?
4 serpentt
 
16.04.19
15:01
у меня по httpS не получилось послать.
5 craxx
 
16.04.19
15:04
(0) ощущение что XML невалидный
6 trad
 
16.04.19
15:47
(5) +1
1. не хватает
<?xml version="1.0" encoding="windows-1251"?>
Без этого заголовка, xml по умолчанию считается в кодировке utf8
А строка с кириллицей собранная в 77 имеет кодировку ANSI.

2. <soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"";; xmlns:core=""http://core.webservice.config.core.auction.bas.com/"">;;
тут - никаких точек_с_запятой

Но у автора проблема, пока, не в этом
7 trad
 
16.04.19
15:50
об.open("POST", "https://presale.tophr.kz/corews?wsdl";;);
тут какой-то странный код
и если делаем вызов метода soap, то причем тут wsdl
8 trad
 
16.04.19
15:51
дурацкий форум - мудит с ;
9 trad
 
16.04.19
15:53
офф тест
"Строка с одной тзп";
"http Строка с одной тзп";
"http://Строка с одной тзп";
10 trad
 
16.04.19
15:54
11 trad
 
16.04.19
15:56
офф тест3
"http://aa.bb.cc/";
12 Gobo
 
17.04.19
07:02
(6)
Исправлены,
    ПараметрыSoap="<?xml version=""1.0"" encoding=""windows-1251""?>
    |<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/""; xmlns:core=""http://core.webservice.config.core.auction.bas.com/"">;
   |<soapenv:Header/>
   |<soapenv:Body>
      |<core:createEntities>
        |  <auth_key>0c18fd768c0cdab0ee41d4c605314259dff9b8cf8c8e4c3a0cb1e24090482c963190d643fe58b75f1bcb45e05cd861c1</auth_key>
          |<secret_key>8724112f3bf585cbb872f77562d06920d9b613327267dbf4f9190e99f0e35a82</secret_key>        
          |<data_content>![CDATA[{""Организации"": [{
            |""Ref"": ""eaf3d8f2-5207-11e5-9b29-000c293829c4"",
            |""Код"": ""000000001"",
            |""Наименование"": ""ТОО Cloudmaker""}]}
            |]]
        |</data_content>
        |<!--Optional:-->
         |<batchId>201</batchId>
         |<!--Optional:-->
         |<data_type>json</data_type>
     |</core:createEntities>
   |</soapenv:Body>
|</soapenv:Envelope>";
13 Gobo
 
17.04.19
07:03
Точки запятые форум добавляет, я без них вставлял.
14 Gobo
 
17.04.19
07:07
(1) Все обновления сделал, результат тот же.
15 Gobo
 
17.04.19
07:08
На 8-ке у меня код так реализован:

Определения = Новый WSОпределения(«адрес моего сервиса»);
Прокси = Новый WSПрокси(Определения, «http://core.webservice.com/»,»CoreWebServiceImplService»,»CoreWebServiceImplPort»);
Схема=»http://www.w3.org/2001/XMLSchema»;

ТекТекст=»Тут содержимое передаваемого документа»;

ТипXDTO_data_content = Прокси.ФабрикаXDTO.Тип(Схема, «string»);
ОбъектXDTO_data_content = Прокси.ФабрикаXDTO.Создать(ТипXDTO_data_content,ТекТекст);

ТипXDTO_batchId = Прокси.ФабрикаXDTO.Тип(Схема, «int»);
ОбъектXDTO_batchId = Прокси.ФабрикаXDTO.Создать(ТипXDTO_batchId,201);

ТипXDTO_data_type = Прокси.ФабрикаXDTO.Тип(Схема, «string»);
ОбъектXDTO_data_type = Прокси.ФабрикаXDTO.Создать(ТипXDTO_data_type,»XML»);

ДанныеОтправки = Прокси.createEntities(ОбъектXDTO_data_content, ОбъектXDTO_batchId, ОбъектXDTO_data_type);
Сообщить(ДанныеОтправки);
16 Gobo
 
17.04.19
07:18
(7) как мне тут указать, чтобы он вызвал метод - createEntities ?

Сервис находиться тут:
https://presale.tophr.kz/corews?wsdl
17 trad
 
17.04.19
08:05
Неопознанная ошибка на об.status?
18 Gobo
 
17.04.19
12:35
(17) да,

и объект пустой в отладчике.
19 trad
 
17.04.19
16:59
//*******************************************
Процедура Сформировать()
    
    ПараметрыSoap = "<?xml version=""1.0"" encoding=""windows-1251""?>
    |<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/""; xmlns:core=""http://core.webservice.config.core.auction.bas.com/"">;
    |<soapenv:Header/>
    |<soapenv:Body>
    |<core:createEntities>
    |<auth_key>0c18fd768c0cdab0ee41d4c605314259dff9b8cf8c8e4c3a0cb1e24090482c963190d643fe58b75f1bcb45e05cd861c1</auth_key>
    |<secret_key>8724112f3bf585cbb872f77562d06920d9b613327267dbf4f9190e99f0e35a82</secret_key>
    |<data_content>![CDATA[{""Организации"": [{
    |""Ref"": ""eaf3d8f2-5207-11e5-9b29-000c293829c4"",
    |""Код"": ""000000001"",
    |""Наименование"": ""ТОО Cloudmaker""}]}
    |]]
    |</data_content>
    |<batchId>201</batchId>
    |<data_type>json</data_type>
    |</core:createEntities>
    |</soapenv:Body>
    |</soapenv:Envelope>
    |";
    
    Query = СоздатьОбъект("Msxml2.XMLHTTP");
    Query.open("POST", "https://presale.tophr.kz/corews";, 0);
    Query.setRequestHeader("Content-Type", "text/xml; charset=windows-1251");
    Query.setRequestHeader("SOAPAction", "http://core.webservice.config.core.auction.bas.com/#CoreWebServiceImplService:CoreWebServiceImplPort";);
    Query.send(ПараметрыSoap);
    
    Если Query.status <> 200 Тогда
        Сообщить(Query.status);
        Сообщить(Query.statusText);
    Иначе
        Сообщить("Ok");
        //Сообщить(Query.responseXml);
        Сообщить(Query.responseText);
    КонецЕсли;

КонецПроцедуры
20 trad
 
17.04.19
16:59
21 trad
 
17.04.19
17:00
Windows 7 32
обновления все установлены
22 Gobo
 
18.04.19
07:19
(19) Спасибо большое, работает !
Хочу в качестве спасибо отправить 0.003 BTC, если напишешь адрес.

Получается моя ошибка была в этой строке:
Query.open("POST", "https://presale.tophr.kz/corews",0);

На счет библиотеки, у клиентов могут быть с этим проблемы.
Можно эту обработку переделать на использование библиотеки - v7plus.dll ?
23 Ёпрст
 
18.04.19
07:34
(22) храни все нужные библиотеки в самой ert в мокселе, при старте поделкии проверяй их наличие в системе, при отсутствии извлекай и устанавливай.  И v7plus.dll тоже может быть не зарегена. Проще 1cpp использовать, там есть встроенный xml
24 Ёпрст
 
18.04.19
07:36
Хотя, тебе нужна mxmln3 и ее методы. Храни ее и извлекай/регистрируй при необходимости
25 trad
 
18.04.19
09:39
(22) "Хочу в качестве спасибо отправить 0.003 BTC, если напишешь адрес."
спасибо, не надо
26 trad
 
18.04.19
09:40
(23) "храни все нужные библиотеки в самой ert в мокселе,"
ТС, не делай так никогда
27 trad
 
18.04.19
09:46
(22) "Можно эту обработку переделать на использование библиотеки - v7plus.dll ?" можно, но я ей не пользуюсь

использую компонентами windows. на современных win все это есть

Во-первых Msxml2.XMLHTTP имеет .responseXml - там готовый DOM-документ, бери да перебирай, хочешь просто перебором, хочешь xpath-ами

Во-вторых .send(ПараметрыSoap) на вход умеет получать не только строку, но и тот же DOM-документ
28 trad
 
18.04.19
09:49
29 Gobo
 
18.04.19
11:56
(27) Да, дом это хорошо.
На VBA его часто использую.
30 Gobo
 
18.04.19
13:42
B код читабельнее:
[CODE]

Процедура Выполнить()

    myDOMdoc = СоздатьОбъект("Msxml2.DOMDocument");
    myDOMdoc.appendChild(myDOMdoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""windows-1251"""));

    elSoapenv=myDOMdoc.createElement("soapenv:Envelope");
    
    attrEnvel = myDOMdoc.createAttribute("xmlns:soapenv");
    attrEnvel.nodeValue = "http://schemas.xmlsoap.org/soap/envelope/";;
    elSoapenv.setAttributeNode(attrEnvel);
    
    attrEnvel = myDOMdoc.createAttribute("xmlns:core");
    attrEnvel.nodeValue = "http://core.webservice.config.core.auction.bas.com/";;
    elSoapenv.setAttributeNode(attrEnvel);
    
    elHead=myDOMdoc.createElement("soapenv:Header");
    elSoapenv.appendChild(elHead);

    elBody=myDOMdoc.createElement("soapenv:Body");
    elCrentit=myDOMdoc.createElement("core:createEntities");
    
    elAuthkey=myDOMdoc.createElement("auth_key");
    elAuthkey.text = "0c18fd768c0cdab0ee41d4c605314259dff9b8cf8c8e4c3a0cb1e24090482c963190d643fe58b75f1bcb45e05cd861c1";
    elCrentit.appendChild(elAuthkey);

    elSecrkey=myDOMdoc.createElement("secret_key");
    elSecrkey.text = "8724112f3bf585cbb872f77562d06920d9b613327267dbf4f9190e99f0e35a82";
    elCrentit.appendChild(elSecrkey);

    elData=myDOMdoc.createElement("data_content");
    elData.text = "<![CDATA[<Root_1C>
    |<Header>
    |    <ExchangePlan>TestObmen</ExchangePlan>
    |    <To>Приемник</To>
    |    <From>Источник</From>
    |    <Root_1СNo>13</Root_1СNo>
    |    <ReceivedNo>0</ReceivedNo>
    |</Header>
    |</Root_1C>
    |]]>";
    elCrentit.appendChild(elData);
        
    elbatchId=myDOMdoc.createElement("batchId");
    elbatchId.text = "201";
    elCrentit.appendChild(elbatchId);

    elDatatype=myDOMdoc.createElement("data_type");
    elDatatype.text = "xml";
    elCrentit.appendChild(elDatatype);
    
    elBody.appendChild(elCrentit);
    
    elSoapenv.appendChild(elBody);
    
    
    myDOMdoc.appendChild(elSoapenv);
        
    Сообщить("myDOMdoc.xml="+myDOMdoc.xml);


    Query = СоздатьОбъект("MSXML2.XMLHTTP");
    Query.open("POST", "https://presale.tophr.kz/corews",0);
    Query.setRequestHeader("Content-Type", "text/xml; charset=windows-1251");
    //Query.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    Query.setRequestHeader("SOAPAction", "http://core.webservice.config.core.auction.bas.com/#CoreWebServiceImplService:CoreWebServiceImplPort";);
    
    Query.send(myDOMdoc);
    
    
    Если Query.Status<>200 Тогда
        Сообщить(Query.status);
        Сообщить(Query.statusText);
    Иначе
        Сообщить("Ok");
        Сообщить(Query.responseText);
    КонецЕсли;


КонецПроцедуры

[/CODE]
31 Ёпрст
 
18.04.19
18:10
(26) почему ?
32 trad
 
19.04.19
09:53
(31) совершенно не нужное шаманство, усложняющее систему без необходимости
33 Ёпрст
 
19.04.19
11:42
(32) ааа.. я то думал, что-то религиозное, может :)
Основная теорема систематики: Новые системы плодят новые проблемы.