2014-11-26 1 views
1

궁극적으로 내가 찾고있는 것은 onSaveComplete 이벤트입니다.양식 저장 완료시 변경된 속성 감지

문제는 엔티티 데이터를 저장할 때이를 수정하는 플러그인이 있다는 것입니다. 저장이 완료된 후 데이터가 양식에서 갱신되기 때문에 대부분의 속성에 대해이 값은 유효합니다. 엔터티가 저장 될 때 값이 플러그인에 의해 업데이트되었음을 ​​나타내는 이벤트가 없기 때문에 클라이언트 스크립트에 문제가 있습니다.

내가 함께 온 가장 좋은 해결책은 onSave 이벤트에 후크 기본 조치를 저장 방지하고 대신 data.save()을 사용하는 것입니다

function onSave(context) { 
    var args = context.getEventArgs(); 
    args.preventDefault(); 

    Xrm.Page.data.save().then(function() { 
     //check for changed attributes here 
    }); 
} 

(실제 코드는 좀 더 재귀를 방지하기 위해 복잡하다, 등등. 그러나 당신은 아이디어를 얻는다.)

궁극적으로이 접근법은 끝이 난다. 그리고 내가 그것을 적용하는 형식이 많을수록 실제 해킹처럼 느껴진다. 그래서 제 질문은 이것에 접근하는 더 나은 표준 방법이 있습니까?

+0

필드 속성은 플러그인의 변경 사항을 반영해야합니다. _onSaveComplete_ 메소드에서 정확히 무엇을해야합니까? –

+0

@JasonFaulkner 그래, 속성이 변경 사항을 반영하지, 그 부분은 괜찮습니다. 그러나 플러그인에서 변경된 사항에 대한 응답으로 클라이언트 스크립트에 몇 가지 추가 변경 사항을 적용해야합니다. 그래서 내가 원하는 것은 특정 속성이 플러그인에 의해 변경되었을 때 알려주는 이벤트입니다. 특정 속성 변경 이벤트가 아니라면 해킹 할 필요가없는 일반 저장 완료 이벤트가 있습니다. 가장 혼란스러운 점은 새로운 CRM 2013 비동기 저장 모델을 사용하면 onSaveComplete 상자에 넣은 상태의 이벤트. – dkr88

+0

나는 당신의 '해킹'방법이 당신이 찾고있는 것을 달성하는 유일한 지원 방법이라고 믿습니다. –

답변

0

다른 종류의 "해킹"을 통해 사후 저장 JS 이벤트와 비슷한 것을 성취했습니다.

당신이 OnChange에 부착 이벤트는 때마다 양식을 발사합니다

  • ModifiedOnOnChange 이벤트에 가입 양식에 ModifiedOn 필드를 넣어 : 여기 그것이 작동하는 방법

    입니다 데이터가 변경되면 ModifiedOn을 저장하기 때문에 저장됩니다.

    스크립트가 충돌하지 않도록하려면 ModifiedOn을 양식에서 읽기 전용으로 설정해야합니다.

  • +0

    ModifiedOn은 수정 된 날짜를 변경하는 레코드를 열 때 계속 읽기 전용입니다. – Chirag