App object in Power Apps

적용 대상: 캔버스 앱 모델 기반 앱

현재 실행 중인 앱의 정보를 제공하고 앱의 동작을 제어합니다.

설명

컨트롤처럼 개체는 표시되는 화면을 식별하고 사용자가 변경 내용을 잃어버리지 않도록 저장하라는 메시지를 표시하는 속성을 제공합니다. 모든 앱에는 개체가 있습니다.

개체의 일부 속성에 대한 수식을 작성할 수 있습니다 . 트리 보기 창의 상단에서 다른 컨트롤이나 화면에서와같이 개체를 선택합니다. 수식 입력 줄의 왼쪽에 있는 드롭다운 목록에서 개체 속성 중 하나를 선택하여 보고 편집하십시오.

트리 보기 창의 앱 개체.

ActiveScreen 속성

ActiveScreen 속성은 표시되는 화면을 식별합니다.

이 속성은 화면 개체를 반환합니다. 이를 사용하여 App.ActiveScreen.Name 수식을 사용하는 이름과 같이 현재 표시된 화면의 속성을 참조합니다. 또한 이 속성을 다른 화면 개체와 비교할 수도 있습니다. 예를 들어 비교 공식 App.ActiveScreen = Screen2를 사용하여 Screen2가 현재 표시된 화면인지 테스트할 수 있습니다.

Back 또는 Navigate 함수를 사용하여 표시되는 화면을 변경할 수 있습니다.

BackEnabled 속성

BackEnabled 속성은 Power Apps 모바일에서 실행될 때 앱이 장치 뒤로 동작(Android 장치에서는 하드웨어 뒤로 버튼을 스와이프하거나 사용, iOS 장치에서는 왼쪽에서 스와이프)에 응답하는 방식을 변경합니다. 활성화되면 장치 뒤로 동작이 가장 최근에 표시된 화면으로 다시 이동합니다. 이는 Back 수식과 유사합니다. 비활성화되면 장치 뒤로 동작이 사용자를 앱 목록으로 되돌립니다.

ConfirmExit 속성

저장되지 않은 변경 사항을 잃고 싶은 사람은 없습니다. ConfirmExitConfirmExitMessage 속성을 사용하여 앱을 닫기 전에 사용자에게 경고하게 할 수 있습니다.

노트

  • ConfirmExit는 Power BI 및 SharePoint와 같은 내장된 앱에서는 작동하지 않습니다.
  • 현재 이러한 속성은 지연된 로드 미리 보기 기능이 활성화되어 있다면(새 앱의 경우 기본적으로 설정) 첫 번째 화면에서만 컨트롤을 참조할 수 있습니다. 참조가 만들어지면 Power Apps Studio는 오류를 표시하지 않지만, 결과적으로 게시된 앱은 Power Apps Mobile 또는 브라우저에서 열리지 않습니다. 이 제한 사항을 해결하기 위해 적극적으로 노력하고 있습니다. 그 동안 설정>예정된 기능(프리뷰 아래)에서 지연된 부하를 끌 수 있습니다.

ConfirmExit

ConfirmExit는 부울 속성으로 true일 때 앱을 닫기 전에 확인 대화 상자를 엽니다. 기본적으로 이 속성은 false이며 대화 상자가 나타나지 않습니다.

사용자가 앱에 저장하지 않은 변경 사항이 있는 경우 이 속성을 사용하여 앱을 종료하기 전에 확인 대화 상자를 표시합니다. 변수를 확인하고 속성을 제어할 수 있는 공식을 사용하십시오(예: Edit form 제어의 Unsaved 속성).

다음 예와 같이 데이터가 손실될 수 있는 상황에서 확인 대화 상자가 나타납니다.

  • Exit 함수를 실행합니다.
  • 앱이 브라우저에서 실행 중인 경우:
    • 앱이 실행 중인 브라우저 또는 브라우저 탭을 닫습니다.
    • 브라우저의 뒤로 단추를 선택합니다.
    • SelfLaunchTarget으로 Launch 함수 실행.
  • Power Apps Mobile(iOS 또는 Android)에서 앱이 실행 중인 경우:
    • Power Apps Mobile에서 다른 앱으로 전환하려면 살짝 밉니다.
    • Android 장치에서는 뒤로 버튼을 선택합니다.
    • 다른 캔버스 앱을 시작하기 위해 Launch 함수 실행.

확인 대화 상자의 모양은 장치 및 Power Apps의 버전에 따라 다를 수 있습니다..

확인 대화 상자는 Power Apps Studio에서 나타나지 않습니다.

ConfirmExitMessage

