2017-04-23 4 views
2

CRM 2016에 플러그인 C#이 있습니다. 플러그인 종료시 Javascript 코드를 활성화하고 싶습니다. 이 플러그인으로 필드를 업데이트하려고 시도하고이 필드가 변경되면 javaScript 코드로 변경 이벤트가 트리거됩니다. 필드가 변경되지만 필드를 변경할 때 발생하는 기능은 활성화되지 않습니다. 그러나 플러그인을 사용하지 않고 수동으로이 필드를 변경하면 함수가 올바르게 작동합니다.CRM 2016에서 플러그인 종료 시점을 어떻게 알 수 있습니까?

어쩌면 플러그인이 언제 종료되는지 알 수있는 아이디어가 있습니까?

+0

플러그인이 업데이트에서 실행 중이므로 맞습니까? 또한 자바 스크립트에서 양식의 저장에서 업데이트가 호출되고 있습니까? 대답에 대해 –

답변

1

플러그인이 양식의 저장에서 호출되어 동 기적으로 등록 된 경우 저장 결과에서 스크립트를 실행할 수 있습니다. Xrm.Page.data.save().then(_success, fail); 동기식이며 리턴을 트랩 할 수없는 이전의 Xrm.Page.data.entity.save(saveType) 조작과는 다릅니다.

저장할 때마다이 플러그인이 필요하면 OnSave 이벤트를 트랩하고 기본 동작을 취소하고이 비동기 저장 방법을 사용하십시오. 다음은 기본 저장 작업 취소에 대해 설명하는 페이지입니다. https://neilparkhurst.com/2015/11/11/javascript-prevent-save/ 대신이 "재개 가능"저장 작업을 만들 수 있습니다. then() 성공 방법에서 플러그인이 변경 한 속성을 가져와 fireOnChange() 메소드를 호출 할 수 있습니다. 그것은 다른 상황에 대한 해결책이기 때문에 https://msdn.microsoft.com/en-us/library/dn481607.aspx?f=255&MSPPError=-2147217396

+1

고마움. 하지만 Xrm.Page.data.save() 함수를 활성화 할 수 없습니다. (_success, fail) 코드 플러그 인으로 필드를 업데이트하고 서버 측에 저장하므로. 및 폼 저장 기능 플러그인으로 저장할 때 클라이언트 측이기 때문에 작동하지 않습니다. – Racheli

+0

아, 그러면 플러그인을 트리거하는 것은 무엇입니까? 나는 당신이 폼을 변경하고, 저장하고, 이로 인해 플러그인을 트리거한다고 생각했습니다. 플러그인이 실행되는 원인은 무엇입니까? 내 두 번째 대답은 당신이 통제하는 것이면 더 관련이있을 수 있습니다. –

1

이 별도의 대답입니다 : 여기

이 새로운 작업에 대한 xRM을 문서입니다. 당신은이 대답이나 다른 대답을 할 것이지만, 아마 둘 다하지는 않을 것입니다. 그리고 나는 그것들을 하나의 대답으로 둠으로써 혼동하기를 원하지 않았습니다.

"플러그인"이 부수적 인 경우 가끔씩 발생하며 모든 저장 시마다 발생하는 것이 아니기 때문에 액션을 사용하는 것이 좋습니다. 작업 전에는 데이터 값이없는 엔티티의 필드 인 "제어 필드"가 종종 있습니다. 우리는 플러그인을 특수한 방식으로 동작하도록 저장시 해당 필드를 설정합니다. 이것이 상황이라면 코드를 사용자 정의 액티비티로 리팩토링하고 (워크 플로우에 대한 사용자 정의 코드를 작성한 것과 동일) 작업을 저장하는 대신 플러그인에서 직접 호출하는 것이 좋습니다. 이 경우 작업을 호출하고 실행 한 후에 "저장 후 javascript를 실행"할 필요가 없습니다.

0

Server Side Plugin 실행 완료 후 클라이언트 측에서 일부 Javascript 기능 코드 블록을 실행할 수 없습니다.

그러나 접근 방식을 확장하면 Plugin에서 더미 필드를 업데이트하므로 양식을 새로 고침하여 폼을로드 할 때 해당 더미 필드의 onchange() 메소드가 제대로 작동해야합니다.

+1

더미 필드를 사용하여 플러그인 작동을 제어하는 ​​것은 2016 년에 필요하지 않습니다.이 기능을 액션으로 리팩토링하고 비헤이비어를 직접 호출 할 수 있습니다. –