передача xml через веб-сервис

1. thenroach 4 28.02.17 16:41 Сейчас в теме
Не могу понять как нужно правильно запрограммировать/настроить веб-сервис или ссылку на него чтобы при обращении возвращался xml с данными, а не со структурой.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
15. semyon 28.02.17 19:53 Сейчас в теме +20 $m
(13) Переходом по этой ссылке результат не получить.
SOAP-сервисы так не работают.
Кроме пути к описанию сервиса - wsdl нужно в Microsoft Power BI указать еще имя сервиса, имя порта и имя метода, который будет возвращать данные.
Если нужно получать данные по ссылке - то нужно использовать скорее http-сервисы.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Turn123 18 28.02.17 16:44 Сейчас в теме
Возвращать строку, а в строке текст XML
3. Turn123 18 28.02.17 16:45 Сейчас в теме

Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку(); // запись в строку
ФабрикаXDTO.ЗаписатьXML(Запись, Сообщение);
ДанныеXML = Запись.Закрыть();


Сообщение - ваш объект XDTO
4. thenroach 4 28.02.17 16:58 Сейчас в теме
Сейчас в конфигурации создан веб-сервис. В нем одна операция GetTable().

В свойстве тип возвращаемого значения установлено string (http://www.w3.org/2001/XMLSchema).

Обработчик операции возвращает "Строку". При обращении к веб - сервису по ссылки из браузера получается результат приведенный в скриншоте. В нем нет данных вообще.

Рез22 = "<?xml version=""1.0"" encoding=""UTF-8"" ?>";
Рез22 = Рез22 + Символы.ПС + """<dataroot xmlns:od=""urn:s chemas-microsoft-com:officedata"" generated=""2017-02-28T14:47:49"">""";

Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл

Рез22 = Рез22 + Символы.ПС + "<PowerBI>";

//Период
НачалоСтрокиАтрибута = "<" + "Период" + ">";
ОкончаниеСтрокиАтрибута = "</" + "Период" + ">";
Значения = Формат(Выборка.Период,"ДФ=dd.MM.yyyy");
Рез22 = Рез22 + Символы.ПС + НачалоСтрокиАтрибута + Значения + ОкончаниеСтрокиАтрибута;

//Ответственный
НачалоСтрокиАтрибута = "<" + "Ответственный" + ">";
ОкончаниеСтрокиАтрибута = "</" + "Ответственный" + ">";
Значения = ?(ЗначениеЗаполнено(Выборка.Ответственный), СТРОКА(Выборка.Ответственный), "");
Рез22 = Рез22 + Символы.ПС + НачалоСтрокиАтрибута + Значения + ОкончаниеСтрокиАтрибута;

//Регион
НачалоСтрокиАтрибута = "<" + "Регион" + ">";
ОкончаниеСтрокиАтрибута = "</" + "Регион" + ">";
Значения = ?(ЗначениеЗаполнено(Выборка.Регион), СТРОКА(Выборка.Регион), "");
Рез22 = Рез22 + Символы.ПС + НачалоСтрокиАтрибута + Значения + ОкончаниеСтрокиАтрибута;

//НоменклатурнаяГруппа
НачалоСтрокиАтрибута = "<" + "НоменклатурнаяГруппа" + ">";
ОкончаниеСтрокиАтрибута = "</" + "НоменклатурнаяГруппа" + ">";
Значения = ?(ЗначениеЗаполнено(Выборка.НоменклатурнаяГруппа), СТРОКА(Выборка.НоменклатурнаяГруппа), "");
Рез22 = Рез22 + Символы.ПС + НачалоСтрокиАтрибута + Значения + ОкончаниеСтрокиАтрибута;

//Количество
НачалоСтрокиАтрибута = "<" + "Количество" + ">";
ОкончаниеСтрокиАтрибута = "</" + "Количество" + ">";
Значения = Выборка.Количество;
Рез22 = Рез22 + Символы.ПС + НачалоСтрокиАтрибута + Значения + ОкончаниеСтрокиАтрибута;

//Выручка
НачалоСтрокиАтрибута = "<" + "Выручка" + ">";
ОкончаниеСтрокиАтрибута = "</" + "Выручка" + ">";
Значения = Выборка.СуммаВыручки;
Рез22 = Рез22 + Символы.ПС + НачалоСтрокиАтрибута + Значения + ОкончаниеСтрокиАтрибута;

//Прибыль
НачалоСтрокиАтрибута = "<" + "Прибыль" + ">";
ОкончаниеСтрокиАтрибута = "</" + "Прибыль" + ">";
Значения = Выборка.Прибыль;
Рез22 = Рез22 + Символы.ПС + НачалоСтрокиАтрибута + Значения + ОкончаниеСтрокиАтрибута;


Рез22 = Рез22 + Символы.ПС + "</PowerBI>";

КонецЦикла;

Возврат Рез22;
Прикрепленные файлы:
5. DenisCh 28.02.17 17:06 Сейчас в теме
Эмммм....

А зачем ты нам wsdl показываешь? Ты покажи то, что тебе вебсервис.GetTable() отдаёт...
6. thenroach 4 28.02.17 17:09 Сейчас в теме
(5)При обращении к веб сервису по ссылке ... /DataExchange/ws/DataExchange.1cws?wsdl

должен возвращаться xml. Разве это не так работает?
7. RomanMartynenko 28.02.17 17:21 Сейчас в теме
(6)wsdl - это описание веб-сервиса
https://ru.wikipedia.org/wiki/WSDL

из ссылки нужно убрать с конца "?wsdl"
8. ditp 94 28.02.17 17:21 Сейчас в теме
(6)
Разве это не так работает?
Нет.

/DataExchange/ws/DataExchange.1cws?wsdl возвращает описание web-сервиса.
Для получения данных нужно формировать запрос с указанием конкретного метода.
10. thenroach 4 28.02.17 17:36 Сейчас в теме
(8)Можете привести пример как должна выглядеть ссылка?
/....(сервер)/DataExchange(база)/ws/имяфайла веб-сервиса.

Имя метода веб-сервиса getTable()

Что нужно убрать/добавить?
11. RomanMartynenko 28.02.17 17:41 Сейчас в теме
(10) чтобы работать с методами веб-сервиса? из вашей ссылки нужно только убрать последние символы, получится:
/DataExchange/ws/DataExchange.1cws

туда нужно отправлять запрос в формате soap

вы откуда запрос отправляете? тоже 1С или JavaScript какой-нибудь?
13. thenroach 4 28.02.17 17:54 Сейчас в теме
(11)В Microsoft Power BI передается ссылка /DataExchange/ws/DataExchange.1cws?wsdl.

После этого в Power BI должен получить по этой ссылке файл xml c данными.

То есть, запрос мы нигде не формируем специально. Нужно что то доделать в 1С. Или оно так не работает?

Мне нужно при переходе по этой ссылке в Microsoft Power BI нужно получить результат работы функции веб-сервиса GetData().
14. RomanMartynenko 28.02.17 18:08 Сейчас в теме
(13) А если передать такую ссылку: "/DataExchange/ws/DataExchange.1cws"?
15. semyon 28.02.17 19:53 Сейчас в теме +20 $m
(13) Переходом по этой ссылке результат не получить.
SOAP-сервисы так не работают.
Кроме пути к описанию сервиса - wsdl нужно в Microsoft Power BI указать еще имя сервиса, имя порта и имя метода, который будет возвращать данные.
Если нужно получать данные по ссылке - то нужно использовать скорее http-сервисы.
9. DenisCh 28.02.17 17:24 Сейчас в теме
(6)
Вот как у меня

опр = WSСсылки.WSTest.ПолучитьWSОпределения();
сервис0 = опр.Сервисы[0];

сервис = Новый WSПрокси(опр, сервис0.URIПространстваИмен, сервис0.Имя, сервис0.ТочкиПодключения[0].Имя);
Сервис.Пользователь = "WS";
Сервис.Пароль = "ws64ws";

рез = сервис.getPlombes(уид);

Чтение = новый ЧтениеXML;
Чтение.УстановитьСтроку(рез);

Попытка
массивПломб = ФабрикаXDTO.ПрочитатьXML(Чтение,ФабрикаXDTO.Тип("http://www.dc.org","МассивПломб"));
Исключение
Сообщить("Ошибка чтения набора записей
|" + ОписаниеОшибки());

Возврат тз;
КонецПопытки;
12. RomanMartynenko 28.02.17 17:49 Сейчас в теме
Если в 1С 8.2 то можно так примерно обратиться:
    wsopr = Новый WSОпределения(".../DataExchange/ws/DataExchange.1cws?wsdl");
    
    ws = Новый WSПрокси(wsopr, "string", "DataExchange", "DataExchangeSoap");

    <b>ws.getTable()</b>

Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот