问题标签 [microsoft-dynamics-webapi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
json - 解决导航属性 Dynamics WebAPI 的深度插入错误
我正在使用Microsoft Dynamics Web API将数据写入 Microsoft Dynamics 365 中的实体。当我尝试执行深度插入时收到错误消息
未声明的属性 'ccseq_employeeid' 在有效负载中仅具有属性注释,但在有效负载中未找到属性值。在 OData 中,只有声明的导航属性和声明的命名流可以表示为没有值的属性。
为什么我会收到此错误,我该如何解决该错误?
JSON
ExpenseTransactionSet
是具有查找的ExpenseTransaction
含义的父级。 是一对多的关系。并且是在.ExpenseTransaction
ExpenseTransactionSet
ccseq_ccseq_expensetransactionset_ccseq_expensetransaction_ExpenseTransactionSetID
systemuser
ccseq_clients
ExpenseTransaction
我还尝试了以下变体"ccseq_employeeid@odata.bind"
objectid_systemuser@odata.bind
objectid_ccseq_employeeid@odata.bind
ccseq_employeeid@data.bind
ccseq_employeeid@odata.bind : systemusers()
ccseq_employeeid_systemusers@odata.bind
systemuserid_systemusers@odata.bind
javascript - 在导航属性失败时设置查找属性
我正在尝试POST
使用 Microsoft Dynamics WebAPI 来获取以下 json。该帖子返回成功,但在我的数据中 ccseq_employeeid 和 ccseq_clientid 未设置。我需要更改什么才能使字段正确发布?
实体结构
ccseq_expensetransaction
查找ccseq_expensetransactionsets
与具有名称的关系ccseq_ccseq_expensetransactionset_ccseq_expensetransaction_ExpenseTransactionSetID
。systemusers
对和的查找是实体ccseq_clients
的一部分。ccseq_expensetransaction
代码
dynamics-crm - Microsoft Dynamics CRM 2015 - 使用 OData API 创建实体
不确定为什么以下请求会出错,如下所示:
处理请求流时出错。请求应该是一个有效的顶级资源对象。
请求(某些细节由于明显的原因被混淆了):
所有逻辑名称均来自运行以下查询:
javascript - 在异步 Web API 调用之前保存并关闭退出的 Web 资源
我正在构建一个相当复杂的 Web 资源,它使用 Dynamics Web API 将数据读/写到 Dynamics。我有一种情况,我需要创建一个实体,该实体需要我需要创建的其他两个实体的 ID。为此,我使用两个异步调用来创建两个实体,然后使用从两个异步调用返回的数据来填充我创建的第三个实体中的数据记录。我遇到的问题是,当有人单击保存并关闭时,关闭发生在我的异步调用完成之前。发送第一个创建调用,然后发生关闭,而不会发生第二个或第三个创建。我还担心在保存时,我的 Web API 调用很可能会出现竞争情况,如果有人在保存后足够快地单击关闭,则可能无法保存所有数据。
我探索过的一些可能的解决方案要么不起作用,要么我不太喜欢
- 禁用保存并关闭(保存然后关闭时可能仍然存在竞争条件)
- 批处理(不确定这是否可行,但如果可行,难度会更大)
- 使用超时来暂停关闭(不要认为这会起作用)
- 保存完成后取消关闭并重新发出关闭(必须有更好的方法,对吧?)
javascript - 计算汇总字段动态 WebAPI
我正在尝试从microsoft-dynamics的javascriptCalculateRollupField
调用WebAPI 调用。我似乎找不到很多实现示例,并且我尝试遵循文档会引发错误:
请求 URI 无效。'CalculateRollupField' 段不能包含关键谓词,但它可能以空括号结尾
WebAPI 调用
我需要调整什么才能让这个 WebAPI 调用正常工作?
dynamics-crm - 如何使用 Web API 方法从“owner”类型的 CRM 数据库中获取“ownerid”列?
我在客户端使用Microsoft Dynamics 365。在这里,我在访问ownerid
type的一个字段时遇到了问题owner
。
我正在使用 Web API 方法来访问 CRM 数据。当我在 URL 中点击查询时,它会带来除ownerid
列之外的所有数据。
它field type
是:Simple
有没有人在使用 WebAPI 查询方法时遇到过同样的问题?
网址查询:
输出:
dynamics-crm - Dynamics CRM Web API 设置 parentactivityid 问题
我需要为电子邮件实体设置parentactivityid,方法与 CRM 在回复电子邮件时自动设置的方式相同。我正在使用适用于任何其他查找属性的相同模式,如下所示:
请求结束得很好(204)但是当我检查它返回的电子邮件时:
而不是分配的 GUID。
你知道可能是什么问题吗?
dynamics-crm - Dynamics365 web api 更新与 upsert
我很困惑。我了解这两者之间的实际区别,但我在这里看不到实际实现的任何区别。
这是文档的摘录
基本更新
更新操作使用 HTTP
PATCH
动词。将包含要更新的属性的 JSON 对象传递给表示实体的 URI。如果更新成功,将返回状态为 204 的响应。此示例使用 accountid 值 00000000-0000-0000-0000-000000000001 更新现有帐户记录。
上插
upsert 操作与更新完全一样。它使用
PATCH
请求并使用 URI 来引用特定实体。不同之处在于,如果实体不存在,它将被创建。如果它已经存在,它将被更新。通常在创建新实体时,您会让系统分配一个唯一标识符。这是一个最佳实践。但是,如果您需要创建具有特定 id 值的记录,则 upsert 操作提供了一种方法来执行此操作。这在您在不同系统中同步数据的情况下可能很有价值。有时在某些情况下您想要执行 upsert,但您想要阻止潜在的默认操作之一:创建或更新。您可以通过添加
If-Match
或If-None-Match
标题来完成此操作。有关详细信息,请参阅限制 upsert 操作。
所以实际上Basic update
如上所述upsert
,为了实现真正的基本更新(如果给定帐户存在则更新,否则为 404)我需要将If-Match: *
标头添加到PATCH
请求中。
我理解正确吗?