В общем, я устал биться в одиночку..
Проблема в следующем:
Есть стандартнейший сервис InventItemService. Развернут порт HTTP на IIS.
Но вот 1Ска не хочет воспринимать его WSDL, ругаясь на той, что в одном из XSD, на которые разбит этот WSDL, не указан атрибут targetNamespace. И он там, действительно, не указан. Это при попытке создать стандартное WSОпределение.
Понятно, что руками все это можно прочитать, но сроки разработки будут x10...
Выглядит это так:
В общем WSDL (во второй части wsdl=wsdl1б если нужны подробности):
X++:
<?xml version="1.0" encoding="utf-8" ?>
- <wsdl:definitions targetNamespace="http://schemas.microsoft.com/dynamics/2008/01/services" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/dynamics/2008/01/services" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
- <wsdl:types>
- <xsd:schema targetNamespace="http://schemas.microsoft.com/dynamics/2008/01/services/Imports">
<xsd:import schemaLocation="http://ru-dev-ax/MicrosoftDynamicsAXAif60/tmpService/xppservice.svc?xsd=xsd7" namespace="http://schemas.microsoft.com/dynamics/2008/01/services" />
<xsd:import schemaLocation="http://ru-dev-ax/MicrosoftDynamicsAXAif60/tmpService/xppservice.svc?xsd=xsd8" namespace="http://schemas.microsoft.com/dynamics/2010/01/datacontracts" />
<xsd:import schemaLocation="http://ru-dev-ax/MicrosoftDynamicsAXAif60/tmpService/xppservice.svc?xsd=xsd10" namespace="http://schemas.microsoft.com/dynamics/2008/01/documents/Fault" />
<xsd:import schemaLocation="http://ru-dev-ax/MicrosoftDynamicsAXAif60/tmpService/xppservice.svc?xsd=xsd0" namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
<xsd:import schemaLocation="http://ru-dev-ax/MicrosoftDynamicsAXAif60/tmpService/xppservice.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/dynamics/2006/02/documents/EntityKeyList" />
<xsd:import schemaLocation="http://ru-dev-ax/MicrosoftDynamicsAXAif60/tmpService/xppservice.svc?xsd=xsd2" namespace="http://schemas.microsoft.com/dynamics/2006/02/documents/EntityKey" />
[B] <xsd:import schemaLocation="http://ru-dev-ax/MicrosoftDynamicsAXAif60/tmpService/xppservice.svc?xsd=xsd3" /> [/B]
<xsd:import schemaLocation="http://ru-dev-ax/MicrosoftDynamicsAXAif60/tmpService/xppservice.svc?xsd=xsd4" namespace="http://schemas.microsoft.com/dynamics/2006/02/documents/QueryCriteria" />
<xsd:import schemaLocation="http://ru-dev-ax/MicrosoftDynamicsAXAif60/tmpService/xppservice.svc?xsd=xsd5" namespace="http://schemas.microsoft.com/dynamics/2008/01/documents/Item" />
<xsd:import schemaLocation="http://ru-dev-ax/MicrosoftDynamicsAXAif60/tmpService/xppservice.svc?xsd=xsd6" namespace="http://schemas.microsoft.com/dynamics/2008/01/sharedtypes" />
<xsd:import schemaLocation="http://ru-dev-ax/MicrosoftDynamicsAXAif60/tmpService/xppservice.svc?xsd=xsd9" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
<xsd:import schemaLocation="http://ru-dev-ax/MicrosoftDynamicsAXAif60/tmpService/xppservice.svc?xsd=xsd11" namespace="http://schemas.datacontract.org/2004/07/Microsoft.Dynamics.AX.Framework.Services" />
</xsd:schema>
</wsdl:types>
Как можно видеть, и в самом "xsd3" не указано никакого namespace.
И внутри этого xsd3 имеем:
X++:
<?xml version="1.0" encoding="utf-8" ?>
- <xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="http://ru-dev-ax/MicrosoftDynamicsAXAif60/tmpService/xppservice.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/dynamics/2006/02/documents/EntityKeyList" />
<xs:import schemaLocation="http://ru-dev-ax/MicrosoftDynamicsAXAif60/tmpService/xppservice.svc?xsd=xsd4" namespace="http://schemas.microsoft.com/dynamics/2006/02/documents/QueryCriteria" />
<xs:import schemaLocation="http://ru-dev-ax/MicrosoftDynamicsAXAif60/tmpService/xppservice.svc?xsd=xsd5" namespace="http://schemas.microsoft.com/dynamics/2008/01/documents/Item" />
<xs:element name="EntityKeyList" type="q1:EntityKeyList" xmlns:q1="http://schemas.microsoft.com/dynamics/2006/02/documents/EntityKeyList" />
<xs:element name="QueryCriteria" type="q2:QueryCriteria" xmlns:q2="http://schemas.microsoft.com/dynamics/2006/02/documents/QueryCriteria" />
<xs:element name="AxdItem" type="q3:AxdItem" xmlns:q3="http://schemas.microsoft.com/dynamics/2008/01/documents/Item" />
</xs:schema>
В нормальном же XSD в заголовке имеем:
X++:
<?xml version="1.0" encoding="utf-8" ?>
- <xs:schema elementFormDefault="qualified" [B]targetNamespace[/B]="http://schemas.microsoft.com/dynamics/2006/02/documents/QueryCriteria" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/dynamics/2006/02/documents/QueryCriteria">
Причем всегда в этот кривой XSD попадает QueryCriteria, EntityKeyList и AxdItem.
Я уже думал, что в их XSD что-то не то с targetNamespace. Но нет - он там указан.
Привел к единообразию их - их атрибуты были описаны через схему xsd:, а не через xs:. Установил одинаковую кодировку этим стандартным типам - utf-16. Все схемы в AifSchemaStore теперь единообразны и в одной кодировке.
И ничего.
И все равно этот XSD генерируется без targetNamespace.
Почему?!!!
И кто его генерирует? WCF? Бинарники AX AIF?
И нафига сдался этой 1Ске этот targetNamespace... Ну, немного не валидный WSDL, но все его понимают нормально. По сравнению с WSDLями самой 1Ски так вообще эталон.
Был у кого-то опыт интеграции и использования AIF сервисов Аксапты со стороны 1С и WSОпределением?