Имя: Пароль:
1C
 
Web-сервис: получить из сервиса несколько значений
0 Moriarti
 
12.03.11
13:19
Добрый день!

Разбираюсь с веб-сервисами в 1С,
нужно интегрировать с одной системой через веб-службы на java.

При возврате простого значения: string, int - проблем нет:

//--------------------------
ВебСервис = Новый WSОпределения("http://cpit-sles:8080/EAService2/services/ImagePort?wsdl");
Прокси = Новый WSПрокси(ВебСервис, "http://ws.filenet.com/", "ImageService", "ImagePort");
Результат = Прокси.getOSVersion("123");



// java code:
public String getOSVersion(String S)
{
 return System.getProperty("os.version");
}
//--------------------------



Как известно, методы java возвращают значения только при помощи return, поэтому чтобы вернуть 2-3 значения приходиться оборачивать их в классы.
И вот тут натолкнулся на проблему.

// этот класс будем возвращать
public class DownloadResult
{
   public final String a;
   public final String b;


   public DownloadResult(String buf, String fileName)
   {
       this.a = buf;
       this.b = fileName;
   }
};

// метод веб-сервиса
public DownloadResult downloadFile(String ChCode)
{
 return new DownloadResult("123", "456");
}
///

В 1С:

Результат = Прокси.downloadFile("TestFrom1C");  

Получаю ошибку:
------------------------------------------
Ошибка вызова операции сервиса:  {http://ws.filenet.com/}:ImageService:downloadFile()
по причине:
Неизвестная ошибка. Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://ws.filenet.com/}downloadResult - [1,160]
Проверка дополнительного свойства:
   форма: Элемент
   имя: a
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://ws.filenet.com/}downloadResult - [1,160]
Проверка дополнительного свойства:
   форма: Элемент
   имя: a
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {http://ws.filenet.com/}downloadResult
------------------------------------------

Предварительное создание экземпляра этого типа так же не помогает:

Результат = Фабрика.Создать(Фабрика.Тип("http://ws.filenet.com/", "downloadResult"));
Результат = Прокси.downloadFile("TestFrom1C-ChCode");
   

^^^ возникает так же ошибка "Структура объекта не соответствует типу: {http://ws.filenet.com/}downloadResult"

Может кто сталкивался с этим?
1 Asmody
 
12.03.11
13:43
фича старая, известная. не работает ws-ссылки с сервисами java корректно. уже несколько раз обсуждали, красивого решения не нашли. есть кривое - сохранить wsdl в файл, исправить объявления типов так, как это делает .net, подгрузить wsdl в 1ску.
2 Asmody
 
12.03.11
13:55