web服务-我可以在XMLPort中以我想要的方式使用NAV表记录中的Key字段吗



特别是在NAV 2013中。当我使用Page Web服务查找记录时,我会得到如下响应:

<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>

然后,如果我想通过Web服务与该记录交互以执行UpdateDelete,我必须使用Key字段来直接引用它。

我想知道的是,我是否可以通过Codeunit Web服务公开XMLPort,并且仍然直接导出该Key字段,或者我是否必须进行一些单独的查找才能将其添加到每行的导出中?或者,由于我计划与记录交互,将这些信息作为页面公开可能更有意义吗?

在这个问题中,一个人说

密钥的至少一部分是组成主密钥的列的Base64编码字符串

因此,密钥的第一部分是某种salt或时间戳,用于避免在通过公开页面更新时覆盖记录。

Nav中没有允许计算特定记录的web服务密钥的功能,也没有办法在C/AL中使用该密钥来获取记录。

如果您打算使用公开的代码单元进行读取和写入,则可以使用XML port,将Direction属性设置为Both,作为读取和更新某些表中记录的过程参数。当然,在这种情况下,您必须使用XML端口中的所有主键字段来标识记录。

最新更新