dynamics 365 API 9.1将联系人与opportunity关联

2024-05-15 23:56:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我们正在使用Python中的https://github.com/dangoscomb/pydynamics连接到我们的Dynamics 365组织

我们可以创建、选择和更新实体集

import pydynamics
from pydynamics.client import Client
from pydynamics.querybuilder import QueryBuilder
token = tokenres.json()['access_token']
pdc = Client(token, endpoint=CREDENTIALS['resource'] + CREDENTIALS['api_base_url'] )

#======update contact (works fine) =========
q = QueryBuilder('contacts').guid('2bcd88c7-c295-ea11-a811-000d3a6546e3').\
    data({'firstname': 'ChangedFirstName'})
pdc.update(q)

对于关联实体,我们遵循以下步骤: https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/webapi/associate-disassociate-entities-using-web-api

POST [Organization URI]/api/data/v9.0/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref HTTP/1.1   
Content-Type: application/json   
Accept: application/json   
OData-MaxVersion: 4.0   
OData-Version: 4.0  

{  
"@odata.id":"[Organization URI]/api/data/v9.0/opportunities(00000000-0000-0000-0000-000000000001)"  
}  

如果我们这样做,我们会得到错误的json是无效的

print(js)
{'@odata.id': '<ORG>/api/data/v9.1/opportunities(4585df90-4aa3-ea11-a812-000d3a6546e3)'}

import requests
query = 'contacts(ab906e8c-4aa3-ea11-a812-000d3a65473c)/opportunity_customer_contacts/$ref'
resp=requests.post(endpoint + query, headers=headers, data=js)
resp.json()
{'error': {'code': '0x0',
  'message': 'An error occurred while validating input parameters: Microsoft.OData.ODataException: Invalid JSON. A token was not recognized in the JSON content.\r\n  

这个“@odata.id”可能有问题吗


Tags: fromhttpsimport实体comtokenapiid
1条回答
网友
1楼 · 发布于 2024-05-15 23:56:39

解决办法很简单。微软的文档不是很精确。他们写

{  
 "customerid_account@odata.bind":"[Organization URI]/api/data/v9.0/accounts(00000000-0000-0000-0000-000000000002)"  
}  

它不需要“[Organization URI]/api/data/v9.0”部分

解决方案:

q = QueryBuilder('opportunities').guid(opport_guid).\
    data({  "customerid_contact@odata.bind":  f"/contacts({contact_guid})"   })
DynamicsClient.update(q)

相关问题 更多 >