特别是在NAV 2013中。当我使用Page webservice查找记录时,我收到如下响应:
<Soap:Envelope xmlns:Soap="http://schemas.xmlsoap.org/soap/envelope/">
<Soap:Body>
<ReadMultiple_Result xmlns="urn:microsoft-dynamics-schemas/page/[PAGENAME]">
<ReadMultiple_Result>
<[RECORDNAME]>
<Key>##;[KEYSTUFF KEYSTUFF KEYSTUFF];[OTHER KEYSTUFF];</Key>
<[OTHERFIELD]>[OTHERDATA]</[OTHERFIELD]>
</[RECORDNAME]>
</ReadMultiple_Result>
</ReadMultiple_Result>
</Soap:Body>
</Soap:Envelope>
...然后,如果我想通过网络服务与该记录进行交互以执行Update
或Delete
,我必须使用Key
字段来引用它直接
我想知道的是,我是否可以通过Codeunit Web服务公开XMLPort,并且仍然直接导出Key
字段,或者如果我必须进行单独查找以将其添加到导出中每一行?或者,如果将此信息作为页面公开可能更有意义,因为我计划与记录进行交互?
答案 0 :(得分:1)
在this question中,一个人声明
至少部分密钥是构成主键的列的Base64编码字符串
因此密钥的第一部分是某种salt或时间戳,用于避免在通过公开页面进行更新时覆盖记录。
Nav中没有允许为某些记录计算Web服务密钥的功能,也无法在C / AL中使用此密钥来获取记录。
如果您打算使用公开的codeunit进行读取和写入,则可以使用XML port
Direction
属性设置为Both
作为过程参数来读取和更新记录表(一个或多个)。当然,在这种情况下,您必须使用XML端口中的所有主键字段来标识记录。