Microsoft Dynamics CRM 2015 - создание объекта с использованием OData API
Не уверены, почему следующий запрос дает ошибку следующим образом:
Ошибка обработки потока запросов. Запрос должен быть допустимым объектом ресурса верхнего уровня.
Запрос (некоторые детали были скрыты по понятным причинам):
POST http://someUrl.com/someUrl/XRMServices/2011/OrganizationData.svc/someSet HTTP/1.1
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
Accept-Encoding: gzip, deflate
Content-Length: 387
Host: someUrl.com
{
"paymentid": {
"Id": "00e3f661-8d28-e321-896e-00155dfd1d05",
"LogicalName": "payment"
},
"invoiceid": {
"Id": "00e3f661-8d28-e411-896e-00155dfd1d05",
"LogicalName": "invoice"
},
"AppliedAmount": 1317.53000,
"name": "Payment Applied",
"postingstatus": "Posted",
"transactioncurrencyid": {
"Id": "80870a9b-329e-d421-8a22-00155d025001",
"LogicalName": "transactionCurrency"
}
}
Все логические имена были получены в результате выполнения следующего запроса:
select
LogicalName
from
NHLPA_MSCRM.dbo.EntityView
where
BaseTableName = 'paymentbase' -- | invoicebase | transactioncurrencybase
1 ответ
Резюме: используйте
OrganizationData.svc/someSet
URL-адрес, чтобы получить список существующих сущностей, предоставляя совершенную ссылку на необходимую структуру JSON (минус_metaData
свойства)
Так что проблема оказалась довольно простой.
Лицо someSet
не было проблемой, как обозначается возможность доступа http://someUrl.com/someUrl/XRMServices/2011/OrganizationData.svc/someSet
без проблем.
Далее углубляясь в вещи, это были внутренние логические сущности (платеж, счет, валюта транзакции). Как уже упоминалось, эти логические имена были получены из базы данных, которая соответствовала странице настроек объекта (изображение ниже).
Тем не менее, все следующие URL не будут разрешены:
http://someUrl.com/someUrl/XRMServices/2011/OrganizationData.svc/paymentSet
http://someUrl.com/someUrl/XRMServices/2011/OrganizationData.svc/invoiceSet
http://someUrl.com/someUrl/XRMServices/2011/OrganizationData.svc/transactionCurrencySet
Проблема заключалась в том, что, несмотря на то, что во всех местах, где вы найдете логическое имя сущности, строчные буквы, первую букву нужно было использовать с большой буквы, например:
http://someUrl.com/someUrl/XRMServices/2011/OrganizationData.svc/PaymentSet
http://someUrl.com/someUrl/XRMServices/2011/OrganizationData.svc/InvoiceSet
http://someUrl.com/someUrl/XRMServices/2011/OrganizationData.svc/TransactionCurrencySet
И рабочая полезная нагрузка:
{
"paymentid": {
"Id": "00e3f661-8d28-e321-896e-00155dfd1d05",
"LogicalName": "Payment"
},
"invoiceid": {
"Id": "00e3f661-8d28-e411-896e-00155dfd1d05",
"LogicalName": "Invoice"
},
"AppliedAmount": 1317.53000,
"name": "Payment Applied",
"postingstatus": "Posted",
"TransactionCurrencyId": {
"Id": "80870a9b-329e-d421-8a22-00155d025001",
"LogicalName": "TransactionCurrency"
}
}