从Dynamics NAV Web服务获取更新和新记录

时间:2014-03-05 09:38:18

标签: c# dynamics-crm-2011 dynamics-crm dynamics-crm-2013 dynamics-nav

我试图在DateTime字段的值之后创建/更新所有客户。

在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;
}

这就是我目前对动态资产净值的看法:

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

NAV客户表上似乎没有“ModifiedOn”字段;有一个名为“Last Date Modified”的字段,但只包含日期。

我希望让CRM客户与NAV客户保持同步。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

如果你想这样做,最好在Customer表中添加一个新的DateTime字段,并在插入和修改时用CURRENTDATETIME填充它。您还可能需要在Customer表中管理删除和重命名。

您是否考虑过通过Dynamics Connector使用标准CRM与NAV集成?

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

NAV中实现了一项功能,可满足您的需求。您可以查看Codeunit 1中的“Integration ”对象+ OnDatabase 触发器。这里的主要思想是所有表修改/插入/删除都反映在“Integration Record”表中,该表可以是用于获取需要更新到CRM的客户记录列表。