Может кто-нибудь преобразовать мой SQL-запрос в хранимую процедуру или выражение запроса

`` У меня есть этот SQL-запрос, в котором я пытаюсь получить идентификатор возможности из объекта возможности, для которого документ утверждения не был создан (документ подтверждения - это имя другого объекта) . Я не думаю, что fetchxml поддерживает такой тип запроса. Я новичок в crm, и мой проект в версии crm 4.0.

вот запрос sql:

Select OpportunityId 
from opportunity AS c 
    left JOIN (
        select a.opportunitynameid 
        from opportunity o
            JOIN ApprovalDocument a ON a.opportunitynameid=o.OpportunityId
    ) AS b ON c.OpportunityId=b.opportunitynameid
Where b.opportunitynameid IS NULL and statecode=0

QueryExpression query = new QueryExpression ("new_doc"); // используем имя вашей сущности ColumnSet cols = new ColumnSet();

    cols.AddColumn("new_opportunitynameid");
    ConditionExpression cond = new ConditionExpression("new_opportunitynameid",ConditionOperator.NotNull);
    query.ColumnSet = cols;
    query.Criteria.AddCondition(cond);

    RetrieveMultipleRequest req = new RetrieveMultipleRequest();
    req.Query = query;
    req.ReturnDynamicEntities = true;


    RetrieveMultipleResponse res   =(RetrieveMultipleResponse)  service.Execute(req);
    List<string> docList = new List<string>();



    foreach(BusinessEntity item in res.BusinessEntityCollection.BusinessEntities)
    {
       DynamicEntity entity = (DynamicEntity)item;
       string guid = ((Lookup)(entity.Properties["new_opportunitynameid"])).Value.ToString();
       if (docList.Contains(guid))
       {
           continue;
       }
       docList.Add(guid);
    }


    // Get opps whose state code == 0
    QueryExpression query2 = new QueryExpression("opportunity");
    ColumnSet cols2 = new ColumnSet();
    cols2.AddColumn("opportunityid");
    cols2.AddColumn("statecode");

    ConditionExpression cond2 = new ConditionExpression("statecode",ConditionOperator.Equal,"Open");
    query2.ColumnSet = cols2;
    query2.Criteria.AddCondition(cond2);

    RetrieveMultipleRequest req2 = new RetrieveMultipleRequest();
    req2.Query = query2;
    req2.ReturnDynamicEntities = true;


    RetrieveMultipleResponse res2 = (RetrieveMultipleResponse)service.Execute(req2);
    List<string> oppList = new List<string>();



    foreach (BusinessEntity item in res2.BusinessEntityCollection.BusinessEntities)
    {
        DynamicEntity entity = (DynamicEntity)item;
        string guid = ((Microsoft.Crm.Sdk.Key)(entity.Properties["opportunityid"])).Value.ToString();

        if(oppList.Contains(guid))
        {
        continue;
        }
        oppList.Add(guid);
    }

    // diff is our final list
    List<string> diff = new List<string>();
    foreach(string item in oppList)
    {
    if(docList.Contains(item) == false)
    diff.Add(item);
    }

    // now create document records for all opportunitites in diff list
    // To do 


    }

0 ответов

Другие вопросы по тегам