기본적으로 확인 대화 상자에는 "저장되지 않은 변경 사항이 있을 수 있습니다."와 같은 일반 메시지가 사용자의 언어로 표시됩니다.

ConfirmExitMessage를 사용하여 확인 대화 상자에서 사용자 정의 메시지를 제공합니다. 이 속성이 blank인 경우 기본값이 사용됩니다. 확인 대화 상자에 맞게 사용자 정의 메시지가 잘리므로 메시지를 최대 몇 줄로 유지하십시오.

브라우저에서 확인 대화 상자는 브라우저의 일반 메시지와 함께 나타날 수 있습니다.

노트

앱 개체에는 실험적인 2개의 추가 속성 OnMessageBackEnabled가 있습니다. 이러한 속성은 결국 앱 개체에서 제거됩니다. 프로덕션 환경에서는 이러한 속성을 사용하지 않는 것이 좋습니다.

  1. 두 가지 양식 컨트롤, AccountFormContactForm이 포함된 앱을 만듭니다.

  2. 개체의 ConfirmExit 속성을 다음 식으로 설정합니다.

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    이 대화 상자는 사용자가 어떤 형식으로든 데이터를 변경한 다음 해당 변경 사항을 저장하지 않고 앱을 닫으려고 하면 나타납니다.

    일반 확인 대화 상자.

  3. 개체의 ConfirmExitMessage 속성을 다음 식으로 설정합니다.

    If( AccountsForm.Unsaved,
        "Accounts form has unsaved changes.",
        "Contacts form has unsaved changes."
    )
    

    이 대화 상자는 사용자가 계정 양식에서 데이터를 변경한 다음 해당 변경 사항을 저장하지 않고 앱을 닫으려고 하면 나타납니다.

    양식별 확인 대화 상자.

수식 속성

수식 속성에서 이름이 지정된 수식을 사용하여 앱 전체에서 재사용할 수 있는 수식을 정의합니다.

Power Apps에서 컨트롤 속성은 수식에 의해 구동됩니다. 예를 들어 앱 전체에서 배경색을 일관되게 설정하려면 각각의 채우기 속성을 공통 수식으로 설정할 수 있습니다.

Label1.Fill: ColorValue( Param( "BackgroundColor" ) )
Label2.Fill: ColorValue( Param( "BackgroundColor" ) )
Label3.Fill: ColorValue( Param( "BackgroundColor" ) )

이 수식이 나타날 수 있는 위치가 너무 많기 때문에 변경이 필요한 경우 모두 업데이트하는 것이 지루하고 오류가 발생하기 쉽습니다. 대신 OnStart에서 전역 변수를 만들어 색상을 한 번 설정한 다음 앱 전체에서 값을 재사용할 수 있습니다.

App.OnStart: Set( BGColor, ColorValue( Param( "BackgroundColor" ) ) )
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor

이 방법이 더 좋지만 BGColor 값이 설정되기 전에 실행 중인 OnStart에도 의존합니다. BGColor 앱의 일부 모서리에서 제작자가 알지 못하는 다른 사람이 변경한 내용을 조작하여 추적하기 어려울 수도 있습니다.

이름이 지정된 수식은 대안을 제공합니다. 일반적으로 컨트롤-속성 = 식을 작성하는 것처럼 이름 = 식를 작성한 다음 표현식을 대체하기 위해 앱 전체에서 이름을 재사용할 수 있습니다. 이러한 수식의 정의는 수식 속성에서 수행됩니다.

App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor

