|
09.04.2019, 23:19 | #1 |
Участник
|
D365 custom web service, parsing recid
D365 v8.1 pu23
Есть ISV-решение и свой веб сервис для создания записей в своей таблице. Сервис самый обычный, он благополучно мигроровал с версии 2012. Через POSTMAN я посылаю запрос и все вроде бы работает, кроме двух полей, которые не парсятся и я не вижу, почему... Возможно, нужен свежий глаз, а возможно, я делаю что-то не так... объявление в дата контракте: X++: [DataMemberAttribute('LogisticsLocationId')] public LogisticsLocationId locationId(LogisticsLocationId _locationId = locationId) { locationId = _locationId; return locationId; } [DataMemberAttribute('LogisticsLocationRecId')] public LogisticsLocationRecId locationRecId(LogisticsLocationRecId _locationRecId = locationRecId) { locationRecId = _locationRecId; return locationRecId; } [DataMemberAttribute('LogisticsLocation')] public RecId location(RecId _location = location) { location = _location; return location; } X++: { "dataContract":{ "LogisticsLocationRecId":"22565421829", --logisticsPostalAddress.recId, cannot be parsed (?) "LogisticsLocation":5637144826, --logisticsPostalAddress.location, cannot be parsed (?) "LogisticsLocationId":"2", --works! "SalesId":"000935", --to attach record in my table to a sales order "AmountCur":"22.00", "CurrencyCode": "USD" } } X++: { "Message": "An exception occured when deserializing a parameters - Exception occured when parsing the request content - Invalid property identifier character: -. Path 'dataContract.LogisticsLocationRecId', line 18, position 48.", "ExceptionType": "XppServicesDeserializationException", "ActivityId": "3ebc8a5e-eeff-0003-3f92-bc3effeed401" } |
|
10.04.2019, 09:05 | #2 |
Участник
|
LogisticsLocationRecId - у вас в кавычках приходит, LogisticsLocation без кавычек. Где-то в (раньше это был WSDL) описано что система ожидает увидеть для LogisticsLocationRecId число, а у вас текст на входе.
|
|
|
За это сообщение автора поблагодарили: trud (5). |
10.04.2019, 16:18 | #3 |
Участник
|
На самом деле пробовала и в кавычках, и без-не парсится в любом случае.
При этом AmountCur переданная в кавычках прекрасно преобразуется в число, так же как enum значения (не показанные в примере)б например "yes" для NoYes, тоже подхватываются на ура, да и дата в кавычках тоже приезжает хорошо. Вообще в дата контракте около 30 полей, и только с этими двуми проблема (( |
|
10.04.2019, 20:28 | #4 |
северный Будда
|
на всякий случай спрошу - а порядок менять пробовали?
У вас в контракте первым идёт LogisticsLocationId, а в вызове LogisticsLocationRecId попробуйте вызывать в том же порядке, который прописан в контракте
__________________
С уважением, Вячеслав |
|
11.04.2019, 19:15 | #5 |
Участник
|
да, порядок менять пробовала. К тому же, остальные поля расположены как угодно. Мало того, можно добавлять в запрос поля, которых нет в дата контракте-парсер не ругается, но полей в дата контракте, естественно, не видно.
|
|
11.04.2019, 19:21 | #6 |
Участник
|
В 10 версии запрос работает.
Закрываю тему. |
|
|
|