캔버스 앱에서 레코드 참조 및 다형성 조회 이해

학교에서 연구 논문을 썼을 때 마지막에 참고 문헌 목록을 제공했을 것입니다. 귀하가 사용한 실제 배경 자료의 사본을 포함하지 않고 누군가가 원본 출처를 추적할 수 있도록 웹 링크, 책 제목 및 저자 또는 기타 정보를 포함했습니다. 당신은 하나의 목록에 오디오 녹음본과 신문 기사 등 각기 다른 종류의 출처를 섞었으며, 각각 적절한 인용에 대한 고유한 세부 정보를 기재했습니다. 예를 들어 Wikipedia 기사에는 종종 긴 참조 목록이 포함됩니다.

캔버스 앱에서는 종종 데이터 원본에서 다운로드한 레코드 사본으로 작업합니다. 당신은 LookUpFilter 함수와 갤러리 컨트롤의 Selected 속성을 사용하여 원하는 특정 레코드를 식별합니다. 필터 또는 선택됨의 모든 레코드는 동일한 테이블 유형에 포함되므로 간단한 .Field 표기법으로 필드를 사용할 수 있습니다. 이러한 사본에는 종종 참조 정보가 포함되어 있으므로 Patch 함수를 사용하여 원본 소스를 업데이트할 수 있습니다.

캔버스 앱은 레코드 참조도 지원합니다. 연구 논문 참조와 마찬가지로 레코드 참조는 전체 사본을 포함하지 않은 레코드를 나타냅니다. 이러한 참조는 모든 테이블의 레코드를 참조할 수 있습니다. 연구 논문 참조와 마찬가지로 여러 테이블의 레코드를 단일 열에 혼합할 수 있습니다.

레코드 참조에 대한 많은 작업은 레코드 작업과 동일합니다. 레코드 참조를 서로 및 전체 레코드와 비교할 수 있습니다. 전체 레코드로 조회를 설정하는 것처럼 Patch 함수를 사용하여 레코드 참조의 값을 설정할 수 있습니다.

한 가지 중요한 사용 차이점은 먼저 참조하는 테이블을 설정하지 않고는 레코드 참조의 필드에 직접 액세스할 수 없다는 것입니다. 이는 캔버스 앱에서 수식을 작성할 때 모든 유형을 알아야 하기 때문입니다. 앱이 실행될 때까지 레코드 참조의 유형을 모르기 때문에 간단한 .Field 표기법을 직접 사용할 수 없습니다. 먼저 IsType 함수가 포함된 테이블 유형을 동적으로 결정해야 하며 그런 다음 AsType 함수의 결과에 .Field 표기법을 사용해야 합니다.

테이블 유형은 테이블에 있는 각 레코드의 스키마를 나타냅니다. 각 테이블에는 이름과 데이터 유형이 서로 다른 고유한 필드 집합이 있습니다. 테이블의 각 레코드는 해당 구조를 상속합니다. 두 레코드는 동일한 테이블에서 가져온 경우 동일한 테이블 유형을 갖습니다.

참고

캔버스 앱의 다양한 데이터 소스 유형에 연결할 여러 커넥터 중에서 선택할 수 있습니다. 하지만 Power Apps Studio 내부에서 캔버스 앱 작업을 하는 경우 Microsoft Dataverse 의 은 다른 모든 데이터 원본과 유사하게 필드 로 처리됩니다. 은 Dataverse 내부 열을 참조할 때만 사용됩니다. 추가 정보: Dataverse 용어 업데이트

다형성 조회

Microsoft Dataverse는 레코드 간 관계를 지원합니다. 계정 테이블의 각 레코드는 연락처 테이블에 레코드에 대한 기본 연락처 조회 열이 있습니다. 조회는 연락처의 레코드만 참조할 수 있으며 테이블의 레코드는 참조할 수 없습니다. 검색에 사용할 수 있는 열을 항상 알고 있으므로 마지막 세부 정보가 중요합니다.

Dataverse는 또한 집합의 모든 테이블에서 레코드를 참조 할 수 있는 다형성 조회를 지원합니다. 예를 들어 담당자 열은 사용자 테이블 또는 테이블의 레코드를 참조할 수 있습니다. 다른 레코드의 동일한 조회 열이 다른 테이블의 레코드를 참조할 수 있습니다. 이 경우 사용할 수 있는 열을 항상 알 수 있는 것은 아닙니다.

