通过SOAP从Dynamics CRM 2011获取更新记录

时间:2012-11-07 12:10:56

标签: php soap dynamics-crm dynamics-crm-2011

我们正在使用PHP和SOAP(NuSOAP)为Dynamics CRM 2011系统编写Web前端。 在这样做的过程中,我们需要检索自上次导入以来已更新的实体。

我查看了现有的CRM前端,看看是否有任何提示可以作为添加标准的提示,但无济于事。

标准查询的xml如下所示:

<RetrieveMultiple xmlns="http://schemas.microsoft.com/crm/2007/WebServices">
<query xmlns:q1="http://schemas.microsoft.com/crm/2006/Query" xsi:type="q1:QueryExpression">
    <q1:EntityName>new_arrangement</q1:EntityName>
    <q1:ColumnSet xsi:type="q1:ColumnSet">
        <q1:Attributes>
            <q1:Attribute>subject</q1:Attribute>
            <q1:Attribute>activitytypecode</q1:Attribute>
            <q1:Attribute>regardingobjectid</q1:Attribute>
            <q1:Attribute>scheduledstart</q1:Attribute>
            <q1:Attribute>scheduledend</q1:Attribute>
        </q1:Attributes>
    </q1:ColumnSet>
    <q1:Criteria>
        <q1:FilterOperator>And</q1:FilterOperator>
            <q1:Condition>
                <q1:AttributeName>statecode</q1:AttributeName>
                <q1:Operator>Equal</q1:Operator>
                <q1:Values>
                    <q1:Value xsi:type="xsd:string">Open</q1:Value>
                </q1:Values>
            </q1:Condition>
        </q1:Conditions>
    </q1:Criteria>
    <q1:Orders>
        <q1:Order>
            <q1:AttributeName>subject</q1:AttributeName>
            <q1:OrderType>Ascending</q1:OrderType>
        </q1:Order>
    </q1:Orders>
    <q1:Distinct>false</q1:Distinct>
    <q1:PageInfo>
        <q1:PageNumber>1</q1:PageNumber>
        <q1:Count>20</q1:Count>
    </q1:PageInfo>
</query>

所以我正在寻找关于我应该添加哪个属性作为条件的帮助。

1 个答案:

答案 0 :(得分:1)

如果您的应用程序可以记住上次导入的日期和时间,那么您应该能够通过选中Modified On字段来获取所有新记录,我相信每个实体都有。

我想你会想要这样的查询(当然是XML格式)。

DateTime lastImportDate = ...;

QueryExpression q = new QueryExpression("contact");
q.Criteria.FilterOperator = LogicalOperator.And;
q.Criteria.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, "Open"));
q.Criteria.AddCondition(new ConditionExpression("modifiedon", ConditionOperator.GreaterThan, lastImportDate);