2010-06-24 3 views
1

CRM을 사용 중입니다. 약속 엔티티의 값으로 연락처 엔티티를 업데이트하고 싶습니다. 연락처 엔티티에는 마지막 약속 날짜와 다음 약속 날짜라는 두 개의 필드가 있습니다. 약속 엔티티의 시작 날짜와 종료 날짜의 두 필드. 이 두 값은 연락처 필드 값에 복사해야합니다. JavaScript를 사용하여이 작업을 수행하고 싶습니다.MSCRM에서 값을 업데이트하는 JavaScript

+0

FWIW, "JavaScript"는 한 단어입니다. 전혀 다른 언어 인 "Java"와의 혼동을 피하기 위해 그렇게 쓰는 것이 가장 좋습니다. :-) –

+0

이것은 [귀하의 이전 질문] (http://stackoverflow.com/questions/3109828/javascript-to-update-contact-entity)와 중복되었지만 더 분명합니다. 비록 조금 뒤쳐졌지만 다른 하나를이 dup로 닫도록 투표했습니다. 이전 질문을 삭제하고 삭제할 것을 권장합니다 (질문 텍스트 아래의 "삭제"를 클릭하면됩니다). –

답변

0

웹 서비스를 통해 CRM 엔티티를 호출하는 데는 몇 가지 방법이 있습니다. javasacript를 사용하면 오류가 발생하는 이유를 판별하는 것이 매우 어렵 기 때문에 시간이 오래 걸릴 수 있습니다. 나는 일반적으로 작은 ASP 닷넷 앱을 만들고, 웹 서비스로 CRM SDK를 추가하고, 명시 적으로 호출하고 HTTP 피들러를 사용하여 SOAP 요청을 감시하는 경향이 있습니다. 그런 다음 실제 SOAP 호출을 한 다음 호출을 복사하여 문자열로 변환하여 필요한 값을 조작 한 다음 javsacript 요청을 통해 SDK URL에 호출 할 수 있습니다. 샘플 팩 공식 마이크로 소프트 CRM입니다 자바 스크립트 여기

Javsacript examples

그리고 :

Microsoft examples pack

+0

Firefox에서 Firebug, Chrome의 Dev Tools 등을 사용하여 브라우저 기반 JavaScript를 사용하여 쉽게 HTTP를 볼 수 있습니다. –

+0

@TJ Crowder, 확실히, 나는 스스로를 결정하기 위해 취하는 단계 만 전달하려고했습니다. SOAP 요청 구문은 유일한 방법이 아닌 친숙한 조언으로 요청합니다. –

0

여기

는 자바 스크립트를 사용하여 페치/업데이트를위한 CRM SDK를 호출하는 몇 가지 예입니다 JavaScript를 사용하지 말고 Callouts (CRM 3.0) 또는 Plugin (CRM 4.0)을 사용하는 것이 좋습니다. 이는 JavaScript가 저장 클릭에서 실행되기 때문입니다. 그러나 한 번만 실행됩니다. 자바 스크립트가 실행되었지만 다른 이유로 인해 저장이 실패 할 수 있습니다 (예 : 사전 업데이트 된 콜 아웃 또는 플러그인 실패).

연락처를 액세스하기 위해 관련 ID를 사용하여이를 수행하는 업데이트 후 콜 아웃 또는 플러그인이 (내 의견으로는)보다 강력한 솔루션이 될 것입니다. 그러나 JavaScript를 통해이 작업을 수행하려는 경우 Brian Scott이 제시 한 예제를 따르는 것이 좋습니다.

0

만약 플러그인이라도 나에게 아무런 문제가 없다면 ... 실제로 플러그인을 시도했다. 나는 그것을 통과하지 못했습니다. 그래서 나는 자바 스크립트로 옮겼다. 이것은 내가 사용한 코드입니다. 공개 무효 실행 (IPluginExecutionContext 컨텍스트) { DynamicEntity entity = null;

 if (context.InputParameters.Properties.Contains("Target") && 
      context.InputParameters.Properties["Target"] is DynamicEntity) 
     { 
      entity = (DynamicEntity)context.InputParameters.Properties["Target"]; 

      if (entity.Name != EntityName.appointment.ToString()) 
       return; 
     } 
     else 
     { 
      return; 
     } 
     try 
     { 
      Guid appointmentID = new Guid(context.OutputParameters["id"].ToString()); 

      ICrmService crmservice = context.CreateCrmService(true); 

      appointment appObj = (appointment)crmservice.Retrieve(EntityName.appointment.ToString(), appointmentID, new ColumnSet(new string[] { "regardingobjectid", "location" })); 
      if (appObj.regardingobjectid == null || appObj.regardingobjectid.type != "contact") 
      { 
       return; 
      } 
      Guid contactID = appObj.regardingobjectid.Value; 

      contact cnt = new contact(); 
      cnt.contactid = new Key(); 
      cnt.contactid.Value = contactID; 
      cnt.firstname = appObj.location; 

      crmservice.Update(cnt); 
     } 
     catch (System.Web.Services.Protocols.SoapException ex) 
     { 
      throw new InvalidPluginExecutionException(
       "Invalid plug-in.", ex); 
     } 
    } 
관련 문제