캔버스 레코드 참조는 Dataverse의 다형성 조회 작업을 위해 설계되었습니다. 이 컨텍스트 외부에서 레코드 참조를 사용할 수도 있습니다. 이것이 두 개념의 차이점입니다.

다음 섹션에서는 담당자 조회 작업을 통해 이러한 개념을 살펴볼 것입니다.

레코드 담당자의 열 표시

Dataverse의 모든 테이블에는 담당자 열이 있습니다. 이 열은 제거할 수 없고 다른 열을 추가할 수 없으며 항상 값이 필요합니다.

계정 테이블에서 해당 열을 표시하려면 다음을 수행합니다.

  1. Power Apps에 로그인합니다.

  2. 왼쪽 탐색줄에서 데이터 > 테이블을 선택합니다.

  3. 테이블 목록에서 계정을 선택합니다.

  4. 오른쪽 상단에서 필터 목록을 열고(기본적으로 기본으로 설정되어 있음)를 모두선택합니다.

  5. 담당자 열이 나타날 때까지 아래로 스크롤합니다.

    거래처 테이블의 담당자 열

이 조회 열은 테이블 또는 사용자 테이블의 레코드를 참조할 수 있습니다. 이 테이블의 모든 레코드에 담당자 권한이 있는 것은 아니므로 문제가 발생하면 지원되는 역할을 확인합니다.

이 그래픽은 계정 테이블이 데이터 원본으로 앱에 추가되는 간단한 계정 갤러리를 보여줍니다.

갤러리 컨트롤에 표시되는 거래처

중요

이 항목 전체에서 그래픽은 Dataverse와 함께 제공되는 샘플 데이터의 일부가 아닌 일부 이름 및 기타 값을 보여줍니다. 이 단계에서는 특정 결과에 대한 컨트롤을 구성하는 방법을 정확하게 보여주지만 사용자 환경은 조직의 데이터에 따라 다릅니다.

갤러리에서 각 거래처의 담당자를 표시하려면 ThisItem.Owner.Name 수식을 사용할 수 있습니다. 하지만 테이블의 이름 필드는 팀 이름, 사용자 테이블의 이름 필드는 전체 이름입니다. 앱을 실행하기 전에는 앱이 작업 중인 조회 유형을 알 수 없으며 계정 테이블의 레코드마다 다를 수 있습니다.

이러한 차이에 적용할 수 있는 공식이 필요합니다. 또한 담당자가 될 수 있는(이 경우 사용자) 테이블 유형의 데이터 원본을 추가해야 합니다. 다음 세 가지 데이터 원본을 앱에 추가하십시오.

데이터 창의 거래처, 팀 및 사용자 테이블

이러한 데이터 원본을 가지고 이 공식을 사용하여 사용자 또는 팀의 이름을 표시하십시오.

