|
Передать в качестве параметра метода веб сервиса XML | ☑ | ||
---|---|---|---|---|
0
cmex
22.04.19
✎
20:12
|
Доброго дня!
В SoapUI рабочий текст "<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:plug="http://plugins.operday.ERPIntegration.crystals.ru/"> <soapenv:Header/> <soapenv:Body> <plug:getPurchasesByParams> <dateOperDay>2019-04-22</dateOperDay> <shopNumber>999</shopNumber> </plug:getPurchasesByParams> </soapenv:Body> </soapenv:Envelope>" Как из 1С вызвать метод getPurchasesByParams и передать туда этот xml? код не работает, не достаточно параметров СтрокаXML = " |<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:plug=""http://plugins.operday.ERPIntegration.crystals.ru/""> |<soapenv:Header/> |<soapenv:Body> | <plug:getPurchasesByParams> | <dateOperDay>2019-04-22</dateOperDay> | <shopNumber>999</shopNumber> | </plug:getPurchasesByParams> | </soapenv:Body> |</soapenv:Envelope>"; Ответ = Прокси.getPurchasesByParams(СтрокаXML); Помогите разобраться, куда копать |
|||
1
Cyberhawk
22.04.19
✎
20:15
|
Ну либо через ВС-прокси, создаваемое из ВСДЛ-описания (в т.ч. на лету), либо через ХТТП-соединение и его ХТТП-запрос.
Второе надежнее (в плане гарантированного успеха), т.к. 1С не с любым ВСДЛ-описанием умеет. |
|||
2
cmex
22.04.19
✎
20:26
|
(1) а можно поподробнее? что в моем коде переделать? если через ВС
|
|||
3
cmex
22.04.19
✎
21:07
|
кто нибудь, хеелп
|
|||
4
Cyberhawk
22.04.19
✎
21:14
|
Ну тебе в метод надо не текст ХМЛ передавать, а ХДТО-объект (структуру / соответствие в терминологии 1С), созданный через фабрику ВС-прокси, с нужными полями dateOperDay и shopNumber
|
|||
5
cmex
22.04.19
✎
23:33
|
(4) СвояФабрикаXDTO = Определения.ФабрикаXDTO;
КорневойТип = СвояФабрикаXDTO.Тип(ПрострИмен, "getPurchasesByParams"); КорневойОбъект = СвояФабрикаXDTO.Создать(КорневойТип); КорневойОбъект.dateOperDay = элОперационныйДень; КорневойОбъект.shopNumber = 93; ДвоичныеДанные = Прокси.getPurchasesByParams(КорневойОбъект); не достаточно параметров |
|||
6
azernot
22.04.19
✎
23:45
|
Прокси.getPurchasesByParams(КорневойОбъект.dateOperDay, КорневойОбъект.shopNumber)
А если так? |
|||
7
cmex
22.04.19
✎
23:54
|
(6) момент
|
|||
8
cmex
22.04.19
✎
23:58
|
(6) то же самое - недостаточно фактических параметров. я вот принцип не могу понять, что в качестве параметров в метод можно передавать? там явно надо 5 значений. то есть если я передам всего один и там укажу "фигню" , он тупо не пропустит количество этих параметров, даже не дойдет до проверки "фигни". как будто платформа из Определения видит, что все 5 параметров обязательны для заполнения и дальше сама 1с не пускает
|
|||
9
cmex
23.04.19
✎
00:00
|
добавляю WS ссылку , там у 4х параметров "Возможно пустое" = Истина, но ощущение что на заборе тоже написано, а по факту очень даже обязательное. Если передаю такое Прокси.getPurchasesByParams("2019-04-22", 93 , 0 ,0,0), то ответ приходит, но пустой, но приходит
|
|||
10
cmex
23.04.19
✎
00:03
|
а можно как то создать xdto объект из WS прокси, но при этом удалить оттуда ненужные свойства? может платформу глючит?
|
|||
11
palsergeich
23.04.19
✎
00:13
|
(10) Можно сохранить схему, из нее убрать ненужные свойства, потом прочитать схему и создать XDTO объект на основании модифицированной схемы.
Там есть еще фишка. если это платформенная интеграция, то в БСП вроде схемы сохраняются в регистре сведений, кше чего то там, и если запись в регистре есть, то он не лезет за самой схемой в источник и может быть невалидная схема на текущий момент хранится. На сколько я помню в обработке из состава БСП - обновление вспомогательных данных - можно этот регистр почистить |
|||
12
palsergeich
23.04.19
✎
00:14
|
Платформенная имеется ввиду коробочная интеграция от вендора
|
|||
13
palsergeich
23.04.19
✎
00:21
|
регистр сведений "Кэш программных интерфейсов" вспомнил
|
|||
14
cmex
23.04.19
✎
07:24
|
(11) не совсем понял, какую схему и как сохранить? буду признателен за чуть поподробнее)
|
|||
15
cmex
23.04.19
✎
09:36
|
up
|
|||
16
cmex
23.04.19
✎
13:17
|
коллеги, победил, но убого - через "MSXML2.XMLHTTP". есть еще варианты или мой окультурить как то можно?
Запрос = " |<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:plug=""http://plugins.operday.ERPIntegration.crystals.ru/""> |<soapenv:Header/> |<soapenv:Body> |<plug:getPurchasesByParams> |<dateOperDay>"+Формат(элОперационныйДень,"ДФ=""yyyy-MM-dd""")+"</dateOperDay> |<shopNumber>93</shopNumber> |</plug:getPurchasesByParams> |</soapenv:Body> |</soapenv:Envelope>"; MSXML = Новый COMОбъект("MSXML2.XMLHTTP"); MSXML.open("POST", "http://" + МестоположениеWSDL + "/SET-ERPIntegration/FiscalInfoExport?wsdl", 0); MSXML.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); MSXML.setRequestHeader("Content-Length", СтрДлина(Запрос)); MSXML.setRequestHeader("SOAPAction", "getPurchasesByOperDay"); MSXML.send(Запрос); ОтветПолучен = Ложь; Для НомерЦикла = 1 по 100 Цикл Если MSXML.readyState > 3 Тогда ОтветПолучен = Истина; Прервать; КонецЕсли; КонецЦикла; Если ОтветПолучен Тогда ДвоичныеДанные = Base64Значение(MSXML.responseXML.text); |
|||
17
cmex
23.04.19
✎
17:24
|
up
|
|||
18
Cyberhawk
23.04.19
✎
17:24
|
Кому охота разбираться в твоих мытарствах?
|
|||
19
cmex
23.04.19
✎
17:27
|
(18) ты только последний вариант про окультурить решил рассмотреть? Как по умному то сделать?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |