2

Dynamics CRM内では、リードエンティティにはステータスとステータス理由の両方があります。APIを使用して、すべてのステータス理由を取得できます。私がつまずくのは、ユーザーがステータス理由を選択したときです。逆方向に作業して、選択したステータス理由に関連付けられているステータスを確認したいと思います。

すべてのステータス理由を取得する方法は次のとおりです。

 //get the list of status reasons 
 RetrieveAttributeRequest request = new RetrieveAttributeRequest();
 request.EntityLogicalName = "lead";
 request.LogicalName = "statuscode";

 RetrieveAttributeResponse response = RetrieveAttributeResponse)theOrgContext.Execute(request);
StatusAttributeMetadata picklist = (StatusAttributeMetadata)response.AttributeMetadata;
 foreach (OptionMetadata option in picklist.OptionSet.Options)
 {
  retval.ListOfStatuses.Add(option.Value.Value, option.Label.UserLocalizedLabel.Label.ToString());
 }

エンティティを更新するには、LINQを使用しています。

 //set the status to the new value
 theLead.StatusCode.Value = int.Parse(statusValue);

theLead.StateCode = ???

//mark the object as updated
theContext.UpdateObject(theLead);

//persist the changes back to the CRM system
theContext.SaveChanges();

CRMにクエリを実行して、???に入力する必要のある値を把握する方法がわかりません。

4

1 に答える 1

3

ステータス付きの状態の情報を取得できます。

RetrieveAttributeRequest req = new RetrieveAttributeRequest();
req.EntityLogicalName = "lead";
req.LogicalName = "statuscode";
req.RetrieveAsIfPublished = true;
RetrieveAttributeResponse res = (RetrieveAttributeResponse)yourContext.Execute(req);

StatusAttributeMetadata attribute = (StatusAttributeMetadata)res.AttributeMetadata;
foreach (StatusOptionMetadata oStatusOptionMetaData in attribute.OptionSet.Options)
{
    var state = oStatusOptionMetaData.State.Value;
    var status = oStatusOptionMetaData.Value.Value;
}
于 2012-04-10T22:32:02.620 に答える