If( IsType( ThisItem.Owner, Teams ),
    "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
    "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )

담당자 필드가 표시된 갤러리 컨트롤에 표시된 거래처

이 수식에서 IsType 함수는 담당자 필드를 테이블에 대해 검사합니다. 해당 테이블 유형인 경우 AsType 함수는 이를 레코드로 캐스트합니다. 이 시점에서 .Field 표기법을 사용하여 팀 이름을 포함한 테이블의 모든 필드에 액세스할 수 있습니다. IsType담당자 테이블의 레코드가 아니라고 결정한 경우, 해당 필드는 담당자 필드가 필수이므로(공백일 수 없음) 사용자 테이블의 레코드여야 합니다.

레코드 참조의 필드를 사용하려면 먼저AsType 함수를 사용하여 특정 테이블 유형으로 캐스트해야 합니다. 시스템은 사용하려면 테이블 유형을 모르기 때문에 담당자 필드에서 직접 필드로 액세스할 수 없습니다.

담당자 필드가 요청된 테이블 유형과 일치하지 않을 경우 AsType 함수는 오류를 반환하므로 이 수식을 간단하게 하려면 IfError 함수를 사용할 수 있습니다. 먼저 실험 기능인 수식 수준 오류 관리를 켭니다.

실험적 전환으로 수식 수준 오류 관리 켜기

그런 다음 이전 수식을 다음 수식으로 바꾸십시오.

IfError(
    "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
    "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )

담당자를 기준으로 필터링

축하합니다. 레코드 참조 작업의 가장 어려운 부분을 마쳤습니다. 다른 사용 사례는 레코드의 필드에 액세스하지 않기 때문에 더 간단합니다. 적절한 경우 필터링을 수행할 수 있으며 이 섹션에서 그 내용을 살펴볼 것입니다.

갤러리 위에서 콤보 상자 컨트롤을 추가하고 새 컨드롤의 다음 특성을 설정하십시오.

  • 항목: Users
  • SelectMultiple: false

항목 속성이 사용자로 설정된 갤러리 위에 추가된 콤보 상자 컨트롤

이 콤보 상자에서 선택한 특정 사용자별로 갤러리를 필터링하려면 갤러리의 항목 속성을 다음 공식으로 설정합니다.

Filter( Accounts, Owner = ComboBox1.Selected )

콤보 상자 컨트롤에 설정된 값을 기준으로 필터링된 갤러리

중요

이 단계를 정확하게 수행하면 이 항목의 지침이 정확합니다. 그러나 컨트롤 이름이 다른 경우 이름으로 컨트롤을 참조하는 모든 수식이 실패합니다. 같은 유형의 컨트롤을 삭제하고 추가하면 컨트롤 이름 끝에 있는 숫자가 변경됩니다. 오류가 표시된 수식의 경우 모든 컨트롤의 올바른 이름이 포함되어 있는지 확인하십시오.

레코드 참조를 다른 레코드 참조 또는 전체 레코드와 비교하기 때문에 IsType 또는 AsType을 사용할 필요가 없습니다. 앱은 사용자 테이블에서 파생되었기 때문에 ComboBox1.Selected의 테이블 유형을 알고 있습니다. 담당자가 팀인 거래처는 필터 기준과 일치하지 않습니다.

사용자 또는 팀의 필터링을 지원하여 약간 더 멋진 경험을 얻을 수 있습니다.

  1. 갤러리 크기를 조정하고 콤보 상자를 이동하여 화면 상단 근처에 약간의 공간을 만든 다음 갤러리 위에 라디오 컨트롤을 삽입한 다음 새 컨트롤에 대해 다음 속성을 설정하십시오.

    • 항목: [ "All", "Users", "Teams" ]
    • 레이아웃: Layout.Horizontal
  2. 콤보 상자 컨트롤에 대해 이 속성을 설정합니다(콤보 상자가 사라지면 라디오 컨트롤에서사용자 선택).

    • 표시: Radio1.Selected.Value = "Users"
  3. 콤보 상자 사본을 복사하여 붙여 넣고, 사복을 원본 위로 직접 이동한 다음 복사본에 대해 다음 속성을 설정하십시오.

    • 항목: Teams
    • 표시: Radio1.Selected.Value = "Teams"

    앱은 라디오 컨트롤 상태에 따라 한 번에 하나의 콤보 상자만 표시합니다. 그것들은 서로 바로 위에 있기 때문에 내용을 변경하는 것과 동일한 컨트롤처럼 보입니다.

  4. 마지막으로 갤러리 컨트롤의 항목 속성을 다음 수식으로 설정합니다.

    Filter( Accounts,
        Radio1.Selected.Value = "All"
        Or (Radio1.Selected.Value = "Users" And Owner = ComboBox1.Selected)
        Or (Radio1.Selected.Value = "Teams" And Owner = ComboBox1_1.Selected)
    )
    

    모든 레코드 또는 특정 사용자 또는 팀을 보여주는 필터링된 갤러리

이러한 변경으로 모든 레코드를 표시하거나 사용자 또는 팀을 기준으로 필터링할 수 있습니다.

라디오 컨트롤과 콤보 상자에 따라 다르게 필터링된 결과를 보여주는 애니메이션

수식은 완전히 위임할 수 있습니다. 라디오 버튼 값을 비교하는 부분은 모든 레코드에서 일정하며 나머지 필터가 Dataverse로 전송되기 전에 평가됩니다.

담당자 유형을 필터링하려는 경우 IsType 함수를 사용할 수 있지만 아직 위임할 수 없습니다.

IsType을 사용하여 담당자 유형별로 필터링

패치를 사용하여 담당자 업데이트

다른 조회와 같은 방식으로 담당자 필드를 업데이트할 수 있습니다. 현재 선택된 거래처의 담당자를 첫 번째 팀으로 설정하려면:

Patch( Accounts, Gallery1.Selected, { Owner: First( Teams ) } )

이 방법은 앱이 First( Teams ) 유형을 알고 있기 때문에 일반 조회와 다르지 않습니다. 대신 첫 번째 사용자를 원한다면 해당 부분을 First( Users ) 로 대체합니다. Patch 함수는 담당자 필드를 이 두 테이블 유형 중 하나로 설정할 수 있음을 알고 있습니다.

이 기능을 앱에 추가하려면:

  1. 트리 보기 창에서 라디오 컨트롤과 두 콤보 상자 컨트롤을 동시에 선택합니다.

  2. 줄임표 메뉴에서 이 항목 복사를 선택합니다.

    트리 보기를 사용하여 여러 컨트롤 복사

  3. 같은 메뉴에서 붙여넣기를 선택합니다.

    트리 보기를 사용하여 여러 컨트롤 붙여넣기

  4. 복사한 컨트롤을 갤러리 오른쪽으로 이동하십시오.

    갤러리 오른쪽으로 이동된 복사한 컨트롤

  5. 복사한 라디오 컨트롤을 선택하고 다음 속성을 변경하십시오.

    • 항목: [ "Users", "Teams" ]
    • 기본값: If( IsType( Gallery1.Selected.Owner, Users ), "Users", "Teams" )

    라디오 컨트롤에서 모든 선택이 제거됨

  6. 라디오 컨트롤에서 사용자를 선택하여 사용자를 나열하는 콤보 상자 컨트롤을 표시합니다.

  7. 시각적 콤보 상자 컨트롤을 선택한 다음 DefaultSelectedItems 속성을 다음 공식으로 설정합니다.

    If( IsType( Gallery1.Selected.Owner, Users ),
        AsType( Gallery1.Selected.Owner, Users ),
        Blank()
    )
    

    사용자 콤보 상자에 설정된 기본 속성

  8. 라디오 컨트롤에서 을 선택하여 팀을 나열하는 콤보 상자 컨트롤을 표시합니다.

  9. 라디오 컨트롤을 선택하여 이제 사용자에게 보이는 콤보 상자 컨트롤을 선택 해제합니다.

  10. 팀에게 표시되는 콤보 상자 컨트롤을 선택한 다음 DefaultSelectedItems 속성을 다음 공식으로 설정합니다.

    If( IsType( Gallery1.Selected.Owner, Teams ),
        AsType( Gallery1.Selected.Owner, Teams ),
        Blank()
    )
    

    팀 콤보 상자에 설정된 기본 속성

  11. 단추 컨트롤을 삽입하고 콤보 상자 컨트롤 아래로 이동한 다음 버튼의 Text 속성을 "Patch Owner"로 설정합니다.

  12. 단추의 OnSelect 속성을 다음 수식으로 설정합니다.

    Patch( Accounts, Gallery1.Selected,
        { Owner: If( Radio1_1.Selected.Value = "Users",
                     ComboBox1_2.Selected,
                     ComboBox1_3.Selected ) } )
    

    버튼 컨트롤에 설정된 수식

복사한 라디오콤보 상자 컨트롤은 갤러리에서 현재 선택된 거래처의 담당자를 보여줍니다. 동일한 컨트롤을 사용하여 다음 버튼을 선택하여 거래처 담당자를 모든 팀 또는 사용자로 설정할 수 있습니다.

사용자 또는 팀인 담당자 패치를 보여주는 애니메이션

양식을 사용하여 담당자 표시

사용자 지정 카드를 추가하여 양식 내부 필드에 담당자를 표시할 수 있습니다. 이 글의 작성 시점에서 양식 컨트롤을 사용하여 필드 값을 변경할 수 없습니다.

  1. 양식 편집 컨트롤을 삽입한 다음 크기를 조정하여 오른쪽 아래 모서리로 이동하십시오.

  2. 화면 오른쪽 근처에 있는 속성 탭에서 데이터 원본 목록을 열고 거래처를 선택합니다.

    값이 빈 추가 필드를 표시하는 양식 컨트롤

  3. 양식의 Item 속성을 Gallery1.Selected로 설정합니다.

    갤러리의 선택된 항목에서 채워진 추가 필드를 표시하는 양식 컨트롤

  4. 화면 오른쪽 근처의 속성 탭에서 필드 편집을 선택합니다.

  5. 필드 창에서 줄임표를 선택한 다음 사용자 지정 카드 추가를 선택합니다.

    사용자 지정 카드 추가 명령

    새 카드가 양식 컨트롤 하단에 나타납니다.

  6. 필요에 따라 카드의 크기를 조정하여 모든 텍스트를 표시합니다.

    삽입된 사용자 지정 카드, 비어 있음

  7. 사용자 지정 카드에 레이블 컨트롤을 삽입한 다음 레이블의 Text 속성을 갤러리에서 사용한 수식으로 설정합니다.

    If( IsType( ThisItem.Owner, Teams ),
        "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
        "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )
    

    레이블 컨트롤에 담당자 필드를 보여주는 사용자 지정 카드

갤러리의 각 선택 항목에 대해 레코드 담당자를 포함하여 더 많은 거래처 필드가 양식에 나타납니다. 패치 버튼을 사용하여 담당자를 변경하면 양식 컨트롤에도 해당 변경 사항이 표시됩니다.

갤러리의 변경에 응답하는 양식 컨트롤을 보여주는 애니메이션

고객 열 표시

Dataverse에서 고객 조회 열은 담당자와 매우 유사한 또 다른 다형성 조회입니다.

담당자는 테이블당 1개로 제한되지만 테이블은 0개, 1개 또는 그 이상의 고객 조회 열을 포함할 수 있습니다. 연락처 시스템 테이블은 고객 조회 열인 회사 이름 열을 포함합니다.

필요하지 않은 고객 데이터 형식으로 회사 이름 열을 표시하는 연락처 테이블

새 열에 대해 고객 데이터 형식을 선택하여 더 많은 고객 조회 열을 테이블에 추가할 수 있습니다.

열을 만들 때 데이터 형식 목록의 고객 데이터 유형

고객 조회 필드는 계정 테이블 또는 연락처 테이블의 레코드를 참조할 수 있습니다. 이러한 테이블에 IsTypeAsType 함수를 사용할 수 있으므로 이제 데이터 소스로도 추가할 수 있습니다(사용자는 그대로 유지 가능).

데이터 창의 계정, 팀, 사용자 및 연락처 테이블

고객담당자 필드의 처리가 너무 유사하므로 문자 그대로 앱을 복사(파일 > 다른 이름으로 저장을 선택하고 다른 이름을 지정)하여 다음과 같이 간단하게 교체하십시오.

위치 담당자 샘플 고객 샘플
전역 담당자 '고객 이름'
전역 사용자 거래처
전역 연락처
갤러리의 Items 속성 거래처 연락처
양식의 Items 속성 거래처 연락처
Patch의 첫 번째 인수
(버튼의 OnSelect 속성에서)
거래처 연락처
라디오의 Items 속성 필터링 [ "모두", "사용자", "팀" ] [ "모두", "거래처", "연락처" ]
라디오의 Items 속성 가져오기 [ "사용자", "팀" ] [ "거래처", "연락처" ]
콤보 상자의 표시 속성 "사용자""팀" "거래처""연락처"

예를 들어 새 갤러리에는 다음과 같은 Items 속성이 있습니다.

Filter( Contacts,
    Radio1.Selected.Value = "All"
    Or (Radio1.Selected.Value = "Accounts" And 'Company Name' = ComboBox1.Selected)
    Or (Radio1.Selected.Value = "Contacts" And 'Company Name' = ComboBox1_1.Selected)
)

간단한 변경 사항이 적용된 담당자 앱에서 파생된 고객 앱

고객담당자의 두 가지 중요한 차이점을 위해서는 갤러리 내부의 수식과 양식을 업데이트해야 합니다.

  1. 계정연락처 간의 일대다 관계는 이러한 테이블 유형을 이름으로 참조할 때 우선 적용됩니다. 거래처 대신 [@Accounts] 을, 연락처 대신 [@Contacts] 를 사용합니다. 전역 명확성 연산자를 사용하면 IsTypeAsType의 테이블 유형을 참조하고 있는지 확인합니다. 이 문제는 갤러리 및 양식 컨트롤의 레코드 컨텍스트에만 존재합니다.

  2. 담당자 필드에는 값이 있어야 하지만 고객 필드는 공백일 수 있습니다. 유형 이름 없이 올바른 결과를 표시하려면 IsBlank 함수로 이 사례를 테스트하고 빈 텍스트 문자열을 대신 표시하십시오.

이 두 가지 변경 사항은 동일한 수식으로 되어 있으며 양식의 사용자 지정 카드 및 갤러리 레이블 컨트롤의 Text 속성에 나타납니다.

If( IsBlank( ThisItem.'Company Name' ), "",
    IsType( ThisItem.'Company Name', Accounts ),
        "Account: " & AsType( ThisItem.'Company Name', Accounts ).'Account Name',
    "Contact: " & AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)

갤러리에서 부제목 레이블 컨트롤의 텍스트 속성 업데이트

이러한 변경 사항을 통해 연락처 테이블의 회사 이름 필드를 보고 변경할 수 있습니다.

연락처를 선택하면 다른 컨트롤과 양식이 어떻게 변경되는지 보여주는 애니메이션

관련 항목 조회 열에 대한 이해

관련 항목 조회 열은 이 토픽에서 이미 작업한 열과는 조금 다릅니다. 이 토픽에서 설명한 패턴을 적용하여 시작한 다음 다른 요령을 배우게 됩니다.

팩스 테이블로 간단하게 시작할 수 있습니다. 예를 들어 이 테이블에는 계정, 연락처 및 기타 테이블을 참조할 수 있는 다형성 관련 항목 조회 열이 있습니다. 고객용 앱을 팩스용으로 수정할 수 있습니다.

위치 고객 샘플 팩스 샘플
전역 '고객 이름' 관련 항목
갤러리의 Items 속성 연락처 팩스
양식의 Items 속성 연락처 팩스
Patch의 첫 번째 인수
(버튼의 OnSelect 속성에서)
연락처 팩스

이번에도 데이터 원본을, 이번에는 팩스를 추가해야 합니다. View 탭에서 Data sources를 선택합니다.

거래처, 팀, 사용자, 연락처 및 팩스 테이블을 표시하는 데이터 창

관련 항목의 중요한 차이점은 거래처연락처로 제한되지 않는다는 점입니다. 사실 테이블 목록은 사용자 지정 테이블로 확장할 수 있습니다. 대부분의 앱은 수정 없이 이 사실을 수용할 수 있지만 갤러리의 레이블 및 양식에 대한 수식을 업데이트해야 합니다.

If( IsBlank( ThisItem.Regarding ), "",
    IsType( ThisItem.Regarding, Accounts ),
        "Account: " & AsType( ThisItem.Regarding, Accounts ).'Account Name',
    IsType( ThisItem.Regarding, Contacts ),
        "Contacts: " & AsType( ThisItem.Regarding, Contacts ).'Full Name',
    ""
)

관련 항목 조회에 대한 부제목 컨트롤의 텍스트 속성이 업데이트됨

이러한 변경을 수행한 후에는 담당자고객 조회에서처럼 관련 항목 조회로 작업할 수 있습니다.

갤러리에서 항목을 선택하면 다른 컨트롤과 양식이 어떻게 변경되는지 보여주는 애니메이션

관련 항목 관계 이해

관련 항목은 다대일 관계를 포함하기 때문에 담당자고객과 다릅니다. 정의에 따르면 역방향 일대다 관계를 통해 First( Accounts ).Faxes를 작성할 수 있습니다.

테이블 정의로 돌아가 살펴 보겠습니다. Dataverse에서 팩스, 작업, 이메일, 메모, 전화 통화, 편지채팅과 같은 테이블은 활동으로 지정됩니다. 자신만의 사용자 지정 활동 테이블을 만들 수도 있습니다. 활동 테이블을 보거나 만들면 기타 설정 아래에 해당 설정이 나타납니다.

테이블 생성 시 활동 테이블 설정

다른 테이블은 테이블 설정의 활동 작업으로 활성화된 경우 활동 테이블과 관련될 수 있습니다. 계정, 연락처 및 다른 많은 표준 테이블이 이와 같이 지정되어 있습니다(기타 설정 아래).

테이블 생성 시 활동 작업 설정

모든 활동 테이블과 활동 작업 테이블에는 묵시적 관계가 있습니다. 화면 상단에서 필터를 모두로 변경할 경우 팩스 테이블을 선택한 다음 관계 탭을 선택하면 관련 항목 조회의 대상이 될 수 있는 모든 테이블이 나타납니다.

관련 항목 다대일 관계를 나타내는 팩스 테이블의 관계

계정 테이블의 관계를 표시하는 경우 관련 항목 조회 필드의 원본이 될 수 있는 모든 테이블이 나타납니다.

관련 항목 일대다 관계를 나타내는 계정 테이블의 관계

이것은 모두 무슨 의미입니까?

  • 수식을 작성할 때 활동 테이블 목록이 고정되어 있지 않으며 직접 만들 수 있다는 점을 고려해야 합니다. 이 수식은 예상하지 못한 활동 테이블을 적절하게 처리해야 합니다.
  • 활동 작업과 활동은 일대다 관계입니다. 거래처와 관련된 모든 팩스를 쉽게 요청할 수 있습니다.

앱에서 이 개념을 탐색하려면:

  1. 다른 화면을 추가합니다.

    빈 화면 삽입

  2. 갤러리 컨트롤을 삽입하고 크기를 조정한 다음 화면 왼쪽으로 이동하십시오.

  3. 화면 오른쪽 근처에 있는 속성 탭을 사용하여 갤러리의 항목거래처로 설정합니다.

    속성 창에서 항목을 거래처로 설정

  4. 갤러리의 레이아웃을 제목으로 설정한 다음 제목 필드를 거래처 이름으로 설정합니다.

    속성 창에서 갤러리 컨트롤의 레이아웃을 제목으로 설정

  5. 두 번째 갤러리를 추가하고 크기를 조정한 다음 화면 오른쪽으로 이동하십시오.

  6. 새 갤러리의 Items 속성을 Gallery2.Selected.Faxes로 설정합니다.

    이 단계는 주어진 거래처에 대해 필터링된 팩스 목록을 반환합니다.

    팩스를 나타내는 갤러리의 항목 속성 설정

  7. 갤러리의 레이아웃을 제목 및 부제목으로 설정한 다음 제목 필드가 주제필드(소문자 subject일 수 있음)를 표시하도록 설정합니다.

    제목을 주제 필드로 설정

거래처 목록에서 항목을 선택하면 해당 거래처에 대해서만 팩스 목록이 표시됩니다.

거래처 갤러리에서 팩스 목록을 가져오는 선택을 보여주는 애니메이션

활동 테이블

이전 섹션에서 설명했듯이 거래처의 모든 팩스를 표시할 수 있습니다. 그러나 팩스, 전자 메일 메시지, 전화 통화 및 기타 상호 작용을 포함하여 거래처에 대한 모든 활동을 표시할 수도 있습니다.

후자 시나리오의 경우 활동 테이블을 사용합니다. 이 테이블을 표시하려면 오른쪽 상단에서 모두로 변경하여 테이블 목록에서 필터를 제거합니다.

활동 테이블을 보여주는 테이블 목록

활동 테이블은 특별합니다. 레코드를 팩스 테이블 에 추가할 때마다, 시스템은 또한 모든 활동 테이블에서 공통인 열이 있는 활동 테이블에 레코드를 만듭니다. 그 열 중에서 제목은 가장 흥미로운 열입니다.

이전 예에서 한 줄만 변경하여 모든 활동을 표시할 수 있습니다. Gallery2.Selected.FaxesGallery2.Selected.Activities로 교체합니다.

팩스에서 활동으로 변경하여 두 번째 갤러리의 항목 속성 변경

레코드는 활동 테이블에서 오지만 그럼에도 IsType 함수를 사용하여 어떤 종료의 활동인지 식별할 수 있습니다. 테이블 유형과 함께 IsType을 사용하기 전에 데이터 원본을 추가해야 합니다.

IsType 함수에 필요한 모든 테이블을 표시하는 데이터 창

이 수식을 사용하면 갤러리의 레이블 컨트롤에 레코드 종류를 표시할 수 있습니다.

If( IsType( ThisItem, Faxes] ), "Fax",
    IsType( ThisItem, 'Phone Calls' ), "Phone Call",
    IsType( ThisItem, 'Email Messages' ), "Email Message",
    IsType( ThisItem, Chats ), "Chat",
    "Unknown"
)

팩스, 전화 통화 및 기타 활동에 대한 정보를 표시하도록 텍스트 속성을 수식으로 설정

또한 AsType을 사용하여 특정 유형의 필드에 액세스할 수 있습니다. 예를 들어 전화 통화의 경우, 이 수식은 각 활동의 유형을 결정하고 전화 번호 테이블에서 전화 번호와 통화 방향을 보여줍니다.

If( IsType( ThisItem, Faxes ), "Fax",
    IsType( ThisItem, 'Phone Calls' ),
       "Phone Call: " &
       AsType( ThisItem, 'Phone Calls' ).'Phone Number' &
       " (" & AsType( ThisItem, 'Phone Calls' ).Direction & ")",
    IsType( ThisItem, 'Email Messages' ), "Email Message",
    IsType( ThisItem, Chats ), "Chat",
    "Unknown"
)

전화 통화에 대한 자세한 정보가 포함된 확장 텍스트 속성

결과적으로 앱은 전체 활동 목록을 보여줍니다. 수식에서 계산 여부에 관계없이 모든 유형의 활동에 대해 주제 필드가 나타납니다. 알고 있는 활동 유형의 경우 각 활동에 대한 유형 이름 및 유형별 정보를 표시할 수 있습니다.

다양한 종류의 활동에 대한 정보를 보여주는 완성된 화면

메모 테이블

지금까지 모든 관련 항목 예제는 활동을 기반으로 했지만 메모 테이블은 또 다른 경우를 나타냅니다.

테이블을 생성할 때 첨부 파일을 활성화할 수 있습니다.

테이블 생성 시 첨부 파일 및 메모 활성화

첨부 파일을 활성화하기 위한 확인란을 선택한 경우 다음 그래픽이 계정 테이블에 대해 표시하는 것처럼 메모 테이블과 관련 항목 관계를 생성합니다.

일대다 관계를 통한 메모에 대한 관계를 나타내는 거래처 테이블

이 차이점 외에는 활동을 사용하는 것과 같은 방식으로 관련 항목 조회를 사용합니다. 이 예제와 같이 메모에 대한 일대다 관계를 갖는 첨부 파일을 활성화한 테이블입니다.

First( Accounts ).Notes

참고

이 문서의 작성 시점에서 관련 항목 조회는 메모 테이블에 대해 사용할 수 없습니다. 관련 항목 열을 기준으로 필더링을 하거나 Patch를 사용하여 열을 설정할 수 없습니다.

그러나 역방향 메모 일대다 관계를 사용할 수 있으므로 첨부 파일에 사용 가능한 레코드의 메모 목록을 필터링할 수 있습니다. 또한 Relate 함수를 사용하여 레코드의 메모 테이블에 메모를 추가할 수 있지만 다음 예와 같이 메모를 먼저 작성해야 합니다.

Relate( ThisItem.Notes, Patch( Notes, Defaults( Notes ), { Title: "A new note" } ) )

활동 당사자

문서 작성 시점에서 캔버스 앱은 활동 당사자를 지원하지 않습니다.

참고

귀사의 설명서 언어 기본 설정에 대해 말씀해 주시겠습니까? 간단한 설문 조사에 응해주세요. (이 설문 조사는 영어로 되어 있습니다.)

이 설문 조사는 약 7분 정도 걸립니다. 개인 데이터는 수집되지 않습니다(개인정보처리방침).