이름이 지정된 수식을 사용하면 다음과 같은 이점이 있습니다.

  • 수식의 값은 항상 사용할 수 있습니다. 타이밍 종속성도 없고, 값을 설정하기 전에 먼저 실행해야 하는 OnStart도 없으며, 수식 값이 잘못된 시간도 없습니다. 이름이 지정된 수식은 순환 참조를 만들지 않는 한 어떤 순서로든 서로를 참조할 수 있습니다. 병렬로 계산할 수 있습니다.
  • 수식의 값은 항상 최신입니다. 수식은 컨트롤 속성 또는 데이터베이스 레코드에 따라 계산을 수행할 수 있으며 변경되면 수식 값이 자동으로 업데이트됩니다. 변수를 사용할 때처럼 값을 수동으로 업데이트할 필요가 없습니다. 그리고 수식은 필요할 때만 다시 계산됩니다.
  • 수식의 정의는 변경할 수 없습니다. 수식의 정의는 단일 소스의 진실이며 앱의 다른 곳에서 값을 변경할 수 없습니다. 변수를 사용하면 일부 코드가 예기치 않게 값을 변경할 수 있지만 이름이 지정된 수식에서는 불가능합니다.
  • 수식의 계산을 연기할 수 있습니다. 값은 불변이기 때문에 필요할 때 항상 계산할 수 있습니다. 즉, 필요할 때까지 계산할 필요가 없습니다. 앱의 화면2가 표시될 때까지 사용되지 않는 수식 값은 화면2가 표시될 때까지 계산할 필요가 없습니다. 이 작업을 연기하면 앱 로드 시간이 향상될 수 있습니다. 이름이 지정된 수식은 선언적이며 시스템이 계산 방법과 시기를 최적화할 수 있는 기회를 제공합니다.
  • 이름이 지정된 수식은 Excel 개념입니다. 많은 사람들이 Excel을 잘 알고 있기 때문에 Power Fx은 가능한 경우 Excel 개념을 사용합니다. 이름이 지정된 수식은 이름 관리자로 관리되는 Excel의 이름이 지정된 셀 및 이름이 지정된 수식과 동일합니다. 컨트롤 속성과 마찬가지로 스프레드시트처럼 자동으로 다시 계산됩니다.

이름이 지정된 수식은 각각 세미콜론으로 끝나는 수식 속성에서 차례로 정의됩니다. 수식의 유형은 식 내의 요소 유형과 함께 사용되는 방식을 기반으로 하는 식의 유형에서 유추됩니다. 예를 들어 다음과 같은 이름이 지정된 수식은 Dataverse에서 현재 사용자에 대한 유용한 정보를 검색합니다.

UserEmail = User().Email;
UserInfo = LookUp( Users, 'Primary Email' = User().Email );
UserTitle = UserInfo.Title;
UserPhone = Switch( UserInfo.'Preferred Phone', 
                    'Preferred Phone (Users)'.'Mobile Phone', UserInfo.'Mobile Phone',
                    UserInfo.'Main Phone' );

UserTitle에 대한 수식을 업데이트해야 하는 경우 이 한 위치에서 쉽게 수행할 수 있습니다. 앱에서 UserPhone이 필요하지 않은 경우 Dataverse의 사용자 테이블에 대한 이러한 호출은 수행되지 않습니다. 사용되지 않는 수식 정의를 포함하는 데 따른 불이익은 없습니다.

명명된 수식의 몇 가지 제한 사항:

  • 동작 기능을 사용하거나 앱 내에서 부작용을 일으킬 수 없습니다.
  • 순환 참조를 만들 수 없습니다. 동일한 앱에 a = b;b = a;를 사용하는 것은 허용되지 않습니다.

OnError 속성

OnError를 사용하여 오류가 감지된 후 조치를 취합니다. 최종 사용자에게 표시되기 전에 오류 배너를 가로챌 수 있는 전역 기회를 제공합니다. 또한 추적 기능으로 오류를 기록하거나 데이터베이스 또는 웹 서비스에 쓰는 데 사용할 수 있습니다.

모든 수식 평가 결과에 오류가 있는지 확인합니다. 오류인 경우 OnError는 전체 수식이 IfError 함수로 래핑된 경우 존재했을 동일한 FirstErrorAllErrors 범위 변수로 평가됩니다.

OnError가 비어 있으면 오류의 FirstError.Message와 함께 기본 오류 배너가 표시됩니다. OnError 공식을 정의하면 제작자가 적절하다고 생각하는 대로 오류 보고를 처리할 수 있도록 이 동작을 재정의합니다. Error 함수를 사용하여 오류를 다시 던져 OnError에서 기본 동작을 요청할 수 있습니다. 이것은 일부 오류가 필터링되거나 다른 방식으로 처리되는 반면 다른 오류는 통과해야 하는 경우에 유용합니다.

OnErrorIfError가 할 수 있는 방식으로 계산의 오류를 대체할 수 없습니다. OnError가 호출되는 시점에서 오류는 이미 발생했으며 수식 계산을 통해 이미 처리되었습니다. *OnError*는 오류 보고만 제어합니다.

OnError 수식은 동시에 평가되며 해당 평가가 다른 오류 처리와 겹칠 수 있습니다. 예를 들어 OnError의 맨 위에 전역 변수를 설정하고 나중에 같은 수식으로 읽으면 값이 변경되었을 수 있습니다. With 함수를 사용하여 수식에 대해 로컬인 명명된 값을 만듭니다.

각 오류는 OnError에 의해 개별적으로 처리되지만 기본 오류 배너는 각 오류에 대해 개별적으로 표시되지 않을 수 있습니다. 너무 많은 오류 배너가 동시에 표시되는 것을 방지하기 위해 최근에 표시된 경우 동일한 오류가 새 오류 배너를 트리거하지 않습니다.

