2013-05-16 4 views
0

"연락처"엔티티가 변경 될 때마다 이전 "연락처"엔티티의 모든 데이터가있는 "이력 담당자"엔티티가 작성 될 감사 플러그인을 작성하려고합니다. 변화.관련 조회 필드를 채우는 방법 CRM 2011

내 질문에 "계정"에 "연락처"에 조회 필드가있는 경우이 조회를 특정 "계정"으로 가져와 "기록 연락처"엔티티의 조회 필드에 어떻게 배치합니까?


플러그인이 완료되었지만 이제는 새로운 문제가 있습니다.

"연락처"엔티티는 "이름"필드에 공백이있을 수 있습니다.

필수 항목은 아니지만 "기록 연락처"엔터티는 기본 필드로 "이름"을 사용합니다.

"기록 연락처"항목을 만들 때 "이름"이 없으면 오류가 발생합니다. 나는 이것이 왜 있는지 모른다.

필드에 "제한 없음"이라는 레이블이 지정되어 있어도 엔터티를 만들려면 기본 필드가 필요합니까?

답변

0

당신은 두 가지 옵션이

public void Execute(IServiceProvider serviceProvider) 
{ 
    var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); 
    var service = ((IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory))).CreateOrganizationService(context.UserId); 

    var originalContact = context.InputParameters["Target"] as Entity; 
    var newContact = new Entity("new_historicalcontact"); 
    if (originalContact.Contains("firstname")) 
    { 
     newContact.Add("new_firstname", orginalContact["firstname"]); 
    } 
    if (originalContact.Contains("emailaddress1")) 
    { 
     newContact.Add("new_emailaddress1", orginalContact["emailaddress1"]); 
    } 
    if (originalContact.Contains("parentcustomerid")) 
    { 
     newContact.Add("new_parentcustomerid", orginalContact["parentcustomerid"]); 
    } 

    //etc etc for other properties 
    service.Create(newContact); 
} 

당신이 플러그인에 익숙하지 않은 경우를, 튜토리얼의 많음이 주변에있다, 당신은 할 수 내가 추천 한 것과 같은 것으로 시작하십시오. this question

2) 감사 기능을 사용하십시오. 당신이 찾고있는 것일 수도 있고 아닐 수도 있지만 그것에 대해 더 많이 읽을 수 있습니다. herehere

0

잘 모르겠습니다. 무언가가 바뀌면 연락처의 전체 복사본을 만들고 있습니까? 그렇게하려면 Update Execute of Update 메시지의 Pre Image를 사용하는 것이 매우 간단합니다. 사전 이미지는 업데이트 전에 연락처의 스냅 샷입니다.

그러나 제공된 감사 기능을 사용하지 않는 이유는 무엇입니까?

1) 다음의 라인을 따라 플러그인 작성 :