2013-05-14 188 views
2

當發送一個濾光器在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時間戳,會有幫助嗎?

回答

4

我測試過類似的設置與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>&gt;=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)。

+0

我已經嘗試了兩個,我得到一個錯誤代碼:「不是有效的日期」。 – nielsiano 2013-05-15 08:50:11

+0

需要更多信息。我不知道PHP如何使用Web服務。如果您發佈發送給Nav的肥皂消息和來自Nav的肥皂響應,這將有所幫助。如果您使用某種隱藏您的消息的框架,請使用嗅探器來捕獲它們。 – 2013-05-15 11:08:17

+0

我感謝您的幫助。我使用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