Имя: Пароль:
1C
1С v8
WSСсылка помогите разобраться.
0 yakton
 
06.10.15
15:22
Поначалу все показалось очень просто... однако сервис требует при выполнении SetRequestForSubmit отправить объект inns типа ArrayOfString, который прописан в файле wsdl (на всякий случай реальные ссылки убрал... не знаю в общий доступ можно или нет...)
Кто может подсказать как выгружать такие типы?

ВС=WSСсылки.WSСсылка2;
ВебСервис = ВС.СоздатьWSПрокси("https://api.......ru/api";, "ApiSoapService", "ApiSoapPort");
значение=ВебСервис.Login("test","test");
ТипArrayOfString = ВебСервис.ФабрикаXDTO.Тип("https://api.......ru/api";, "ArrayOfString");
ЗначениеArrayOfString = ВебСервис.ФабрикаXDTO.Создать(ТипArrayOfString);
ЗначениеArrayOfString.Добавить("6300000000");
//з1=ВебСервис.SetRequestForSubmit("6300000000");
з1=ВебСервис.SetRequestForSubmit(ЗначениеArrayOfString);
1 Cyberhawk
 
06.10.15
15:25
"на всякий случай реальные ссылки убрал" // Это почти всегда не ссылки, прикинь
А вопрос-то в чем, что не получается, какая ошибка?
2 yakton
 
06.10.15
15:39
не успел дописать отвлекли:) в таком варианте пишет недостаточно фактических параметров придобавлении ЗначениеArrayOfString.Добавить("6300000000");
а если убрать это и раскоментировать, попробовать отправить сразу строку, то ругается на несоответствие типов....
Вобщемто вопрос как добавить? потому что второй вариант совсем неправильный...
3 Serginio1
 
06.10.15
17:31
Потому, что у ArrayOfString должно быть свойство к которому и нужно добавлять. Посмотри в отладчике ТипArrayOfString  или в схеме
4 yakton
 
06.10.15
19:36
Я либо не туда смотрю, либо такого свойства нет... вот что в отладчике... Что за КоллекцияСвойствXDTO и как к ней обратиться не понимаю:
ТипArrayOfString    {https://api....ru/api}ArrayOfString    ТипОбъектаXDTO
URIПространстваИмен    "https://api....ru/api";    Строка
Абстрактный    Ложь    Булево
БазовыйТип    {http://www.w3.org/2001/XMLSchema}anyType    ТипОбъектаXDTO
Имя    "ArrayOfString"    Строка
Открытый    Ложь    Булево
Последовательный    Ложь    Булево
Свойства    КоллекцияСвойствXDTO    КоллекцияСвойствXDTO
Смешанный    Ложь    Булево
Упорядоченный    Истина    Булево
5 Casey1984
 
06.10.15
19:40
ArrayOfString что из себя представляет?
6 yakton
 
06.10.15
21:08
затрудняюсь ответить поэтому вот скриншот... если нужно что-то другое подскажи где посмотреть
https://yadi.sk/i/boUgKK6UjZLZG
7 yakton
 
07.10.15
10:25
Есть идеи что с ArrayOfString делать? Есть пример передачи в документации может поможет, естественно не в 1с пример...
8 yakton
 
07.10.15
10:25
Пример передачи авторизационного ключа в методе «SetRequestForSubmit»:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:api="http://api.,,,,,.ru/api"; xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">;
   <soapenv:Header>
      <authenticate>meulr41c6up5uoc2ehufeslc14</authenticate>
   </soapenv:Header>
   <soapenv:Body>
      <api:SetRequestForSubmit soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">;
         <inns xsi:type="api:ArrayOfString" soapenc:arrayType="xsd:string[2]">
            <inn xsi:type="xsd:string">7842311056</inn>
         </inns>
      </api:SetRequestForSubmit>
   </soapenv:Body>
</soapenv:Envelope>
9 yakton
 
07.10.15
13:00
Есть идеи? куда смотреть, что делать?
10 yakton
 
07.10.15
14:27
Неужели 1с с таким не справиться?
11 Serginio1
 
07.10.15
14:47
Смотри  КоллекцияСвойствXDTO
12 Serginio1
 
07.10.15
14:57
(8) Нет такой не поймет. Сайт на PHP?
13 Serginio1
 
07.10.15
15:00
Хотя посмотри здесь http://habrahabr.ru/sandbox/31020/
14 Serginio1
 
07.10.15
15:21
оооо у тебя еще и
<soapenv:Header>
      <authenticate>meulr41c6up5uoc2ehufeslc14</authenticate>

   </soapenv:Header>

Штатно не пойдет
15 yakton
 
07.10.15
16:57
сайт на php.
а почему штатно не пойдет?
значение=ВебСервис.Login("test","test");
проходит без проблем возвращает код сессии. Спасибо за ссылку на харбаре, буду разбираться, мож поможет..
16 Serginio1
 
07.10.15
17:26
После логина ты получишт токен который надо передавать в Header
v8: soap:Header
17 PaulBC
 
08.10.15
03:45
(0) Попробуй
ЗначениеArrayOfString.item.add("6300000000");
18 yakton
 
12.10.15
00:06
(17) Так не работает... ругается что item нету...
Частично разобрался с типами:
ТипArrayOfString = ВебСервис.ФабрикаXDTO.Тип("https://api.....ru/api";, "ArrayOfString");

ЗначениеArrayOfString = ВебСервис.ФабрикаXDTO.Создать(ТипArrayOfString);
ТипЗначенияXDTO=ВебСервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema";, "string");
ЗначенияXDTO = ВебСервис.ФабрикаXDTO.Создать(ТипЗначенияXDTO,"6300000000");//тип
ТипСтрокаXDTO=ВебСервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema";, "anyType");
СтрокаXDTO = ВебСервис.ФабрикаXDTO.Создать(ТипСтрокаXDTO);
СтрокаXDTO.Добавить(ФормаXML.Элемент, "https://api....ru/api";, "inn", ЗначенияXDTO) ;
19 hhhh
 
12.10.15
00:09
.items
20 yakton
 
12.10.15
00:15
(16) Однако, когда отправляеш СтрокаXDTO в
з1=ВебСервис.SetRequestForSubmit(СтрокаXDTO);
ругается что сессия не авторизована... Так есть ли способ в Header добавить строку авторизации? или как по ссылке вручную формировать пакеты и отправлять через COMОбъект("Msxml2.SERVERXMLHTTP")?
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший