当在 php 中向 Web 服务发送过滤器时,一切正常,但是当我们需要对日期进行排序时,我们遇到了问题。我们需要获取在特定日期之后修改的所有对象。
在页面中我们有一个日期元素,如下所示:
<xsd:element minOccurs="0" maxOccurs="1" name="Last_Date_Modified" type="xsd:date"/>
我们已经尝试过这里解释的解决方案:
Dynamics Nav (Navision) web 服务 ReadMultiple 日期过滤器
但我们的日期格式有点不同,我们的看起来像:2013-01-01
在我们的过滤器中,我们尝试了以下操作:
array(
'Field' => 'Last_Date_Modified',
'Criteria' => '20130101..'
)
还有一些其他变体,但它不会返回任何内容。如果我们将其留空,它将返回所有内容。有人知道我们能做什么吗?如果我们以某种方式将last_modified_date存储为像unix时间戳这样的bigint,会有帮助吗?
我已经使用 SOAPui 测试了类似的设置,以下是我得到的结果:
传出消息:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:obj="urn:microsoft-dynamics-schemas/page/objlist">
<soapenv:Header/>
<soapenv:Body>
<obj:ReadMultiple>
<obj:filter>
<obj:Field>Date</obj:Field>
<obj:Criteria>>=01012013</obj:Criteria>
</obj:filter>
<obj:bookmarkKey></obj:bookmarkKey>
<obj:setSize></obj:setSize>
</obj:ReadMultiple>
</soapenv:Body>
</soapenv:Envelope>
它会产生正确的响应(自 1 月份以来,我的数据库中有 3 条记录发生了更改)
如果我输入,响应也是正确的01012013..
or 01.01.2013..
甚至01/01/2013..
但将返回错误作为响应20130101..
作为回应,该字段具有这样的值<Date>2013-05-15</Date>
但这对于我的位置来说是不正确的格式。
因此,您的导航服务器正在等待您的请求中的其他日期格式。检查导航服务器的CustomSettings.config
文件看看是否有<add key="ServicesCultureDefaultUserPersonalization" value="true"/>
钥匙。如果将其设置为“false”,服务器将以 en-us 日期和数字格式工作。
另请检查User Personalization
导航中的表。如果上一个键设置为 true,则 Nav 将尝试使用此表中为用户定义的语言设置。
如果没有任何帮助,请尝试 SOAPui 来查明 Nav 响应是否正确为直接消息(请参阅上面的格式或使用您的 wsdl 文件提供soapui)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)