수식을 통해 함께 바인딩된 Label 컨트롤과 Slider 컨트롤을 고려합니다.

Label1.Text = 1/Slider1.Value

Label1.Text = 1/Slider1.Value 수식을 통해 바인딩된 Label 및 slider 컨트롤.

슬라이더의 기본값은 50입니다. 슬라이더를 0으로 이동하면 Label1에 값이 표시되지 않고 오류 배너가 표시됩니다.

Slider 컨트롤이 0으로 이동하여 0으로 나누기 오류 및 오류 배너가 표시됩니다.

무슨 일이 있었는지 자세히 살펴보겠습니다.

  1. 사용자가 슬라이드를 왼쪽으로 이동하고 Slide1.Value 속성이 0으로 변경되었습니다.
  2. Label1.Text가 자동으로 재평가되었습니다. 0으로 나누기가 발생하여 오류가 발생했습니다.
  3. 이 수식에는 IfError가 없습니다. 0으로 나누기 오류는 공식 평가에서 반환됩니다.
  4. Label1.Text는 이 오류에 대해 아무 것도 표시할 수 없으므로 공백 상태를 표시합니다.
  5. OnError가 호출됩니다. 처리기가 없으므로 오류 정보와 함께 표준 오류 배너가 표시됩니다.

필요한 경우 수식을 Label1.Text = IfError( 1/Slider1.Value, 0 )로 수정할 수도 있습니다. 그러면 오류 또는 오류 배너가 표시되지 않습니다. 그 시점에서 오류가 이미 발생했기 때문에 OnError에서 오류 값을 변경할 수 없습니다. 이는 단지 보고되는 방법의 문제일 뿐입니다.

OnError 처리기를 추가하면 5단계 전에는 영향을 미치지 않지만 오류가 보고되는 방식에 영향을 줄 수 있습니다.

Trace( $"Error {FirstError.Message} in {FirstError.Source}" )

추적을 생성하도록 설정된 App.OnError 수식.

이렇게 하면 앱 사용자의 관점에서 오류가 발생하지 않습니다. 그러나 오류는 FirstError의 오류 정보 소스와 함께 Monitor의 추적에 추가됩니다.

Slider 컨트롤이 0으로 이동하여 0으로 나누기 오류가 발생하지만 오류 배너는 없습니다.

추적 외에도 동일한 기본 오류 배너를 표시하려면 Trace가 없는 경우와 마찬가지로 Trace 호출 후 Error 함수를 사용하여 오류를 다시 발생시킬 수 있습니다.

Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )

OnStart 속성

노트

OnStart 속성을 사용하면 앱을 로드할 때 성능 문제를 일으킬 수 있습니다. 속성을 사용하는 가장 큰 두 가지 이유인 데이터 캐싱과 전역 변수 설정에 대한 대안을 만드는 과정에 있습니다. Navigate와 표시할 첫 번째 화면을 정의하기 위한 대안을 이미 만들었습니다. 컨텍스트에 따라 이 속성은 기본적으로 비활성화되어 있을 수 있습니다. 표시되지 않고 사용해야 하는 경우 앱의 고급 설정에서 스위치를 사용하도록 설정했는지 확인하세요. 화면의 OnVisible 속성도 사용할 수 있습니다.

OnStart 속성은 사용자가 앱을 시작할 때 실행됩니다. 이 속성은 종종 다음 작업을 수행하는 데 사용됩니다.

  • Collect 함수를 사용하여 데이터를 수집하고 컬렉션으로 캐시합니다.
  • Set 함수를 사용하여 전역 변수를 설정합니다.

이 수식은 첫 번째 화면이 나타나기 전에 평가됩니다. 화면이 로드되지 않았으므로 UpdateContext 함수로 컨텍스트 변수를 설정할 수 없습니다. 그러나 Navigate 함수를 사용하여 컨텍스트 변수를 전달할 수 있습니다. .

OnStart 속성을 변경한 후 트리 뷰 창의 개체에 마우스를 가져가 줄임표(...)를 선택한 다음 OnStart 실행을 선택하여 테스트합니다. 앱이 처음로드될 때와 달리 기존 컬렉션 및 변수는 이미 설정되어 있습니다. 빈 컬렉션으로 시작하려면 Collect 함수 대신 ClearCollect 함수를 사용하세요.

Run OnStart에 대한 앱 항목 바로 가기 메뉴

