Microsoft Dynamics 365 양식용 코드 작성
게시 날짜: 2017년 1월
적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
양식 프로그래밍은 양식에서 발생하는 이벤트에 대해 실행되는 JavaScript를 사용하여 엔터티 양식과 상호 작용하는 방법을 제공합니다.
이 항목의 내용
양식 프로그래밍을 사용하는 경우
양식 프로그래밍을 사용할 때 고려해야 할 요소
라이브러리 종속성 관리
잘 수행하는 양식 스크립트 작성
다른 양식 프레젠테이션
개발 도구
양식 프로그래밍을 사용하는 경우
Microsoft Dynamics 365는 비즈니스 프로세스를 제어할 수 있는 여러 가지 옵션을 제공합니다. 양식 프로그래밍은 옵션 중 하나입니다. 하지만 비즈니스 규칙이라는 또 다른 옵션이 있습니다. 비즈니스 규칙은 JavaScript에 대해 잘 모르는 사용자 또는 개발자가 아닌 사용자에게 양식에서 비즈니스 프로세스 논리를 적용하는 방법을 제공합니다. 자세한 내용은 사용자 지정 가이드 항목:TechNet: 비즈니스 규칙 만들기 및 편집을 참조하십시오.
양식 프로그래밍 및 비즈니스 규칙의 주요 장점은 즉각적이라는 것입니다. 데이터를 서버에 전송하지 않아도 되므로 대부분의 시나리오에서 최상의 성능을 제공합니다. 사용자와 상호 작용할 수 있으므로 가장 유연한 옵션이기도 합니다.
비즈니스 규칙은 개발자가 아닌 사람이 만들고 유지 관리할 수 있는 장점이 있는 반면 특정 제한이 있고 양식 스크립트를 대체하지 않습니다. 양식 프로그래밍을 사용하면 아직 비즈니스 규칙을 사용하여 수행할 수 없는 작업을 할 수 있습니다.
양식 프로그래밍을 사용하여 자주 수행하는 작업은 다음과 같습니다.
데이터 유효성 검사: 가능하면 데이터를 편집하는 동안 데이터의 유효성 검사를 수행해야 합니다. 양식 필드 정의는 가장 일반적인 데이터 유효성 검사를 수행합니다. 예를 들어 전자 메일 주소에 대해 서식이 지정된 Single Line of Text 필드에는 잘못된 값을 입력할 수 없습니다.
조직에 고유한 데이터의 추가 유효성 검사를 위해 양식 프로그래밍을 사용합니다. 예를 들어 조직에 전화 번호의 서식을 지정하는 방법 또는 서비스 활동에서 Subject 필드의 최소 길이에 대한 특정 규칙이 있을 수 있습니다.
자동화: 일반적인 작업을 자동화하는 양식 스크립트를 사용하면 생산성을 대폭 향상시킬 수 있습니다. 양식에 입력되는 데이터에 따라 다른 필드 값을 설정할 수 있습니다. 그러면 사용자는 데이터를 입력할 때 상당한 시간을 절약할 수 있습니다. 사용자가 특정한 경우에 표준 프로세스가 올바른지 확인할 수 있으므로 자동화를 위해 양식 프로그래밍을 사용하는 것은 중요합니다. 사용자는 레코드를 저장하기 전에 필요한 항목을 수정할 수 있습니다.
프로세스 향상 및 강화: 조직의 직원들이 수행하는 특정 작업에 대한 양식을 최적화하기 위해 양식의 레이아웃 또는 양식에 표시할 데이터를 사용자 지정할 수 있습니다. 양식 프로그래밍을 사용하여 특정 양식 요소를 표시 또는 숨기거나, 엔터티에 정의된 다른 양식을 열 수 있습니다. 양식 또는 관련 레코드에 있는 데이터에 따라 필요한 필드를 제어할 수 있습니다.
Microsoft Dynamics CRM 2015 및 Microsoft Dynamics CRM Online 2015 업데이트를 사용하면 양식 맨 위에 나타나는 비즈니스 프로세스 흐름을 제어하기 위한 코드를 작성할 수 있습니다.추가 정보:비즈니스 프로세스 흐름에 대한 스크립트 작성
양식 프로그래밍을 사용할 때 고려해야 할 요소
양식 프로그래밍에 적용된 논리는 Microsoft Dynamics 365 응용 프로그램 엔터티 양식 내에서 다른 사람과 상호 작용하는 브라우저에서만 실행할 수 있습니다. 따라서 데이터 관련 프로세스를 시작하거나 적용하기 위해 양식 프로그래밍에만 전적으로 의존해서는 안 됩니다. 레코드는 웹 서비스 API를 통해 직접 또는 양식의 컨텍스트 외부의 워크플로를 통해 만들거나 업데이트할 수 있습니다. 모든 방식으로 만들거나 업데이트한 모든 레코드가 동일한 프로세스를 준수하도록 양식 프로그래밍은 플러그 인 및 프로세스로 적용되는 비즈니스 논리를 보완해야 합니다.
원래 작업이 시작된 위치에 관계 없이 동일한 논리가 적용되도록 엔터티 범위에서 실행할 비즈니스 규칙을 정의할 수 있습니다.추가 정보:TechNet: 비즈니스 규칙 만들기 및 편집
양식 프로그래밍은 사용자가 일부 엔터티 데이터를 보거나 업데이트할 수 없도록 양식 필드를 숨길 수 있는 기능을 제공하는 반면 보안 요구 사항을 적용하기 위한 완벽한 솔루션을 나타내지 않습니다. 사용자는 상세하기 찾기와 같은 다양한 방법을 사용하여 양식에서 표시되지 않는 엔터티 데이터를 볼 수 있습니다.추가 정보:Microsoft Dynamics 365의 보안 모델
라이브러리 종속성 관리
성능 최적화로 Microsoft Dynamics 365 양식은 JavaScript 웹 리소스를 비동기적으로 동시에 로드합니다. 즉, 양식에 대한 라이브러가 구성되는 순서는 다른 라이브러리가 여기에 정의된 개체 중 하나를 사용하려고 시도하기 전에 라이브러리가 완벽하게 로드되고 초기화되도록 보증하지 않습니다.
다른 라이브러리가 완벽하게 다운로드되고 초기화되는 것에 의존하는 코드가 있는 경우 가장 간단한 방법은 라이브러리 코드 아래에 사용자 코드를 사용하여 단일 JavaScript 웹 리소스 내에 두 라이브러리를 결합하는 것입니다. 더 복잡한 방법은 head.js 또는 require.js 같은 라이브러리를 사용하여 개별 라이브러리가 로드되는 방식을 제어하는 것입니다.
잘 수행하는 양식 스크립트 작성
양식에 대한 스크립트를 작성할 때 다음 방법을 사용하면 최고의 성능을 얻는 데 도움이 됩니다.
불필요한 JavaScript 웹 리소스 라이브러리 포함 방지
양식에 스크립트를 더 많이 추가할 수록 다운로드하는 데 더 많은 시간이 걸립니다. 일반적으로 스크립트는 처음 로드된 후 브라우저에 캐시되지만 양식이 처음으로 표시될 때의 성능은 종종 상당한 인상을 불러일으킵니다.특정 예제의 경우 XMLHttpRequests를 사용하기 때문에 양식 스크립트에 jQuery를 포함하지 않습니다. 많은 사람들이 이러한 요청을 수행하는 데 익숙한 jQuery에는 $.ajax 함수가 있지만 개발자가 선호하지만 필수 항목은 아닙니다.Microsoft Dynamics 365에서 지원되는 모든 브라우저에 있는 기본 XMLHttpRequest 개체를 사용하여 이러한 요청을 수행할 수 있습니다.추가 정보:jQuery 사용
Onload 이벤트 시 모든 스크립트 로드 방지
필드에 대한 OnChange 이벤트 또는 OnSave 이벤트만 지원하는 코드가 있을 경우 OnLoad 이벤트 대신 해당 이벤트의 이벤트 처리기로 스크립트 라이브러리를 설정하도록 합니다. 이 방식으로 해당 라이브러를 로드하면 지연되거나 양식이 로드될 때 성능이 향상될 수 있습니다.편의상의 문제로 OnLoad 이벤트 처리기 내에서는 addOnChange 메서드는 사용하지 않는 것이 좋습니다. 이 메서드는 이벤트 처리기를 추가하는 데 필요한 단계 수를 줄일 수 있지만 양식이 천천히 로드될 수 있습니다.
축소된 탭을 사용하여 웹 리소스 로드 지연
웹 리소스 또는 IFRAMES가 축소된 탭 안의 섹션에 포함되어 있으면 탭이 축소되면 로드되지 않습니다. 탭이 확장되면 로드됩니다. 탭 상태가 변경되면 TabStateChange 이벤트가 발생합니다. 축소된 탭 안의 웹 리소스 또는 IFRAME을 지원하는 데 필요한 코드는 TabStateChange 이벤트에 대해 이벤트 처리기를 사용할 수 있고 OnLoad 이벤트에서 발생하는 코드를 줄일 수 있습니다.기본 표시 유형 옵션 설정
양식 요소를 숨기는 OnLoad 이벤트에서 양식 스크립트를 사용하지 않도록 합니다. 양식이 로드될 때 기본적으로 표시되지 않고 숨길 수 있는 양식 요소에 대해 기본 표시 유형 옵션을 설정합니다. 그런 다음 OnLoad 이벤트에서 스크립트를 사용하여 표시하려는 양식 요소를 표시합니다.
다른 양식 프레젠테이션
양식이 표시되는 방식은 여러 가지 있습니다. 이러한 방식은 각각에 사용할 수 있는 사용 가능한 이벤트 또는 코드 유형에 영향을 줍니다.
레거시 양식 렌더링
Microsoft Dynamics CRM Online 2015 업데이트 1 및 Dynamics 365(온-프레미스)에서 새로운 설정 레거시 양식 렌더링 사용이 도입되었습니다. 이 릴리스에서는 양식 렌더링이 개선되었고 페이지 내부 구조가 변경되었습니다. 결과적으로 지원되지 않는 메서드를 사용한 양식 스크립트는 이전 릴리스에서 사용할 수 있었던 DOM 요소에 액세스할 수 없게 됩니다. 이 릴리스로 업그레이드한 후 새로운 오류가 발생하는 경우 이 설정을 적용하여 오류가 사라지는지 확인할 수 있습니다. 그럴 경우 이러한 오류를 초래하는 스크립트는 지원되지 않는 메서드를 사용할 가능성이 있는 것입니다.
레거시 양식 렌더링 사용을 설정하여 시간을 두고 이러한 문제를 해결할 수 있지만 새로운 양식 렌더링 인프라가 제공하는 성능 개선은 경험하지 못할 것입니다.
참고
레거시 양식 렌더링 사용 설정은 다음 주요 릴리스에서 제거될 예정입니다. 이 때쯤이면 모든 양식 스크립트는 새로운 양식 렌더링과 작동해야 합니다.
업데이트된 엔터티
모든 사용자 지정 엔터티 및 특정 시스템 엔터티에는 명령 모음 및 새 양식 API를 사용하여 포함된 업데이트된 사용자 인터페이스가 있습니다. 다음 표에는 업데이트된 시스템 엔터티가 나와 있습니다.
계정 |
약속 |
캠페인 |
캠페인 활동 |
캠페인 반응 |
서비스 케이스 |
경쟁 업체 |
연락처 |
계약 |
계약 내용(ContractDetail) |
전자 메일 |
권리 유형 |
권리 유형 템플릿 |
팩스 |
송장 |
송장 기재 제품(InvoiceDetail) * |
잠재 고객 |
편지 |
마케팅 목록 |
영업 기회 |
영업 기회 제품 |
주문 |
주문 제품(SalesOrderDetail) * |
전화 통화 |
위치 |
가격표 항목 |
제품 |
제품 연결 |
제품 관계(ProductSubstitue) |
큐 |
퀵 캠페인(대량 작업) |
견적 |
견적 제품(QuoteDetail) * |
반복 약속(RecurringAppointmentMaster) |
영업 홍보 자료 |
SLA |
SLA KPI 인스턴스 |
소셜 활동 |
소셜 프로필 |
작업 |
팀 |
사용자 |
* 이 엔터티들은 CRM Online 2016 업데이트 1 및 Dynamics 365 서비스 팩 1(온-프레미스)에서 업데이트되었습니다.
참고
일부 업데이트된 엔터티에는 복합 특성이 포함됩니다. 이러한 엔터티는 다음과 같은 몇 가지 사항을 특별히 고려해야 합니다.추가 정보:복합 특성에 대한 스크립트 작성.
업데이트된 엔터티 양식에는 엔터티에 대해 메모, 활동 및 게시물이 활성화된 경우 이들에 대한 액세스를 제공하는 공동 작업 컨트롤이 포함될 수 있습니다. Xrm.Page 개체는 공동 작업 컨트롤에 대한 액세스를 제공하지 않습니다. 스크립트를 사용하여 섹션 요소를 표시하거나 숨길 경우 공동 작업 컨트롤이 포함된 섹션 요소에 액세스할 수 있습니다.
업데이트된 이벤트에 대한 양식 프로그래밍 메서드 및 PreSearch 이벤트
다음 표에는 업데이트된 엔터티에 대해 사용할 수 있는 양식 프로그래밍 메서드가 나와 있습니다.
방법 |
설명 |
---|---|
스크립트가 실행되는 클라이언트를 나타내는 값을 반환합니다. |
|
Xrm.Page.context.클라이언트.getClientState |
클라이언트의 상태를 나타내는 값을 반환합니다. |
Xrm.Page.context.getUserName |
현재 사용자의 이름을 반환합니다. |
Xrm.Page.data.entity.getPrimaryAttributeValue |
엔터티의 기본 특성 값을 문자열로 가져옵니다. |
Xrm.Page.data.새로 고침 |
페이지를 다시 로드하지 않고 비동기적으로 양식 데이터를 새로 고칩니다. |
Xrm.Page.data.저장 |
저장 작업이 완료된 후 실행되는 콜백 함수를 설정하는 옵션으로 레코드를 비동기적으로 저장합니다. |
Xrm.Page.data.entity attribute.getIsPartyList |
조회 특성이 partylist 조회를 나타내는지 여부를 결정합니다. |
Xrm.Page.ui control.clearNotification |
컨트롤에 이미 표시된 메시지를 제거합니다. |
Xrm.Page.ui control.setNotification |
데이터가 잘못되었음을 나타내도록 컨트롤 옆에 메시지를 표시합니다. |
Xrm.Page.ui.clearFormNotification |
양식 수준 알림을 제거하려면 이 메서드를 사용합니다. |
Xrm.Page.ui.setFormNotification |
양식 수준 알림을 표시하려면 이 메서드를 사용합니다. |
Xrm.Page.ui control.addCustomFilter |
조회에서 표시되는 결과에 추가 필터를 추가하려면 fetchXml을 사용합니다. 각 필터는 'AND' 조건으로 이전에 추가된 필터를 사용하여 결합됩니다. |
Xrm.Page.ui control.setShowTime |
날짜 컨트롤에 날짜의 시간 부분을 표시할지 여부를 지정합니다. |
Xrm.Utility.alertDialog |
콜백 함수를 사용하여 비차단 경고 대화 상자를 표시합니다. |
Xrm.Utility.confirmDialog |
사용자가 클릭한 단추에 따라 다른 콜백을 사용하여 비차단 확인 대화 상자를 표시합니다. |
PreSearch 이벤트
조회 값을 설정하면 새 PreSearch 이벤트는 검색 대화 상자가 열리기 직전에 발생합니다. 이 이벤트에는 응용 프로그램의 이벤트 처리기를 설정한 사용자 인터페이스가 없습니다. Xrm.Page.ui control.addPreSearch 메서드를 사용해야만 설정할 수 있습니다.addCustomFilter, addCustomView 및 setDefaultView 메서드와 함께 이 이벤트를 사용하여 사람들이 조회 필드의 값으로 설정된 레코드를 찾을 때 열려 있는 보기를 제어합니다.
기본 양식을 사용하는 엔터티
업데이트되지 않은 시스템 엔터티는 기본 양식 프레젠테이션을 사용합니다. CRM 2011에서수행한 경우 이러한 엔터티에 대한 양식은 계속 리본을 사용하며 이 릴리스에 추가된 양식 API에 대한 액세스 권한이 없습니다. 다음 표에는 이러한 엔터티가 나와 있습니다.
주소 |
참조 자료 검색 |
문서 주석 |
대량 삭제 작업 |
사업부 |
연결 |
할인 |
할인 목록 |
문서 위치 |
전자 메일 첨부 파일 |
팔로우 |
목표 |
목표 메트릭 |
가져오기 원본 파일 |
송장 기재 제품 |
주문 제품 |
가격표 |
큐 항목 |
견적 제품 |
롤업 필드 |
롤업 쿼리 |
저장된 보기 |
서비스 |
서비스 활동 |
SharePoint 사이트 |
사이트 |
지역 |
단위 |
단위 그룹 |
태블릿용 Dynamics 365에 사용 가능한 엔터티
선택한 시스템 엔터티와 사용자 지정 엔터티만 태블릿용 Microsoft Dynamics 365을 사용하여 표시할 수 있습니다. 다음 시스템 엔터티는 태블릿용 Dynamics 365에서 편집 가능한 양식을 사용할 수 있습니다.
계정 |
활동 |
약속 |
서비스 케이스 |
경쟁 업체 |
연결 |
연락처 |
잠재 고객 |
메모 |
영업 기회 |
영업 기회 제품 |
전화 통화 |
큐 항목 |
소셜 활동 |
소셜 프로필 |
작업 |
태블릿용 Dynamics 365에는 웹 응용 프로그램의 양식과 동일한 동작이 없으므로 일부 API를 사용할 수 없습니다. 예를 들어 태블릿용 Dynamics 365에서 탭은 확장하거나 축소할 수 없으므로 Tab TabStateChange 이벤트가 발생하지 않고 Xrm.Page.ui tab.setDisplayState를 탭을 확장하거나 축소하는 데 사용할 수 없습니다.추가 정보:휴대폰 및 태블릿용 Dynamics 365에 대한 스크립트 작성 및 디버깅.
개발 도구
좋은 도구를 사용하면 Dynamics 365 양식을 위한 JavaScript 작성 경험은 향상될 것입니다.
좋은 작성 도구 사용
JavaScript는 해석된 언어이므로 특별한 개발 도구가 필요하지 않습니다.JavaScript는 텍스트이므로 응용 프로그램 또는 메모장과 같은 텍스트 편집기에서 편집할 수 있습니다. 하지만 Microsoft Visual Studio 및 Microsoft Visual Studio Express처럼 JavaScript 파일을 편집할 수 있는 기능을 특별히 제공하는 작성 도구를 사용하면 생산성을 대폭 향상시킬 수 있습니다.Visual Studio Community 2013을 무료로 얻을 수 있습니다.
브라우저 개발자 도구 사용
모든 최신 브라우저는 디버깅 스크립트를 사용할 수 있는 기본 제공 도구를 제공합니다. 이러한 도구는 Dynamics 365 양식에 대한 스크립트를 작성할 때 큰 도움이 될 수 있습니다. 이러한 개발자 도구는 여는 데 사용되는 키이므로 종종 F12 도구라고 불립니다. 이러한 도구 사용에 대한 정보는 W3Schools JavaScript 디버깅을 참조하십시오.
개발자 도구를 사용하여 스크립트 웹 리소스로 업로드할 스크립트의 구문을 확인합니다. 이러한 도구를 사용하여 프로그래밍 중인 개체 모델에 대한 이해의 폭을 넓힐 수도 있습니다. 예를 들어, 양식에서 특정 개체에 액세스하는 코드를 작성할 때 종종 이름으로 액세스해야 합니다. 양식 편집기에서 개체의 이름을 조회하는 대신 개발자 도구 내의 콘솔을 사용하여 Xrm.Page 개체 모델을 조회하여 액세스하는 특성이나 컨트롤의 이름을 가져옵니다. 예를 들어, 특정 하위 표 컨트롤에 이름으로 액세스하려면 브라우저 개발자 도구 콘솔을 사용하여 다음 코드를 작성할 수 있습니다.
Xrm.Page.ui.controls.get(
function(ctrl,i){
if(ctrl.getControlType() == "subgrid")
console.log(ctrl.getName()
);
});
모든 하위 표 컨트롤의 이름은 콘솔의 출력 창에 기록됩니다. 이 스크립트는 익명의 대리인 기능을 컬렉션에서 발견된 가져오기 메서드는 물론 개체에서 발견된 다른 메서드로 전달하는 기능을 이용하여 유형별로 필터링하고 이 예에서 사용되는 Xrm.Page.ui control.getControlType 및 Xrm.Page.ui control.getName 같은 개체 이름을 반환합니다.
중요
Dynamics 365 양식은 여러 프레임으로 구성됩니다. 콘솔에서 코드가 작동하려면 오른쪽 프레임을 선택해야 합니다.Dynamics 365 웹 클라이언트 양식의 경우 ClientApiWrapper.aspx라는 프레임을 선택합니다. 새로운 대화식 서비스 허브 클라이언트 양식의 경우 engagementhub.aspx라는 프레임을 선택합니다.
다음 몇 가지 추가 예를 참조하십시오.
해당 유형과 함께 양식에 모든 특성의 이름을 표시
Xrm.Page.getAttribute( function (att, i) { console.log(att.getName() + " : " + att.getAttributeType()) });
옵션 집합 특성에 대한 유효한 옵션 값 표시
Xrm.Page.getAttribute( function (att, i) { if (att.getAttributeType() == "optionset") { console.log(att.getName()) var options = att.getOptions(); var optionsLength = options.length; for (var i = 0; i < optionsLength; i++) { var option = options[i]; console.log(" value: " + option.value + " Label: " + option.text) } } });
참고 항목
클라이언트에서 Microsoft Dynamics 365 확장
URL로 양식, 보기, 대화 상자 및 보고서 열기
양식 스크립팅 빠른 참조
Microsoft Dynamics 365에서 JavaScript 사용
Microsoft Dynamics 365용 JavaScript 라이브러리
Microsoft Dynamics 365 응용 프로그램 사용자 지정
양식 및 필드 이벤트 사용
Xrm.Page 개체 모델 사용
휴대폰 및 태블릿용 Dynamics 365에 대한 스크립트 작성 및 디버깅
복합 특성에 대한 스크립트 작성
비즈니스 프로세스 흐름에 대한 스크립트 작성
하위 표를 위한 스크립트 작성
실행 컨텍스트 및 양식 이벤트 파이프라인 사용
양식에서 IFRAME 및 웹 리소스 컨트롤 사용
Microsoft Dynamics 365 웹 API(클라이언트 쪽 JavaScript) 시작하기
Microsoft Dynamics 365
© 2017 Microsoft. All rights reserved. 저작권 정보