1. lonedeadly 25.09.20 11:02 Сейчас в теме
Создан Web-Сервис. При выполнении любого метода, ответ оборачивается в return, для заказчика важно изменить это название на свое, т.к. данный сервис уже был интегрирован с другой программой (не 1С), сейчас мы переносим функционал (soap wsdl) с той программы в 1С.
При описании Wsdl схемы есть такой вот участок с ответом на запрос:

<xs:element name="GetAllWkCargoesResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="return" type="xs5:ArrayOfWkCargo" nillable="true"/>
</xs:sequence>
</xs:complexType>
</xs:element>

Вопрос: Можно ли поменять имя обертки ответа? Вместо "return" на свое?
В интерфейсе не нахожу такой возможности
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. malikov_pro 1304 25.09.20 11:34 Сейчас в теме
Вариант сделать на уровне HTTP-сервиса, который дергает Web-сервис, и корректирует ответ, костыль типа middleware.
Корректировать на уровне самого web сервиса врятли, т.к. оберткой занимается платформа.
Возможно ошибаюсь, т.к. больше работаю с HTTP, web сильно не ковырял.
5. SagittariusA 25.09.20 14:13 Сейчас в теме
(2) тоже склоняюсь к тому, что именно за упаковку ответа отвечает платформа.
3. malikov_pro 1304 25.09.20 11:40 Сейчас в теме
Посмотрел внимательнее в типовые
За возврат данных отвечает функция и отдает строкой
Функция ПолучитьДанные(КодМобильногоКомпьютера)
	
	УстановитьПривилегированныйРежим(Истина);
	
	УзелОбмена = ПланыОбмена.МобильноеПриложение.НайтиПоКоду(КодМобильногоКомпьютера); 
	
	Если УзелОбмена.Пустая() Тогда
		ВызватьИсключение(НСтр("ru='Неизвестное устройство - '") + КодМобильногоКомпьютера);
	КонецЕсли;
	
	Возврат ОбменМобильноеПриложениеОбщее.СформироватьЕдиныйПакетВыгрузки(УзелОбмена);
	
КонецФункции
Показать


в которой

	ЗаписьСообщения.ЗакончитьЗапись();
	
	Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9));
	
КонецФункции // СформироватьПакетОбмена()


Перехватите XML и поправьте как нужно.
4. lonedeadly 25.09.20 12:02 Сейчас в теме
(3) Здесь проблема в том, что заполняется и возвращается XDTO пакет (Какой это тип объекта в php я не знаю), и если даже преобразовать XDTO в XML, то в xml не будет того поля, которое нужно изменить.
Вот преобразованный XDTO пакет.
<?xml version="1.0"?>
<ArrayOfWkPlace xmlns="http://schemas.datacontract.org/2004/07/TDServer.ClientsModel.View.EShopViews.WK" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<WkPlace>
<ID>222</ID>
<Name>МВК</Name>
</WkPlace>
</ArrayOfWkPlace>

а со стороны например PHP это выглядит так:
Прикрепленные файлы:
6. malikov_pro 1304 25.09.20 14:38 Сейчас в теме
(4) Возвращается XML, XDTO выступает как каркас при формировании.

Предположу что зависит от даных в "Возврат", потому что в типовой применяются варианты

Возврат Истина;
Возврат "";

Результат = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.1c.ru/SaaS/ExchangeAdministration/Common/2.4.5.1", "ExchangeFeatures"));
Возврат Результат;

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку("UTF-8");
ЗаписьXML.ЗаписатьОбъявлениеXML();

Фабрика.ЗаписатьXML(ЗаписьXML, ОбъектОбмена);
	
УдалитьФайлы(ИмяВременногоФайлаПравилОбмена);
	
Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9));

Показать
7. lonedeadly 25.09.20 16:03 Сейчас в теме
(6) Всё, понял что вы имеете ввиду, сейчас попробую.

Собранный XDTO пакет записать в XML, и обернуть уже в нужный тэг (либо с помощью того же XDTO пакета и вновь записать в xml, либо вручную сразу).

До этого возвращал Значение с типом (XDTO пакет)
8. and_sk 14 25.09.20 17:37 Сейчас в теме
в Общих/ХДТО-пакетах ищите и меняйте

можно взять из другой программы XLM схему и экспортировать ее в ваши Общие/ХДТО-пакеты
потом старый объект GetAllWkCargoesResponse - удалить
а новый переименовать соответсвенно
10. lonedeadly 28.09.20 13:58 Сейчас в теме
(8) GetAllWkCargoesResponse это не тип объекта XDTO, его нет в дереве, он формируется автоматически
9. lonedeadly 28.09.20 13:58 Сейчас в теме
(6) Нет, не получится. Тут проблема в том, что обмен в xml формате, но по протоколу soap. Soap добавляет свои тэги, за это отвечает Web-Сервис + он же и формирует наименование return при возврат ответа.
Оставьте свое сообщение

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