Доброго времени суток всем читающим! Друзья, помогите разобраться в данном вопросе. в одном из филлиалов компании где я работаю имеется такой раритет как 1С 7.7 Рарус, для торговли достаточно, на фронтах Кристалл 5, но из-за 54-фз теперь возникла необходимость перейти на Кристалл 10, поставлена мне задача разобраться и настроить обмен с этим 10-м крисом, покопавшись, выяснилось что обмены идут в двух форматах, 1 это файловый xml и 2 черзе веб сервис. 1 вариант отмели сразу, так как в 10 кристалле загрузка маркетинговых акций возможно только через веб сервис. Покопался, почитал мануалы, действий у меня оказалось всего 3:
1. Выгрузить данные в структур xml,
2. Закодировать в Base64
3. Подключится к вебсервису по MSSOAP.SoapClient30 и выплюнуть в кристалл 10 строку Base 64.
сам не особо много работал с клюшкой, так по мелочам обычно, с 1 и 2 пунктами разобрался, 7.7 выгружает и кодирует, все гуд, а вот с 3-им пунктом заморочка, подключится к MSSOAP.SoapClient30 получилось, а вот какими методами оперировать не понятно. информации по MSSOAP.SoapClient30 имено по методам не нашел. Подскажите как сделать выгрузку строки в MSSOAP.SoapClient30 или где почитать о методах работы. Само подключение нарыл на просторах тырнета:
1. Выгрузить данные в структур xml,
2. Закодировать в Base64
3. Подключится к вебсервису по MSSOAP.SoapClient30 и выплюнуть в кристалл 10 строку Base 64.
сам не особо много работал с клюшкой, так по мелочам обычно, с 1 и 2 пунктами разобрался, 7.7 выгружает и кодирует, все гуд, а вот с 3-им пунктом заморочка, подключится к MSSOAP.SoapClient30 получилось, а вот какими методами оперировать не понятно. информации по MSSOAP.SoapClient30 имено по методам не нашел. Подскажите как сделать выгрузку строки в MSSOAP.SoapClient30 или где почитать о методах работы. Само подключение нарыл на просторах тырнета:
СервисСОАП = CreateObject("MSSOAP.SoapClient30");
СервисСОАП.MSSoapInit("http://чччч.чччч.ччч.ччч:8090/SET-ERPIntegration/SET/WSGoodsCatalogImport?wsdl");
СервисСОАП.ConnectorProperty("AuthUser","ххххххххххх");
СервисСОАП.ConnectorProperty("AuthPassword","ххххх");
СервисСОАП.ConnectorProperty("WinHTTPAuthScheme",1);
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
request = ;
Результат = СервисСОАП.getGoodsCatalog(request);
мне кажется что тут надо что то дописать, но вот запрос какой должен быть. через Soap UI нашел что в этом объекте используется
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:plug="http://plugins.products.ERPIntegration.crystals.ru/">
<soapenv:Header/>
<soapenv:Body>
<plug:getGoodsCatalog>
<goodsCatalogXML>cid:1217189240965</goodsCatalogXML>
</plug:getGoodsCatalog>
</soapenv:Body>
</soapenv:Envelope>
вот такой запрос, но не знаю правильна ли моя догадка.
<soapenv:Header/>
<soapenv:Body>
<plug:getGoodsCatalog>
<goodsCatalogXML>cid:1217189240965</goodsCatalogXML>
</plug:getGoodsCatalog>
</soapenv:Body>
</soapenv:Envelope>
Функция ЗапросОчередногоЕКК()
xmlDoc = CreateObject("Msxml2.DOMDocument");
xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""" ));
root = xmlDoc.createElement("soap:Envelope");
root.setAttribute("xmlns:soap", "http://schemas.xmlsoap.org/soap/envelope/");
root.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
root.setAttribute("xmlns:xsd", "http://www.w3.org/2001/XMLSchema");
root.setAttribute("xmlns:tns", "http://www.чччч/Partners");
body = root.appendChild(xmlDoc.createElement("soap:Body"));
GetEKK = body.appendChild(xmlDoc.createElement("tns:GetNextEKK"));
xmlDoc.documentElement = root;
xmlDoc.save("D:\temp\GetEKK.xml");
Возврат xmlDoc.xml;
КонецФункции // ЗапросОчередногоЕКК
xmlHTTP = CreateObject("MSXML2.XMLHTTP");
xmlHTTP.open("POST", "http://чччч.чччч/чччч/чччч", 0, "WS_SAP", "чччч");
xmlHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHTTP.setRequestHeader("SOAPAction", "http://www.чччч/Partners#GetEKK:GetNextEKK");
Попытка
xmlHTTP.send(ЗапросОчередногоЕКК());
Исключение
Предупреждение("Ошибка " + ОписаниеОшибки() ,60);
Возврат;
КонецПопытки;
Если xmlHTTP.status = 200 Тогда
res = xmlHTTP.responseXML.SelectSingleNode("//m:return").text;
Сообщить(res);
Иначе
Сообщить(xmlHTTP.statusText);
КонецЕсли;
Показатьэто нужно ?
похоже дело не в запросе, тулза которую рекомендуют использовать разрабы SetRetail10 посылает не xml файл
Но возникает вопрос. Правильно ли я понял?
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:plug="http://plugins.products.ERPIntegration.crystals.ru/">
<soapenv:Header/>
<soapenv:Body>
<plug:getGoodsCatalog>
<goodsCatalogXML>cid:1217189240965</goodsCatalogXML>
</plug:getGoodsCatalog>
</soapenv:Body>
</soapenv:Envelope>
где значение <soapenv:Header/>
<soapenv:Body>
<plug:getGoodsCatalog>
<goodsCatalogXML>cid:1217189240965</goodsCatalogXML>
</plug:getGoodsCatalog>
</soapenv:Body>
</soapenv:Envelope>
cid:1217189240965
и есть сама зашифрованная строка.
Но возникает вопрос. Правильно ли я понял?
покопался еще в тырнете нашел вот это http://1c-programmer-blog.ru/programmirovanie/poluchenie-dannyx-ot-soap-veb-servisa-iz-1s-7-7.html
сделал вот такт
но на возникает вот такая ошибка
сделал вот такт
СервисСОАП = СоздатьОбъект("MSSOAP.SoapClient30");
СервисСОАП.MSSoapInit("http://xxxxxx/xxxxxxxx/xxxx//SET-ERPIntegration/SET/WSGoodsCatalogImport?wsdl");
СервисСОАП.ConnectorProperty("AuthUser","xxxxxxx");
СервисСОАП.ConnectorProperty("AuthPassword","xxxxxxx");
СервисСОАП.ConnectorProperty("WinHTTPAuthScheme",1);
//ОтветСервиса = СервисСОАП.getGoodsCatalog();
зп = "<?xml version=""1.0"" encoding=""UTF-8"">
|<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:plug=""http://plugins.products.ERPIntegration.crystals.ru/""
|<soapenv:Header/>
|<soapenv:Body>
| <plug:getGoodsCatalog>
| <goodsCatalogXML>"+Стр+"</goodsCatalogXML>
| </plug:getGoodsCatalog>
|</soapenv:Body>
|</soapenv:Envelope>";
об = СоздатьОбъект("MSXML2.XMLHTTP");
об.open("POST", "http://servername/basename/ru_RU/ws/Clients", 0, "Login", "Password");
об.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
об.setRequestHeader("SOAPAction", "http://servername/basename/ru_RU/wsclients#Clients:method_name");
об.send(зп);
Сообщить(об);
Показатьно на
об.send(зп);
msxml3.dll: Системная ошибка: -2146697211.
почему валится не понятно.
Вот здесь есть пример работы с веб сервисами из 7.7
Использование сборок .NET в 1С 7.x b 8.x. Создание внешних Компонент.
Здесь пример того, как человек с нуля из семерки создал компонет для доступа к вэб сервису
http://www.forum.mista.ru/topic.php?id=720653&page=1#48
http://www.forum.mista.ru/topic.php?id=775298&page=1
Здесь пример того, как человек с нуля из семерки создал компонет для доступа к вэб сервису
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот