Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

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

1С WEB - Сервис обмен SOAP WSDL
Я
   svv1979
 
26.03.20 - 07:24
Запрос перечня услуг, доступных для партнёра  
Для запроса перечня услуг необходимо вызвать процедуру 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
 
1 - 26.03.20 - 09:07
Загрузил WS ссылку в 1С

Модель данных
Пакет
Типы объектов
ServisesWithoutSupplier (запрос)
- partnerID
ServisesWithoutSupplierResponse (Ответ)
- serviceList
- Error
Web - сервис
Имя
ИмяSOAP
ServisesWithoutSupplier (запрос)
- partnerID (Направление - Входной)
- serviceList (Направление - Выходной)
- Error (Направление - Выходной)
   бегинер
 
2 - 26.03.20 - 09:14
установи SOAPUI в ней проверь работу и посмотри ответ - соответствует ли он структуре описанной
   svv1979
 
3 - 26.03.20 - 09:42
(2)
Запрос по 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>
   NorthWind
 
4 - 26.03.20 - 09:45
еще небесполезно будет поставить Fiddler и посмотреть, что именно 1С отправляет на сервис.
   NorthWind
 
5 - 26.03.20 - 09:46
я бы сказал что Fiddler и SOAPUI обязательны для терзания клиентов веб-сервисов, причем первый, пожалуй, даже нужнее
   svv1979
 
6 - 26.03.20 - 11:20
(4) Fiddler не видит 1С подскажи как настроить
Галочку "Allow remote computers to connect" поставил
   arsik
 
7 - 26.03.20 - 11:28
(6) при запуске фиддлер открывает порт прокси (там же в настройках), при соединении куда либо нужно указать этот прокси. Что бы запросы шли через прокси фиддлера.
   svv1979
 
8 - 27.03.20 - 13:25
(7) фиддлер не видит запросы из 1С к внутреннему сервису http://111.11.111.1:10101/pays.asmx?WSDL
   arsik
 
9 - 27.03.20 - 14:02
(7) При запросах к внутреннему сервису ты указываешь интернет прокси фидллера или нет?
   svv1979
 
10 - 28.03.20 - 07:10
сейчас работает
   svv1979
 
11 - 01.04.20 - 09:36
Разобрался

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

ServiceList = "";
Error = "";

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


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

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

КонецЦикла;

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.