日期筛选
当发送一个滤光器在PHP一切web服务工作正常,但是当我们需要排序的日期,我们遇到了一个问题。我们需要在某个日期之后获取所有对象的修改。日期筛选
在一个页面,我们有一个日期元素,像这样:
<xsd:element minOccurs="0" maxOccurs="1" name="Last_Date_Modified" type="xsd:date"/>
我们已经尝试过的解决方案在这里解释的SO:
Dynamics Nav (Navision) webservice ReadMultiple date filter
但我们的日期格式是有点不同,我们的样子如下:2013-01-01
在我们的过滤器中,我们尝试了以下操作:
array(
'Field' => 'Last_Date_Modified',
'Criteria' => '20130101..'
)
还有一些其他的变化,但它不会返回任何东西。如果我们将其留空,它将返回所有内容。有没有人有一个想法,我们可以做什么?如果我们以某种方式将last_modified_date作为bigint存储为unix时间戳,会有帮助吗?
我测试过类似的设置与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>
它导致正确的响应(3个记录我在我的基地变迁自一月份以来) 同样的反应是正确的,如果我把01012013..
或01.01.2013..
甚至01/01/2013..
但错误将在响应中返回了20130101..
在响应THI s字段有这样的值<Date>2013-05-15</Date>
这是我的位置虽然不正确的格式。
因此,您的导航服务器正在等待您的请求中的其他日期格式。检查导航服务器的CustomSettings.config
文件,看它是否有<add key="ServicesCultureDefaultUserPersonalization" value="true"/>
键。如果将其设置为“false”,服务器将以en-us日期和数字格式工作。
同时检查User Personalization
表中导航。如果前一个键设置为true,则Nav将尝试使用此表中为用户定义的语言设置。
如果没有什么可以帮助尝试SOAPui来了解Nav响应是否正确指示消息(请参阅上面的格式或使用wsdl文件喂养soapui)。
我已经尝试了两个,我得到一个错误代码:“不是有效的日期”。 – nielsiano 2013-05-15 08:50:11
需要更多信息。我不知道PHP如何使用Web服务。如果您发布发送给Nav的肥皂消息和来自Nav的肥皂响应,这将有所帮助。如果您使用某种隐藏您的消息的框架,请使用嗅探器来捕获它们。 – 2013-05-15 11:08:17
我感谢您的帮助。我使用Freddy的方法通过PHP进行连接,如下所述:http://blogs.msdn.com/b/freddyk/archive/2010/01/19/connecting-to-nav-web-services-from-php .aspx – nielsiano 2013-05-15 11:25:30