![]() |
|
Ссылка web сервиса SAP - "Неверный формат" | ☑ | ||
---|---|---|---|---|
0
Вася Теркин
19.12.18
✎
08:59
|
Сразу извиняюсь за большие скроллы, но. Создал пустую базу с апачем. Сделал вебсервис. Все ОК.
Создал вторую базу откуда стучаться. Все ОК регится. Теперь Саперы дали ссылку. http://saptst.mmm.uk:8000/sap/bc/srt/wsdl/bndg_5C095F2EF7041855E1000000C0A8B823/wsdl11/allinone/ws_policy/document?sap-client=340 Через браузер все ок. Но при попытке подключить к 1С хоть в конфигураторе, хоть в &НаКлиенте Процедура Подключить(Команда) ПодключитьНаСервере(); КонецПроцедуры &НаСервере Процедура ПодключитьНаСервере() // Определяем настройки URLПространстваИменСервиса = "http://saptst.mmm.uk:8000"; ИмяПользователя = "1CRMSRFC"; Пароль = "123*Qweasd"; МестоположениеWSDL = "http://saptst.mmm.uk:8000/sap/bc/srt/wsdl/bndg_5C095F2EF7041855E1000000C0A8B823/wsdl11/allinone/ws_policy/document?sap-client=340"; ИмяСервиса = "ZWS_SAP_TO_1C"; ИмяТочкиПодключения = "ZWS_SAP_TO_1C"; // Создаем подключение SSL = Новый ЗащищенноеСоединениеOpenSSL(); WSОпределение = Новый WSОпределения(МестоположениеWSDL,ИмяПользователя,Пароль,,,SSL); WSПрокси = Новый WSПрокси(WSОпределение, URLПространстваИменСервиса, ИмяСервиса, ИмяТочкиПодключения,,,SSL); WSПрокси.Пользователь = ИмяПользователя; WSПрокси.Пароль = Пароль; КонецПроцедуры На WSОпределение = Новый WSОпределения(МестоположениеWSDL,ИмяПользователя,Пароль,,,SSL); пишет {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(22)}: Ошибка при вызове конструктора (WSОпределения) WSОпределение = Новый WSОпределения(МестоположениеWSDL,ИмяПользователя,Пароль,,,SSL); по причине: Неверный формат. |
|||
1
Вася Теркин
19.12.18
✎
09:02
|
Вот сервис созданный в 1С
This XML file does not appear to have any style information associated with it. The document tree is shown below. <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap12bind="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://127.0.0.1" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://127.0.0.1" name="TestSAP" targetNamespace="http://127.0.0.1"> <types> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs1="http://127.0.0.1" targetNamespace="http://127.0.0.1" elementFormDefault="qualified"> <xs:element name="MakeRecord"> <xs:complexType> <xs:sequence> <xs:element name="FieldString1" type="xs:string"/> <xs:element name="FieldInt2" type="xs:integer"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="MakeRecordResponse"> <xs:complexType> <xs:sequence> <xs:element name="return" type="xs:string"/> <xs:element name="Response" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </types> <message name="MakeRecordRequestMessage"> <part name="parameters" element="tns:MakeRecord"/> </message> <message name="MakeRecordResponseMessage"> <part name="parameters" element="tns:MakeRecordResponse"/> </message> <portType name="TestSAPPortType"> <operation name="MakeRecord"> <input message="tns:MakeRecordRequestMessage"/> <output message="tns:MakeRecordResponseMessage"/> </operation> </portType> <binding name="TestSAPSoapBinding" type="tns:TestSAPPortType"> <soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="MakeRecord"> <soapbind:operation style="document" soapAction="http://127.0.0.1#TestSAP:MakeRecord"/> <input> <soapbind:body use="literal"/> </input> <output> <soapbind:body use="literal"/> </output> </operation> </binding> <binding name="TestSAPSoap12Binding" type="tns:TestSAPPortType"> <soap12bind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="MakeRecord"> <soap12bind:operation style="document" soapAction="http://127.0.0.1#TestSAP:MakeRecord"/> <input> <soap12bind:body use="literal"/> </input> <output> <soap12bind:body use="literal"/> </output> </operation> </binding> <service name="TestSAP"> <port name="TestSAPSoap" binding="tns:TestSAPSoapBinding"> <documentation> <wsi:Claim xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/" conformsTo="http://ws-i.org/profiles/basic/1.1"/> </documentation> <soapbind:address location="http://vkc-rms-app1/test4SAP/ws/ws1.1cws"/> </port> <port name="TestSAPSoap12" binding="tns:TestSAPSoap12Binding"> <soap12bind:address location="http://vkc-rms-app1/test4SAP/ws/ws1.1cws"/> </port> </service> </definitions> |
|||
2
Вася Теркин
19.12.18
✎
09:05
|
А вот SAP
This XML file does not appear to have any style information associated with it. The document tree is shown below. <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="urn:sap-com:document:sap:soap:functions:mc-style" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" targetNamespace="urn:sap-com:document:sap:soap:functions:mc-style"> <wsdl:documentation> <sidl:sidl xmlns:sidl="http://www.sap.com/2007/03/sidl"/> </wsdl:documentation> <wsp:UsingPolicy wsdl:required="true"/> <wsp:Policy wsu:Id="BN_ZWS_SAP_TO_1C"> <wsaw:UsingAddressing xmlns:wsaw="http://schemas.xmlsoap.org/ws/2004/08/addressing"/> <saptrnbnd:OptimizedXMLTransfer xmlns:saptrnbnd="http://www.sap.com/webas/710/soap/features/transportbinding/" uri="http://xml.sap.com/2006/11/esi/esp/binxml" wsp:Optional="true"/> <sapattahnd:Enabled xmlns:sapattahnd="http://www.sap.com/710/features/attachment/">false</sapattahnd:Enabled> <wsp:ExactlyOne xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:sapsp="http://www.sap.com/webas/630/soap/features/security/policy" xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility"/> </wsp:Policy> <wsp:Policy wsu:Id="IF_zws_sap_to_1c"> <sapsession:Session xmlns:sapsession="http://www.sap.com/webas/630/soap/features/session/"> <sapsession:enableSession>false</sapsession:enableSession> </sapsession:Session> <sapcentraladmin:CentralAdministration xmlns:sapcentraladmin="http://www.sap.com/webas/700/soap/features/CentralAdministration/" wsp:Optional="true"> <sapcentraladmin:BusinessApplicationID>5C097146F704184FE1000000C0A8B823</sapcentraladmin:BusinessApplicationID> </sapcentraladmin:CentralAdministration> </wsp:Policy> <wsp:Policy wsu:Id="OP_ZwsSapTo1c"> <sapcomhnd:enableCommit xmlns:sapcomhnd="http://www.sap.com/NW05/soap/features/commit/">false</sapcomhnd:enableCommit> <sapblock:enableBlocking xmlns:sapblock="http://www.sap.com/NW05/soap/features/blocking/">true</sapblock:enableBlocking> <saptrhnw05:required xmlns:saptrhnw05="http://www.sap.com/NW05/soap/features/transaction/">no</saptrhnw05:required> <saprmnw05:enableWSRM xmlns:saprmnw05="http://www.sap.com/NW05/soap/features/wsrm/">false</saprmnw05:enableWSRM> </wsp:Policy> <wsdl:types> <xsd:schema attributeFormDefault="qualified" targetNamespace="urn:sap-com:document:sap:soap:functions:mc-style"> <xsd:element name="ZwsSapTo1c"> <xsd:complexType> <xsd:sequence> <xsd:element name="Val1" type="xsd:unsignedByte" minOccurs="0"/> <xsd:element name="Val2" type="xsd:short" minOccurs="0"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="ZwsSapTo1cResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="Result" type="xsd:unsignedByte"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="ZwsSapTo1c"> <wsdl:part name="parameters" element="tns:ZwsSapTo1c"/> </wsdl:message> <wsdl:message name="ZwsSapTo1cResponse"> <wsdl:part name="parameter" element="tns:ZwsSapTo1cResponse"/> </wsdl:message> <wsdl:portType name="zws_sap_to_1c"> <wsp:Policy> <wsp:PolicyReference URI="#IF_zws_sap_to_1c"/> </wsp:Policy> <wsdl:operation name="ZwsSapTo1c"> <wsp:Policy> <wsp:PolicyReference URI="#OP_ZwsSapTo1c"/> </wsp:Policy> <wsdl:input message="tns:ZwsSapTo1c"/> <wsdl:output message="tns:ZwsSapTo1cResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="ZWS_SAP_TO_1C" type="tns:zws_sap_to_1c"> <wsp:Policy> <wsp:PolicyReference URI="#BN_ZWS_SAP_TO_1C"/> </wsp:Policy> <wsa:EndpointReference xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"> <wsa:ReferenceParameters/> </wsa:EndpointReference> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <wsdl:operation name="ZwsSapTo1c"> <soap:operation soapAction="" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="ZWS_SAP_TO_1C"> <wsdl:port name="ZWS_SAP_TO_1C" binding="tns:ZWS_SAP_TO_1C"> <soap:address location="http://saptst.mmm.uk:8000/sap/bc/srt/rfc/sap/zws_sap_to_1c/340/zws_sap_to_1c/zws_sap_to_1c"/> </wsdl:port> </wsdl:service> </wsdl:definitions> |
|||
3
Вася Теркин
19.12.18
✎
09:06
|
Порт открыт saptst.mmm.uk:8000 .
Вопрос: 1С может прочесть ключи типа wsdl:service вместо service Чем именно формат неверный? В SOAP UI все открывается и работает. |
|||
4
Вася Теркин
19.12.18
✎
09:09
|
Может есть какая библиотека стандартная или методика для web сервисов SAP из 1С? Где-то это описано?
|
|||
5
niWhale
19.12.18
✎
12:18
|
(4) Есть 2 варианта:
1. Заставить саперов реализовать генерацию правильной wsdl, которую может "съесть" 1С. 2. Сделать все самому. И тут тоже есть 2 варианта: 2.1 Получить wsdl, сделать xlt преобразование и "скормить" 1С 2.2 Сохранить wsdl в файл, удалить/закомментить все строки со словом policy. Прочитать 1С-кой файл, и подключиться к сервису. |
|||
6
Вася Теркин
19.12.18
✎
12:55
|
(5) Огромное спасибо. А кроме policy нет препятствий?
|
|||
7
Вася Теркин
19.12.18
✎
13:00
|
Пока нашел это
v8: Редактирование wsdl файла |
|||
8
Вася Теркин
19.12.18
✎
13:08
|
Пишут:
"Работает нормально. Не получилось передать массив структур с клиента, но с простыми данными работает (передает и получает оч. хорошо)." но если xdto не будет работать это не очень хорошо... |
|||
9
niWhale
19.12.18
✎
13:11
|
(6) А дальше зависит от полета мысли разработчика сервиса с точки зрения создания схемы xsd.
Были проблемы когда SAP не понимал что сгенерила 1С, и было наоборот. Чем проще схема, тем лучше. |
|||
10
Вася Теркин
19.12.18
✎
14:24
|
В
https://forum.infostart.ru/forum9/topic141326/ особенно впечатлило укажите локальную ссылку: file://c:/MyFolder/MyFile.xsd Ловкие, шельмы. Будем пробовать |
|||
11
Вася Теркин
19.12.18
✎
14:26
|
И
укажите локальную ссылку: file://c:/MyFolder/MyFile.wsdl |
|||
12
Вася Теркин
27.12.18
✎
13:23
|
Можно ли объект XDTO или текстовый ДанныеXML упаковать в cdata стандартно? Притом какого типа должен быть параметр выходного вебсервиса? В http://www.w3.org/2001/XMLSchema я такого типа не видел, просто string задать?
|
|||
13
palsergeich
27.12.18
✎
13:26
|
Иногда можно побороть, а иногда приходилось собирать руками.
|
|||
14
palsergeich
27.12.18
✎
13:26
|
Наш любимый вендор не полностью реализовал возможности SOAP
|
|||
15
Вася Теркин
27.12.18
✎
13:34
|
Пока придумал так
ОтветXDTO = НашАлгоритмПолученияОтветаВебсервиса(); Запись = Новый ЗаписьXML; Запись.УстановитьСтроку(); // запись в строку ФабрикаXDTO.ЗаписатьXML(Запись, ОтветXDTO); ДанныеXML = Запись.Закрыть(); ОтветCDATA = «<![CDATA[<?xml version="1.0" encoding="UTF-8"?> » + ДанныеXML + «]]»; Возврат ОтветCDATA ; |
|||
16
Вася Теркин
27.12.18
✎
13:39
|
Но тут не будет никакого контроля типов данных. Они ведь в меня будут тоже cdata кидать, моя ws ссылка будет безропотно принимать это как string, я от него буду отпиливать
пакетCDATA = ПолучитьОтВебсервиса() ДанныеXML = СтрЗаменить(пакетCDATA , «<![CDATA[<?xml version="1.0" encoding="UTF-8"?> »,""); ДанныеXML = СтрЗаменить(ДанныеXML,«]]»,""); Но тут ведь потом не факт что они правильно скинут данные. Когда у меня параметр типа XDTO мне их конвертировать не надо. Но тут весь контроль вручную |
|||
17
Вася Теркин
03.01.19
✎
14:23
|
Несоответствие типов XDTO:
Тип '{http://www.w3.org/2001/XMLSchema}string' не найден Сделал пакет XDTO, Директиву импорта добавил http://www.w3.org/2001/XMLSchema и несколько Типов значений. Потом эти типы значений использовал в Типах объектов. Потом сделал вебсервис. в Пакетах XDTO добавил свой пакет, но пакета http://www.w3.org/2001/XMLSchema в списке нет. Как заставить его там появиться? Во входных-выходных параметрах указал созданные типы данных. Пока на другой стороне со своего пакета фабрикой создаю все ок, но примитивные типы данных не дает. почему http://www.w3.org/2001/XMLSchema не выходит? Ее явно в списке пакетов XDTO конфигурации нет, может нужно откуда-то загрузить? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |