Имя: Пароль:
1C
1С v8
1С WEB - Сервис обмен SOAP WSDL
0 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

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

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

ServiceList = "";
Error = "";

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

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

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

КонецЦикла;