노트

  • OnStart 속성에서 Navigate 기능 사용이 중단되었습니다. 기존 앱은 계속 작동합니다. 제한된 시간 동안 앱 설정에서 계속 활성화할 수 있습니다(사용 중지됨에서 사용 가능). 그러나 이 방법으로 탐색을 사용하면 시스템이 첫 번째 화면을 표시하기 전에 OnStart 평가를 완료하도록 강제하므로 앱 로드 지연이 발생할 수 있습니다. 대신 StartScreen 속성을 사용하여 표시된 첫 번째 화면을 계산합니다.
  • 사용 중지됨 스위치는 2021년 3월에서 현재 사이의 기간에 탐색OnStart에 추가한 경우 2021년 3월 이전에 만든 앱에는 꺼져 있습니다. Power Apps Studio에서 이러한 앱을 편집할 때 오류가 표시될 수 있습니다. 이 오류를 해결하려면 위에서 언급한 사용 중지됨 스위치를 전환하세요.

StartScreen 속성

노트

StartScreen 속성은 만료된 옵션인 향상된 수식 입력줄이 켜져 있으면 있으면 속성 목록에 표시되지 않습니다. StartScreen 속성을 사용하기 위해 향상된 수식 입력줄을 끄려면 설정>예정된 기능>만료됨으로 이동>향상된 수식 입력줄 스위치를 끄세요.

StartScreen 속성은 어떤 화면이 먼저 표시되는지 결정합니다. 앱이 로드될 때 한 번 평가되고 표시할 화면 개체를 반환합니다. 기본적으로 이 속성은 비어 있으며 Studio 트리 보기의 첫 번째 화면이 먼저 표시됩니다.

StartScreen은 동작 함수를 포함할 수 없는 데이터 흐름 속성입니다. 모든 데이터 흐름 기능을 사용할 수 있습니다. 특히 다음 함수와 신호를 사용하여 먼저 표시할 화면을 결정합니다.

  • Param 함수는 앱을 시작하는 데 사용되는 매개 변수를 읽습니다.
  • User 함수는 현재 사용자에 대한 정보를 읽습니다.
  • LookUp, Filter, CountRows, Max 및 데이터 원본에서 읽는 기타 함수.
  • 커넥터를 통과하는 모든 API 호출. 빠르게 반환되므로 주의하십시오.
  • 연결, 나침반, 등의 신호.

노트

OnStart에서 생성된 것을 포함한 전역 변수 및 컬렉션은 StartScreen에서 사용할 수 없습니다. 이 작업을 수행하기 위한 선언적 대안이 진행 중입니다. 이 제한 사항에 대한 피드백을 보려면 Power Apps 커뮤니티 포럼으로 이동하십시오.

StartScreen이 오류를 반환하면 Studio 트리 보기의 첫 번째 화면이 StartScreen이 설정되지 않은 것처럼 표시됩니다. 오류를 포착하고 적절한 오류 화면으로 리디렉션하려면 IfError 함수를 사용합니다.

Studio에서 StartScreen을 변경한 후 트리 보기 창의 개체에 마우스를 가져가 줄임표(...)를 선택한 다음 StartScreen으로 탐색을 선택하여 테스트합니다. 앱이 로드된 것처럼 화면이 변경됩니다.

StartScreen으로 이동

Screen9

앱이 시작될 때마다 Screen9이 먼저 표시되어야 한다는 것을 나타냅니다.

If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )

Param "admin-mode"가 사용자에 의해 설정되었는지 확인하고 이를 사용하여 HomeScreen 또는 AdminScreen이 먼저 표시되어야 하는지 결정합니다.

If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )

회의 참석자가 직원인지 확인하고 시작 시 적절한 화면으로 안내합니다.

IfError( If( CustomConnector.APICall() = "Forest", 
             ForestScreen, 
             OceanScreen 
         ), 
         ErrorScreen 
)

API 호출을 기반으로 앱을 ForestScreen 또는 OceanScreen 중 하나로 이동합니다. 어떤 이유로든 API가 실패하면 ErrorScreen이 대신 사용됩니다.

StudioVersion 속성

StudioVersion 속성을 사용하여 앱을 게시하는 데 사용된 Power Apps Studio 버전을 표시하거나 기록합니다. 이는 디버깅할 때 유용할 수 있으며 앱이 최신 버전의 Power Apps Studio로 다시 게시되었는지 확인하는 데 유용할 수 있습니다.

StudioVersion은 텍스트로 반환됩니다. 텍스트 형식은 시간이 지남에 따라 변경될 수 있으므로 전체적으로 취급해야 합니다. 개별 부분을 추출하지 마십시오.