|
WS-ссылки. Как передать список значений? | ☑ | ||
---|---|---|---|---|
0
zalexey
26.09.14
✎
17:09
|
Есть схема: http://2kengu.ru/api/soap?wsdl
в которую нужно передать логин, пароль, сообщение (с этим вроде разобрался как), но еще нужно передать список телефонов и не могу сообразить как их туда отправить. Скрин схемы: http://cdn.joxi.ru/uploads/prod/2014/09/26/38e/2fb/f830ebab752d3c6cf423452ba7de4fe7ea11f780.jpg Код, который сейчас есть 1С 8.2: ВебСервис = WSСсылки.WS_SMS.СоздатьWSПрокси("http://ws.api.giper.mobi/", "soap", "soapPort"); ВебСервис.Пользователь = "admin"; ВебСервис.Пароль = "1234"; Фабрика = ВебСервис.ФабрикаXDTO; Сообщение = Фабрика.Создать(Фабрика.Тип("http://Giper.mobi/schema/Message", "messageType")); Сообщение.id = "123456"; Сообщение.login = "admin"; Сообщение.pwd = "1234"; Сообщение.sender = "2kengu.ru"; Сообщение.test = 1; Сообщение.text = "test message"; //Телефоны = Сообщение.Создать(Сообщение.Тип("http://Giper.mobi/schema/Message", "phone")); //Телефоны.phone = "79278531526"; //Сообщение.phones = Телефоны; Результат = ВебСервис.message(Сообщение); |
|||
1
zalexey
26.09.14
✎
17:10
|
в коде ссылки миста заменила :)
На деле так: http://cdn.joxi.ru/uploads/prod/2014/09/26/072/a84/6dd2b3c5c9ab4cdd99d5aecc681673813276e0cd.jpg |
|||
2
Serginio1
26.09.14
✎
17:46
|
Телефоны.phone.Добавить("79278531526")
|
|||
3
zalexey
26.09.14
✎
21:42
|
(2)
а чему равна переменная "Телефоны"? |
|||
4
zulu_mix
26.09.14
✎
21:45
|
(3) найди в message
|
|||
5
Serginio1
26.09.14
✎
21:46
|
Наверное
Телефоны = Фабрика.Создать(Фабрика.Тип("http://Giper.mobi/schema/Message", "phone")); |
|||
6
zalexey
28.09.14
✎
18:30
|
(5) не прокатывает. пробовал
Фабрика.Тип("http://Giper.mobi/schema/Message", "phone") возвращает "Неопределено" |
|||
7
Serginio1
28.09.14
✎
18:38
|
Так посмотри какой тип и простанство имен имеет phones
|
|||
8
zalexey
29.09.14
✎
08:09
|
(7) либо я не туда смотрю (хотя больше в схеме phones не встречается), либо у него нет никакого типа, скрин:
http://cdn.joxi.ru/uploads/prod/2014/09/29/931/74e/570f852e1199cdf6dff49d6a77bf153e72a2fc47.jpg |
|||
9
Serginio1
29.09.14
✎
10:30
|
Попробовал через
Телефоны = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "anyType")); ЗначениеАтрибута=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), "79278531526"); Телефоны.Добавить(ФормаXML.Атрибут, "http://Giper.mobi/schema/Message", "phone",ЗначениеАтрибута); Но облом по типу. Посмотри тут обсуждаем доступ к вэб сервисам 1c 7.7 и ASP.NET API IE из 1с 7.7 |
|||
10
Serginio1
29.09.14
✎
10:46
|
На шарпе такой код работает
var ВебСервис = new ServiceReference2.soapClient(); var Сообщение = new ServiceReference2.messageType(); Сообщение.id = "123456"; Сообщение.login = "admin"; Сообщение.pwd = "1234"; Сообщение.sender = "2kengu.ru"; Сообщение.test = "1"; Сообщение.text = "test message"; var Телефоны = new ServiceReference2.messageType.phonesType(); Телефоны.Add("79278531526"); //Телефоны.phone = "79278531526"; Сообщение.phones = Телефоны; ВебСервис.ClientCredentials.UserName.UserName= "admin"; ВебСервис.ClientCredentials.UserName.Password = "1234"; var Результат = ВебСервис.message(Сообщение); |
|||
11
Serginio1
29.09.14
✎
11:23
|
Вот так в 1С будет
ТипДляТелефонов=Фабрика.Пакеты[1].КорневыеСвойства[0].Тип.Свойства[6].Тип; Телефоны = Фабрика.Создать(ТипДляТелефонов); Телефоны.phone.Добавить("79278531526"); //Сообщение.phones = Телефоны; // Телефоны = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "anyType")); // ЗначениеАтрибута=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), "79278531526"); // Телефоны.Добавить(ФормаXML.Атрибут, "http://Giper.mobi/schema/Message", "phone",ЗначениеАтрибута); Сообщение.phones = Телефоны; |
|||
12
Serginio1
29.09.14
✎
11:24
|
||||
13
Serginio1
29.09.14
✎
11:37
|
Вот такой вариант лучше использовать
Функция СтрРазделить(Знач Строка, Разделитель) Результат = Новый Массив; Если ПустаяСтрока(Строка) Тогда Возврат Результат; КонецЕсли; НачПозицияПервогоЭлемента = Найти(Строка, "{"); КонПозицияПервогоЭлемента = Найти(Строка, "}"); Если НачПозицияПервогоЭлемента > 0 И КонПозицияПервогоЭлемента > 0 Тогда ПервыйЭлемент = Сред(Строка, НачПозицияПервогоЭлемента, КонПозицияПервогоЭлемента); Результат.Добавить(СокрЛП(ПервыйЭлемент)); Строка = СокрЛП(Сред(Строка,КонПозицияПервогоЭлемента + 2)); КонецЕсли; Пока Истина Цикл Позиция = Найти(Строка,Разделитель); Если Позиция = 0 Тогда Прервать; КонецЕсли; Результат.Добавить(СокрЛП(Лев(Строка,Позиция - 1))); Строка = СокрЛП(Сред(Строка,Позиция + 1)); КонецЦикла; Результат.Добавить(СокрЛП(Строка)); Возврат Результат; КонецФункции Функция ПолучитьТипОбъекта(Фабрика,Тип, ВерсияСхемы) Экспорт МассивПути = СтрРазделить(Тип, "."); ПервыйЭлемент = МассивПути[0]; Если Лев(ПервыйЭлемент,1) = "{" И Прав(ПервыйЭлемент,1) = "}" Тогда ИмяПакета = Сред(ПервыйЭлемент, 2, СтрДлина(ПервыйЭлемент) - 2); Коллекция = Фабрика.Пакеты.Получить(ИмяПакета).КорневыеСвойства; ИначеЕсли ВерсияСхемы <> "4.02" Тогда ТипОбъекта = Фабрика.Тип(ВерсияСхемы, ПервыйЭлемент); Коллекция = ТипОбъекта.Свойства; КонецЕсли; МассивПути.Удалить(0); Пока МассивПути.Количество() > 0 Цикл Если Коллекция = Неопределено Тогда Возврат Неопределено; КонецЕсли; Свойство = Коллекция.Получить(МассивПути[0]); Если Свойство = Неопределено Тогда Возврат Неопределено; КонецЕсли; ТипОбъекта = Свойство.Тип; МассивПути.Удалить(0); Попытка Коллекция = ТипОбъекта.Свойства; Исключение Коллекция = Неопределено; КонецПопытки; КонецЦикла; Возврат ТипОбъекта; КонецФункции Процедура ТестСпискаНажатие(Элемент) // Вставить содержимое обработчика. Файл_wsdl="http://2kengu.ru/api/soap?wsdl"; // Файл_wsdl="d:\Загрузки\Morpher.WSDL"; ОпределениеТ=Новый WSОпределения(Файл_wsdl); WSСервис=ОпределениеТ.Сервисы[0]; прокси=Новый WSПрокси(ОпределениеТ, WSСервис.URIПространстваИмен, WSСервис.Имя, WSСервис.ТочкиПодключения[0].Имя); прокси.Пользователь = "admin"; прокси.Пароль = "1234"; Фабрика = прокси.ФабрикаXDTO; Сообщение = Фабрика.Создать(Фабрика.Тип("http://Giper.mobi/schema/Message", "messageType")); Сообщение.id = "123456"; Сообщение.login = "admin"; Сообщение.pwd = "1234"; Сообщение.sender = "2kengu.ru"; Сообщение.test = 1; Сообщение.text = "test message"; ТипДляТелефонов=ПолучитьТипОбъекта(Фабрика,"messageType.phones", "http://Giper.mobi/schema/Message"); // ТипДляТелефонов=Фабрика.Пакеты[1].КорневыеСвойства[0].Тип.Свойства[6].Тип; Телефоны = Фабрика.Создать(ТипДляТелефонов); Телефоны.phone.Добавить("79278531526"); //Сообщение.phones = Телефоны; // Телефоны = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "anyType")); // ЗначениеАтрибута=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), "79278531526"); // Телефоны.Добавить(ФормаXML.Атрибут, "http://Giper.mobi/schema/Message", "phone",ЗначениеАтрибута); Сообщение.phones = Телефоны; Результат = прокси.message(Сообщение); КонецПроцедуры |
|||
14
Serginio1
29.09.14
✎
11:54
|
Или так
Фабрика = прокси.ФабрикаXDTO; ТипСообщения=Фабрика.Тип("http://Giper.mobi/schema/Message", "messageType"); Сообщение = Фабрика.Создать(ТипСообщения); Сообщение.id = "123456"; Сообщение.login = "admin"; Сообщение.pwd = "1234"; Сообщение.sender = "2kengu.ru"; Сообщение.test = 1; Сообщение.text = "test message"; ТипДляТелефонов= ТипСообщения.Свойства.Получить("phones").Тип; Телефоны.phone.Добавить("79278531526"); Результат = прокси.message(Сообщение); |
|||
15
zalexey
29.09.14
✎
14:41
|
(14) с небольшими доработками - заработало!!!
Огромное спасибо за помощь! |
|||
16
Serginio1
29.09.14
✎
14:45
|
(15) Ну да подчищал и удалил
Телефоны = Фабрика.Создать(ТипДляТелефонов); На здоровье |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |