0

我試圖讓所有客戶在DateTime字段的值後創建/更新。
從Dynamics NAV Web Service獲取更新和新記錄

在Dynamics CRM中我會定期調用此方法:

DateTime LastCheckedCRMAccount { get; set; } 
private List<Account> GetCRMAccounts() 
{ 
    CRMLinq.ClearChanges(); // otherwise old data may be retrieved 
    IEnumerable<Account> accounts = from acc in CRMLinq.AccountSet 
            where acc.ModifiedOn > LastCheckedCRMAccount 
            select acc; 
    List<Account> accountList = accounts.ToList(); 
    LastCheckedCRMAccount = DateTime.Now.ToUniversalTime(); 
    return accountList; 
} 

這就是我對動態NAV的時刻:

DateTime LastCheckedNAVCustomer { get; set; } 
private Customer[] GetNAVCustomers() 
{ 
    Customer_Filter filter = new Customer_Filter(); 
    filter.Field = Customer_Fields.Last_Date_Modified; 
    filter.Criteria = LastCheckedNAVCustomer.ToString("ddMMyyyy") + ".."; 
    Customer[] customers = nCustomer.ReadMultiple(new Customer_Filter[] { filter }, null, 0); 
    LastCheckedNAVCustomer = DateTime.Now; 
    return customers; 
} 

似乎沒有成爲一個「ModifiedOn 「在NAV顧客桌上的領域;有一個名爲「Last Date Modified」的字段,但只包含日期。

我想讓NAV客戶的CRM帳戶保持最新狀態。

有沒有更好的方法來做到這一點?

+0

我不知道更好的方法,因爲我對Nav一無所知,但我會提醒您確保LastCheckedCRMAccount是UTC,因爲那是您在AccountSet LINQ語句中進行比較的原因 – Daryl

回答

1

如果您想要這樣做,最好爲Customer表添加一個新的DateTime字段,並在插入和修改時用CURRENTDATETIME填充它。您也可能需要管理客戶表中的刪除和重命名。

您是否考慮過通過Dynamics Connector使用標準CRM與NAV集成?

http://msdn.microsoft.com/en-us/library/gg502460.aspx

有基金淨值,涵蓋您的需求實現的功能。您可以查看Codeunit 1中的「集成」對象+ OnDatabase觸發器。此處的主要想法是,所有表修改的/插入/刪除都反映在「集成記錄」表中,可用於獲取列表的客戶記錄需要更新到CRM。