Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 23:08

1С WEB - Сервис обмен SOAP WSDL

Автор svv1979, 26 мар 2020, 07:27

0 Пользователей и 1 гость просматривают эту тему.

svv1979

Запрос перечня услуг, доступных для партнёра 
Для запроса перечня услуг необходимо вызвать процедуру ServisesWithoutSupplier.

Входные переменные

Имя переменной - partnerID
Тип            - string
Комментарий         - Уникальный идентификатор партнёра

Выходные переменные

Имя переменной  - serviceList
Тип             - массив ServiceInfo (SerID - тип int, SerName - тип string)
Комментарий          - Перечень доступных услуг   
Имя переменной  - error
Тип             - Error
Комментарий          - Ошибка обработки запроса, структура данных   

Пример запроса

<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>   
      <ServisesWithoutSupplier xmlns="PayService.Service">       
           <partnerID> QWER-ASDF-ZXCV </partnerID>   
      </ServisesWithoutSupplier>
  </soap:Body>
</soap:Envelope>

Пример ответа

<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>     
    <ServisesWithoutSupplierResponse xmlns="PayService.Service">     
       <serviceList>       
         <ServiceInfo>         
              <SerID>500065</SerID>           
              <SerName>ЖКУ</SerName>         
          </ServiceInfo>       
          <ServiceInfo>
              <SerID> 500284 </SerID>           
              <SerName>ВЗНОС НА КАП.РЕМОНТ</SerName>         
         </ServiceInfo>     
       </serviceList>           
     </ServisesWithoutSupplierResponse> 
   </soap:Body>
</soap:Envelope>

/////////////////////////////////////////////////////////////////

WSОпределение = Новый WSОпределения(НашВебСервис);
   
WSСервис=WSОпределение.Сервисы[0];
   
Прокси = Новый WSПрокси(WSОпределение, WSСервис.URIПространстваИмен, WSСервис.Имя, WSСервис.ТочкиПодключения[0].Имя)
   
ТипWSПараметра     = Прокси.ФабрикаXDTO.Пакеты.Получить((WSСервис.URIПространстваИмен)).Получить("ServisesWithoutSupplier");

//Создаем параметр на основе типа и заполняем значение параметра partnerID.
WSПараметр      = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);
WSПараметр.partnerID   = НашКодПартнера;
serviceList  = "";
Error        = "";
   
//Вызываем метод веб-сервиса, получения перечня услуг .
Прокси.ServisesWithoutSupplier(WSПараметр,serviceList,Error);

Выходит ошибка - При вызове веб-сервиса произошла ошибка. Неизвестная ошибка. Ошибка разбора XML:  - [1,1]
Фатальная ошибка:
Extra content at the end of the document

Подскажите как правильно написать


svv1979

Загрузил WS ссылку в 1С

Модель данных
Пакет
Типы объектов
ServisesWithoutSupplier (запрос)
- partnerID
ServisesWithoutSupplierResponse (Ответ)
- serviceList
- Error
Web - сервис
Имя
ИмяSOAP
ServisesWithoutSupplier (запрос)
- partnerID (Направление - Входной)
- serviceList (Направление - Выходной)
- Error (Направление - Выходной)
Добавлено: 26 мар 2020, 10:53


Запрос по SOAPUI
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:pay="PayService.Service">

   <soapenv:Header/>

   <soapenv:Body>

      <pay:ServisesWithoutSupplier>

         <!--Optional:-->

         <pay:partnerID>111111111111111</pay:partnerID>

      </pay:ServisesWithoutSupplier>

   </soapenv:Body>

</soapenv:Envelope>

Ответ
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="http://www.w3.org/2001/XMLSchema">;
   <soap:Body>
      <ServisesWithoutSupplierResponse xmlns="PayService.Service">
         <serviceList>
            <ServiceInfo>
               <SerID>111</SerID>
               <SerName>Имя1</SerName>
            </ServiceInfo>
            <ServiceInfo>
               <SerID>222</SerID>
               <SerName>Имя2</SerName>
            </ServiceInfo>
         </serviceList>
      </ServisesWithoutSupplierResponse>
   </soap:Body>
</soap:Envelope>

svv1979

Разобрался

Ошибка была из-за того что partnerID передавался как список параметров, а надо было как значение метод отработал правильно

ServiceList = "";
Error = "";

//Вызываем метод веб-сервиса, получения перечня услуг .

Прокси.ServisesWithoutSupplier(WSПараметр.partnerID,ServiceList,Error);

Для Каждого Стр ИЗ ServiceList.ServiceInfo Цикл

КонецЦикла;

Теги: обмен SOAP wsdl 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск