다음을 통해 공유


엔터티 보기 사용자 지정

 

게시 날짜: 2017년 1월

적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

엔터티 보기는 특정 필터를 사용하여 데이터를 검색하는 특수 저장된 쿼리입니다. 엔터티 보기에는 보기의 데이터가 응용 프로그램에 표시되는 방법에 대한 정보도 포함됩니다. 엔터티 보기는 프로그래밍 방식으로 만들 수 있는 SavedQuery 레코드입니다. XML로 정의할 수도 있고 비관리형 솔루션으로 Microsoft Dynamics 365에 가져올 수도 있습니다.

엔터티 보기는 UserQuery와는 다릅니다. 응용 프로그램에서 저장된 보기라고 하는 사용자 쿼리는 개별 사용자가 담당하고, 다른 사용자에게 할당하거나 함께 공유할 수 있으며, 쿼리의 액세스 권한에 따라 다른 사용자가 볼 수 있습니다. 사용자 쿼리는 엔터티 유형을 확장하는 데 자주 사용되는 쿼리와 집계를 수행하는 쿼리에 적합합니다.추가 정보:UserQuery(저장된 보기) 엔터티

Dynamics 365에서 사용자 지정 도구를 사용하여 보기를 사용자 지정할 수도 있습니다.추가 정보:TechNet: 보기 만들기 및 편집

이 항목의 내용

보기 유형

작업 보기

  • 보기 만들기

  • 보기 업데이트

  • 보기 삭제

  • 보기 검색

  • 보기 비활성화

  • 필터 조건 편집 또는 정렬 구성

  • 열 편집

  • 열에 대한 도구 설명에 사용자 지정 아이콘 추가

  • 기본값으로 설정

보기 유형

다음 표에는 사용자 지정에 지원되는 보기의 5가지 유형이 나와 있습니다. 보기의 유형 코드는 SavedQuery.QueryType 특성에 저장됩니다. 이 엔터티는 Microsoft Office Outlook 필터 및 템플릿을 저장하는 데도 사용되므로 여기에는 나와 있지 않지만 QueryType 특성에 유효한 다른 값이 있습니다. 자세한 내용은 오프라인 및 Outlook 필터와 템플릿을 참조하십시오.

특정 엔터티에 대한 보기를 정의하면 SavedQuery.ReturnedTypeCode 특성은 엔터티 논리적 이름을 반환합니다.

보기 유형

유형 코드

설명

상장

0

  • 발생: 많음

  • 작업: 만들기, 업데이트, 삭제

  • 주석: SavedQuery.IsDefault 를 true로 설정하면 이러한 보기 중 하나를 기본 공용 보기로 설정할 수 있습니다.

상세하게 찾기

1

  • 발생: 1

  • 작업: 업데이트 전용

  • 주석: 기본적으로 이 보기는 결과가 상세하게 찾기에 표시될 때 표시됩니다.

관련 보기

2

  • 발생: 1

  • 작업: 업데이트 전용

  • 주석: 기본적으로 이 보기는 관련 레코드 표가 레코드의 탐색 창에 표시될 때 표시됩니다.

빠른 찾기

4

  • 발생: 1

  • 작업: 업데이트 전용

  • 주석: 이 보기는 사용자가 목록 보기에서 검색 필드를 사용하여 레코드를 검색할 때 검색되는 열을 정의합니다.

조회

64

  • 발생: 1

  • 작업: 업데이트 전용

  • 주석: 조회 필드에 구성된 다른 보기가 없을 경우 레코드를 조회하는 데 사용되는 기본 보기입니다.

작업 보기

보기는 SavedQuery 레코드이므로 만들고, 업데이트, 검색, 삭제 및 비활성화할 수 있습니다. 또한 필터 조건을 편집하거나 정렬을 구성하고, 열을 편집하거나 보기를 기본 보기로 설정할 수 있습니다.

보기 만들기

공용 보기를 만들려면 다음과 같은 속성을 지정합니다.

  • SavedQuery.Name: 저장된 쿼리의 고유 식별자입니다.

  • SavedQuery.ReturnedTypeCode: 엔터티의 논리적 이름과 일치합니다.

  • SavedQuery.FetchXml: FetchXML을 사용하여 쿼리 구성을 참조하십시오.

  • SavedQuery.LayoutXml: 유효한 요소는 <layoutxml> (SavedQuery)를 참조하십시오.

  • SavedQuery.QueryType: 항상 0이어야 합니다.

다음 샘플은 영업 기회 엔터티의 고용 보기를 새로 만듭니다.


                    System.String layoutXml =
@"<grid name='resultset' object='3' jump='name' select='1' 
    preview='1' icon='1'>
    <row name='result' id='opportunityid'>
    <cell name='name' width='150' /> 
    <cell name='customerid' width='150' /> 
    <cell name='estimatedclosedate' width='150' /> 
    <cell name='estimatedvalue' width='150' /> 
    <cell name='closeprobability' width='150' /> 
    <cell name='opportunityratingcode' width='150' /> 
    <cell name='opportunitycustomeridcontactcontactid.emailaddress1' 
        width='150' disableSorting='1' /> 
    </row>
</grid>";

                    System.String fetchXml =
                    @"<fetch version='1.0' output-format='xml-platform' 
    mapping='logical' distinct='false'>
    <entity name='opportunity'>
    <order attribute='estimatedvalue' descending='false' /> 
    <filter type='and'>
        <condition attribute='statecode' operator='eq' 
        value='0' /> 
    </filter>
    <attribute name='name' /> 
    <attribute name='estimatedvalue' /> 
    <attribute name='estimatedclosedate' /> 
    <attribute name='customerid' /> 
    <attribute name='opportunityratingcode' /> 
    <attribute name='closeprobability' /> 
    <link-entity alias='opportunitycustomeridcontactcontactid' 
        name='contact' from='contactid' to='customerid' 
        link-type='outer' visible='false'>
        <attribute name='emailaddress1' /> 
    </link-entity>
    <attribute name='opportunityid' /> 
    </entity>
</fetch>";

                    SavedQuery sq = new SavedQuery
                    {
                        Name = "A New Custom Public View",
                        Description = "A Saved Query created in code",
                        ReturnedTypeCode = "opportunity",
                        FetchXml = fetchXml,
                        LayoutXml = layoutXml,
                        QueryType = 0
                    };

                    _customViewId = _serviceProxy.Create(sq);
                    Console.WriteLine("A new view with the name {0} was created.", sq.Name);

보기 업데이트

SavedQuery.IsCustomizable 관리 속성에서 보기를 업데이트할 수 있으면 IOrganizationService.Update 메서드 또는 UpdateRequest 메시지를 사용하여 보기를 업데이트할 수 있습니다.

보기 삭제

개발자가 만든 저장된 쿼리만 삭제해야 합니다. 솔루션 구성 요소 또는 응용 프로그램 일부는 저장된 특정 쿼리에 따라 달라질 수 있습니다. 응용 프로그램에서 표시하지 않을 쿼리가 있을 경우 비활성화해야 합니다.

보기 검색

RetrieveMultipleRequest 또는 IOrganizationService.RetrieveMultiple을 사용하여 저장된 쿼리 레코드를 검색합니다.

다음 샘플은 영업 기회 엔터티의 모든 새로운 공용 보기를 검색합니다.


        QueryExpression mySavedQuery = new QueryExpression
        {
            ColumnSet = new ColumnSet("savedqueryid", "name", "querytype", "isdefault", "returnedtypecode", "isquickfindquery"),
            EntityName = SavedQuery.EntityLogicalName,
            Criteria = new FilterExpression
            {
                Conditions =
{
    new ConditionExpression
    {
        AttributeName = "querytype",
        Operator = ConditionOperator.Equal,
        Values = {0}
    },
    new ConditionExpression
    {
        AttributeName = "returnedtypecode",
        Operator = ConditionOperator.Equal,
        Values = {Opportunity.EntityTypeCode}
    }
}
            }
        };
        RetrieveMultipleRequest retrieveSavedQueriesRequest = new RetrieveMultipleRequest { Query = mySavedQuery };

        RetrieveMultipleResponse retrieveSavedQueriesResponse = (RetrieveMultipleResponse)_serviceProxy.Execute(retrieveSavedQueriesRequest);

        DataCollection<Entity> savedQueries = retrieveSavedQueriesResponse.EntityCollection.Entities;

        //Display the Retrieved views
        foreach (Entity ent in savedQueries)
        {
            SavedQuery rsq = (SavedQuery)ent;
            Console.WriteLine("{0} : {1} : {2} : {3} : {4} : {5},", rsq.SavedQueryId, rsq.Name, rsq.QueryType, rsq.IsDefault, rsq.ReturnedTypeCode, rsq.IsQuickFindQuery);
        }

보기 비활성화

응용 프로그램에 공용 보기를 표시하지 않으려는 경우 비활성화할 수 있습니다. 기본 보기로 설정되어 있는 공용 보기는 비활성화할 수 없습니다. 다음 샘플에서는 영업 기회 엔터티에 대해 현재 회계 연도에 종료된 영업 기회 보기를 비활성화합니다.


System.String SavedQueryName = "Closed Opportunities in Current Fiscal Year";
QueryExpression ClosedOpportunitiesViewQuery = new QueryExpression
{
    ColumnSet = new ColumnSet("savedqueryid", "statecode", "statuscode"),
    EntityName = SavedQuery.EntityLogicalName,
    Criteria = new FilterExpression
    {
        Conditions =
        {
            new ConditionExpression
            {
                AttributeName = "querytype",
                Operator = ConditionOperator.Equal,
                Values = {0}
            },
            new ConditionExpression
            {
                AttributeName = "returnedtypecode",
                Operator = ConditionOperator.Equal,
                Values = {Opportunity.EntityTypeCode}
            },
                            new ConditionExpression
            {
                AttributeName = "name",
                Operator = ConditionOperator.Equal,
                Values = {SavedQueryName}
            }
        }
    }
};

RetrieveMultipleRequest retrieveOpportuntiesViewRequest = new RetrieveMultipleRequest { Query = ClosedOpportunitiesViewQuery };

RetrieveMultipleResponse retrieveOpportuntiesViewResponse = (RetrieveMultipleResponse)_serviceProxy.Execute(retrieveOpportuntiesViewRequest);

SavedQuery OpportunityView = (SavedQuery)retrieveOpportuntiesViewResponse.EntityCollection.Entities[0];
_viewOriginalState = (SavedQueryState)OpportunityView.StateCode;
_viewOriginalStatus = OpportunityView.StatusCode;


SetStateRequest ssreq = new SetStateRequest
{
    EntityMoniker = new EntityReference(SavedQuery.EntityLogicalName, (Guid)OpportunityView.SavedQueryId),
    State = new OptionSetValue((int)SavedQueryState.Inactive),
    Status = new OptionSetValue(2)
};
_serviceProxy.Execute(ssreq);

필터 조건 편집 또는 정렬 구성

필터를 편집하거나 데이터 정렬 방식을 편집하려면 SavedQuery.FetchXml 특성을 설정해야 합니다. 자세한 내용은 FetchXML을 사용하여 쿼리 작성을 참조하십시오.

FetchXML에 익숙하지 않은 경우 QueryExpression과 FetchXML 사이를 변환하는 데 QueryExpressionToFetchXmlRequestFetchXmlToQueryExpressionRequest 메시지를 사용할 수 있습니다.

열 편집

보기에 표시할 열은 엔터티 또는 관련 엔터티에서 가져올 수 있습니다. 표시할 열을 지정하는 방법에 대한 자세한 내용은 <layoutxml> (SavedQuery)를 참조하십시오.

열에 대한 도구 설명에 사용자 지정 아이콘 추가

열 값에 따라 열에 표시할 도구 설명 텍스트가 있는 사용자 지정 아이콘을 추가할 수 있습니다. 지역화된 도구 설명 텍스트를 지정할 수도 있습니다. 이를 위해 Dynamics 365 인스턴스에서 사용자 지정 아이콘을 이미지 웹 리소스로 추가한 다음 JavaScript 웹 리소스를 사용하여 열 값에 따라 아이콘을 표시할 열에 대한 JavaScript 코드를 추가합니다.

참고

이 기능은 Dynamics 365용 2016년 12월 업데이트(온라인 및 온-프레미스)에서 도입되었습니다. 도구 설명에 사용자 지정 아이콘을 추가하는 기능은 읽기 전용 표에서만 가능합니다. 이 기능은 편집 가능한 표에는 지원되지 않습니다. 편집 가능한 표에 대한 자세한 내용은 Dynamics 365에서 편집 가능한 표 사용을 참조하십시오.

두 가지 새 특성(imageproviderwebresourceimageproviderfunctionname)이 저장된 쿼리(<cell> (SavedQuery) 참조)의 layoutxml에 저장됩니다. 이로 인해 웹 리소스의 이름과 JavaScript 함수 이름을 지정하여 열에 대한 사용자 지정 아이콘 및 도구 설명 텍스트를 표시할 수 있습니다. 페이지가 로드될 때 JavaScript 코드가 실행됩니다.

또한 Dynamics 365 웹 클라이언트의 보기 정의 특성(열)의 속성을 변경할 때 열 속성 페이지의 웹 리소스함수 이름 필드를 사용하여 웹 리소스 이름 및 JavaScript 함수 이름을 지정할 수도 있습니다.

다음 샘플 코드에서는 layoutxml의 opportunityratingcode 열에 대한 사용자 지정 아이콘 및 도구 설명을 추가하기 위해 웹 리소스 및 JavaScript 함수 이름을 프로그래밍 방식으로 지정할 수 있는 방법을 설명합니다.

System.String layoutXml =
@"<grid name='resultset' object='3' jump='name' select='1'
  preview='1' icon='1'>
  <row name='result' id='opportunityid'>
    <cell name='name' width='150' />
    <cell name='customerid' width='150' />
    <cell name='estimatedclosedate' width='150' />
    <cell name='estimatedvalue' width='150' />
    <cell name='closeprobability' width='150' />
    <cell name='opportunityratingcode' width='150' imageproviderwebresource='new_SampleWebResource'
          imageproviderfunctionname='displayIconTooltip' />
    <cell name='opportunitycustomeridcontactcontactid.emailaddress1'
        width='150' disableSorting='1' />
  </row>
</grid>";

사용자 지정 아이콘 및 도구 설명 텍스트를 표시하기 위한 JavaScript 함수는 layoutxml에서 지정된 전체 행 개체 및 사용자의 로캘 ID(LCID) 호출의 두 개의 인수를 필요로 합니다. LCID 매개 변수를 사용하면 여러 언어의 아이콘에 대한 도구 설명 텍스트를 지정할 수 있습니다. CRM에서 지원되는 언어에 대한 자세한 내용은 언어 활성화Microsoft Dynamics 365용 언어 팩 설치 또는 업그레이드를 참조하십시오. 코드에 사용할 수 있는 로캘 ID(LCID) 값 목록은 Microsoft에서 할당한 로캘 ID를 참조하십시오.

제한적인 미리 정의된 옵션을 가진 속성의 옵션 집합 유형에 대한 사용자 지정 아이콘을 추가하는 경우 지역화된 레이블 문자열의 변경 때문에 코드가 풀리는 문제를 방지하려면 레이블 대신 옵션의 정수 값을 사용해야 합니다. 또한 JavaScript 함수에서 특성의 값에 대한 아이콘으로 사용할 이미지 웹 리소스 이름만 지정합니다. 이미지 크기가 16x16 픽셀이어야 합니다. 이보다 큰 이미지는 자동으로 크기가 16x16 픽셀로 조정됩니다.

다음 샘플 코드는 opportunityratingcode (Rating) 특성의 각 값(1: Hot, 2: Warm, 3: Cold)에 따라 다른 아이콘 및 도구 설명 텍스트를 표시합니다. 샘플 코드에서 지역화된 도구 설명 텍스트를 표시하는 방법도 보여줍니다. 이 샘플에서 작업하려면 Dynamics 365인스턴스에서 new_Hot, new_Warm, 및 new_Cold라는 이름의 각각 16x16 이미지(관심 높음 아이콘, 관심 있음 아이콘, 및 관심 없음 아이콘)의 이미지 웹 리소스를 세 개 만들어야 합니다.

function displayIconTooltip(rowData, userLCID) {    
    var str = JSON.parse(rowData);
    var coldata = str.opportunityratingcode_Value;
    var imgName = "";
    var tooltip = "";
    switch (coldata) {
        case 1:
            imgName = "new_Hot";
            switch (userLCID) {
                case 1036:
                    tooltip = "French: Opportunity is Hot";
                    break;
                default:
                    tooltip = "Opportunity is Hot";
                    break;
            }
            break;
        case 2:
            imgName = "new_Warm";
            switch (userLCID) {
                case 1036:
                    tooltip = "French: Opportunity is Warm";
                    break;
                default:
                    tooltip = "Opportunity is Warm";
                    break;
            }
            break;
        case 3:
            imgName = "new_Cold";
            switch (userLCID) {
                case 1036:
                    tooltip = "French: Opportunity is Cold";
                    break;
                default:
                    tooltip = "Opportunity is Cold";
                    break;
            }
            break;
        default:
            imgName = "";
            tooltip = "";
            break;
    }
    var resultarray = [imgName, tooltip];
    return resultarray;
}

그 결과 값에 따라 적절한 아이콘으로 Rating 열에 값이 표시됩니다. 아이콘에 마우스를 올리면 아이콘 도구 설명 텍스트가 표시됩니다.

보기에서 열에 대해 표시되는 사용자 지정 아이콘

기본값으로 설정

하나의 활성 보기만 기본 보기로 설정할 수 있습니다. 보기를 기본 보기로 설정하려면 IsDefault 속성을 true로 설정합니다.

참고 항목

샘플: 보기에 대한 작업
SavedQuery(보기) 엔터티 메시지 및 메서드
Saved query XML reference
FetchXML을 사용하여 쿼리 작성
Dynamics 365 메타데이터에서 조직 서비스 사용
엔터티 양식 사용자 지정
전역 옵션 집합 사용자 지정
Microsoft Dynamics 365 응용 프로그램 사용자 지정

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 저작권 정보