Осуществляю вызов стороннего веб-сервиса.
В дереве метаданных добавил WS-ссылку. Результат здесь:
Мне необходимо вызвать метод веб-сервиса saveAssortment(parametrs).
Для передачи параметров был описан пакет XDTO
Создаю Объект XDTO для строки моей таблицы ассортимента:
Заполняю его данными.
Далее создаю Объект XDTO для таблицы с данными состоящая из ОбъектXDTO_СтрокаАссортимента
И наполняю объект таблицы XDTO элементами объектами XDTO строки:
Создаю прокси:
Вызываю метод веб сервиса с параметрами:
В итоге вылетает ошибка:
Ошибка вызова операции сервиса: {http://com.iqtech.processing/onec }:OneCWebService:saveAssortment()
по причине:
Неизвестная ошибка. Несоответствие типов XDTO:
Тип '{http://com.iqtech.processing/onec }saveAssortment' не найден
Тип принадлежит пакету, отсутствующему в фабрике типов XDTO
по причине:
Несоответствие типов XDTO:
Тип '{http://com.iqtech.processing/onec }saveAssortment' не найден
Тип принадлежит пакету, отсутствующему в фабрике типов XDTO
1) Я не уверен какие данные именно кидать в параметр метода. Возможно нужно производить сериализацию?
2) Пакет у меня описан именно с таким пространством имен, который объявлен в веб-сервисе. Почему вылетает такая ошибка?
В дереве метаданных добавил WS-ссылку. Результат здесь:
Мне необходимо вызвать метод веб-сервиса saveAssortment(parametrs).
Для передачи параметров был описан пакет XDTO
Создаю Объект XDTO для строки моей таблицы ассортимента:
ТипXDTO_СтрокаАссортимента = ФабрикаXDTO.Тип("http://com.iqtech.processing/onec", "assortmentOneC");
ОбъектXDTO_СтрокаАссортимента = ФабрикаXDTO.Создать(ТипXDTO_СтрокаАссортимента);
Заполняю его данными.
Далее создаю Объект XDTO для таблицы с данными состоящая из ОбъектXDTO_СтрокаАссортимента
ТипXDTO_ТаблицаАссортимента = ФабрикаXDTO.Тип("http://com.iqtech.processing/onec", "saveAssortment");
ОбъектXDTO_ТаблицаАссортимента = ФабрикаXDTO.Создать(ТипXDTO_ТаблицаАссортимента);
И наполняю объект таблицы XDTO элементами объектами XDTO строки:
ОбъектXDTO_ТаблицаАссортимента.assortmentOneC.Добавить(ОбъектXDTO_СтрокаАссортимента);
Создаю прокси:
Прокси = WSСсылки.IQtech.СоздатьWSПрокси("http://com.iqtech.processing/onec","OneCWebService","OneCWebServicePort");
Вызываю метод веб сервиса с параметрами:
Результат = Прокси.saveAssortment(ОбъектXDTO_ТаблицаАссортимента);
В итоге вылетает ошибка:
Ошибка вызова операции сервиса: {
по причине:
Неизвестная ошибка. Несоответствие типов XDTO:
Тип '{
Тип принадлежит пакету, отсутствующему в фабрике типов XDTO
по причине:
Несоответствие типов XDTO:
Тип '{
Тип принадлежит пакету, отсутствующему в фабрике типов XDTO
1) Я не уверен какие данные именно кидать в параметр метода. Возможно нужно производить сериализацию?
2) Пакет у меня описан именно с таким пространством имен, который объявлен в веб-сервисе. Почему вылетает такая ошибка?
По теме из базы знаний
- Некоторые особенности реализации веб-сервисов
- Интеграция 1С:CRM и Asterisk с помощью PHP-AGI и веб-сервисов 1C
- Обмен данными онлайн через Веб-сервис с использованием обработки "Универсальный обмен данными XML"
- Механизмы и транспорт обмена данными. Пример создания в КД 2.1 правил обмена данными ЗУП 2.5 -> БП 3.0. Выгрузка ведомостей и банковских счетов. Передача параметров обмена из Источника в Приемник. ВыгрузитьПоПравилу(). ПередатьОдинПараметрВПриемник().
- Простой эмулятор вызова веб-сервиса 1С с просмотром результата
Найденные решения
Есть решение. Вы используете свой XDTO пакет. а нужно использовать XDTO пакет того прокси к которому подключаетесь.
Прокси = Новый WSПрокси(Определения,........;
СтрокаЗаказаТип = Прокси.ФабрикаXDTO.Тип("http://.......
ЗаказТип = Прокси.ФабрикаXDTO.Тип("http://.........
ДанныеОтправкиТип = Прокси.ФабрикаXDTO.Тип("http://.......
ДанныеОтправки = Прокси.ФабрикаXDTO.Создать(ДанныеОтправкиТип);
Именно поэтому она и ругается что не может найти!
Прокси = Новый WSПрокси(Определения,........;
СтрокаЗаказаТип = Прокси.ФабрикаXDTO.Тип("http://.......
ЗаказТип = Прокси.ФабрикаXDTO.Тип("http://.........
ДанныеОтправкиТип = Прокси.ФабрикаXDTO.Тип("http://.......
ДанныеОтправки = Прокси.ФабрикаXDTO.Создать(ДанныеОтправкиТип);
Именно поэтому она и ругается что не может найти!
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) _mir_, параметры в веб-сервисе у себя который создал не тот тип стоит, или пространство имен не то... или на сервере параметр не того типа ждет сервер или не то пространство имен.. легче посмотреть вообщем) там миллион мест где может все зависеть от одной галки
Сериализацию сделал таким образом:
И полученные данные XML кидаю в параметр. Правильно ли это? Вылетает с ошибкой "Несоответствие параметров: Параметр 1"
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку(); // запись в строку
ФабрикаXDTO.ЗаписатьXML(Запись, ОбъектXDTO_ТаблицаАссортимента);
ДанныеXML = Запись.Закрыть();
Результат = Прокси.saveAssortment(ДанныеXML);
И полученные данные XML кидаю в параметр. Правильно ли это? Вылетает с ошибкой "Несоответствие параметров: Параметр 1"
Вот содержание параметра в отладчике:
<saveAssortment xmlns="http://com.iqtech.processing/onec" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="saveAssortment">
<assortmentOneC>
<isComplex>false</isComplex>
<date>2013-09-09T00:00:00</date>
<id>e1dd13f1-1924-11e3-9f7d-001e37241e0d</id>
<menuGroup>1</menuGroup>
<name>Суп мясной</name>
<orgId>8</orgId>
<price>200</price>
<show>true</show>
</assortmentOneC>
<assortmentOneC>
<isComplex>false</isComplex>
<date>2013-09-09T00:00:00</date>
<id>e1dd13f5-1924-11e3-9f7d-001e37241e0d</id>
<menuGroup>1</menuGroup>
<name>Компот</name>
<orgId>8</orgId>
<price>344</price>
<show>true</show>
</assortmentOneC>
<assortmentOneC>
<isComplex>false</isComplex>
<date>2013-09-09T00:00:00</date>
<id>e1dd13f8-1924-11e3-9f7d-001e37241e0d</id>
<menuGroup>1</menuGroup>
<name>Пюре</name>
<orgId>8</orgId>
<price>22</price>
<show>true</show>
</assortmentOneC>
</saveAssortment>
Показать
Есть решение. Вы используете свой XDTO пакет. а нужно использовать XDTO пакет того прокси к которому подключаетесь.
Прокси = Новый WSПрокси(Определения,........;
СтрокаЗаказаТип = Прокси.ФабрикаXDTO.Тип("http://.......
ЗаказТип = Прокси.ФабрикаXDTO.Тип("http://.........
ДанныеОтправкиТип = Прокси.ФабрикаXDTO.Тип("http://.......
ДанныеОтправки = Прокси.ФабрикаXDTO.Создать(ДанныеОтправкиТип);
Именно поэтому она и ругается что не может найти!
Прокси = Новый WSПрокси(Определения,........;
СтрокаЗаказаТип = Прокси.ФабрикаXDTO.Тип("http://.......
ЗаказТип = Прокси.ФабрикаXDTO.Тип("http://.........
ДанныеОтправкиТип = Прокси.ФабрикаXDTO.Тип("http://.......
ДанныеОтправки = Прокси.ФабрикаXDTO.Создать(ДанныеОтправкиТип);
Именно поэтому она и ругается что не может найти!
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот