Показать сообщение отдельно
Старый 04.04.2024, 15:10   #1  
Maximin is offline
Maximin
NavAx
NavAx Club
 
409 / 341 (12) ++++++
Регистрация: 09.10.2002
Адрес: Москва
AX2012 R3 CU8 Приключения с AIF и 1С
В общем, я устал биться в одиночку..

Проблема в следующем:
Есть стандартнейший сервис 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Определением?
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...

Последний раз редактировалось Maximin; 04.04.2024 в 15:14.