캔버스 앱에서 문제 격리
캔버스 앱을 사용하면 다양한 시각적 개체와 다양한 데이터 연결을 사용하여 앱을 디자인할 수 있습니다. IntelliSense 및 앱 검사기를 일반적인 문제에 대한 보호로 사용합니다. 모니터 및 변수 패널은 디버깅에 도움이 될 수 있습니다.
캔버스 앱에서 문제를 격리하는 몇 가지 다른 기술은 다음과 같습니다.
디버그 레이블을 사용하여 수식 검사
수식은 복잡할 수 있습니다. 문제가 발생하면 실패한 부분을 파악하기가 어려울 수 있습니다. 디버그 레이블은 수식의 여러 부분의 결과를 확인하는 데 유용한 기술입니다.
디버그 레이블은 Text 속성이 관심 있는 수식으로 설정된 Label입니다. Power Apps에서 이러한 수식을 처리하는 방법을 정확하게 확인할 수 있습니다. 버그 범위를 지정하지 않도록 하려면 갤러리 및 양식과 같은 다른 컨트롤 외부에 디버그 레이블을 삽입합니다.
콤보 상자 컨트롤이 예상보다 적게 표시되고 드롭다운 옵션이 비어 있다고 상상해 보세요.
콤보 상자가 올바르게 구성되었는지 확인합니다. 예를 들어 Items 속성은 아래의 복잡한 수식으로 설정됩니다.
AddColumns(
GroupBy(
Filter( Products, Rating > 4 ),
"ProductType",
"Details"
),
"Total quantity",
Sum( Details, Quantity )
)
가장 안쪽의 식 Filter( Products, Rating > 4 )
으로 시작합니다. 디버그 레이블을 삽입하고 Text 속성을 설정하여 해당 식의 결과를 테스트합니다. 확인할 수 있는 몇 가지 유용한 정보:
- 결과 수가 예상대로 표시되는지 확인합니다.
CountRows( Filter( Products, Rating > 4 ) )
- 첫 번째 결과를 검사하고 필터가 예상대로 작동하는지 확인합니다.
"Rating of first result is " & First( Filter( Products, Rating > 4 ) ).Rating
- 이름을 결합하여 결과를 확인합니다.
Concat( Filter( Products, Rating > 4 ), ProductName & ", ")
팁
데이터 세트로 작업할 때 디버그 테이블은 레코드를 미리 보는 데 유용합니다. 개념은 디버그 레이블과 유사합니다. Items 속성이 관심 있는 데이터 세트로 설정된 데이터 테이블을 삽입합니다.
데이터 세트의 성능을 향상시키려면 FirstN 및 LastN 함수 를 사용할 수 있습니다.
식이 올바르게 평가되었는지 확인한 후에는 다음 외부 식 GroupBy( Filter( Products, Rating > 4 ), "ProductType", "Details" )
으로 이동할 수 있습니다. 체계적으로 진행하면 복잡한 식의 어떤 부분이 작동하지 않는지 확인할 수 있습니다.
빈 드롭다운 옵션을 사용하는 경우 DisplayFields 속성으로 시작합니다. 로 설정되어 있다고 상상해 보십시오 [ProductType]
. 디버그 레이블을 사용하여 이 필드가 Power Apps에서 인식되고 텍스트가 포함되어 있는지 확인합니다. 모든 드롭다운 옵션은 비어 있으므로 레코드를 검사하기에 충분합니다. 첫 번째 레코드를 선택하고 해당 필드가 ProductType
무엇인지 살펴보겠습니다. 디버그 레이블을 다음으로 설정합니다.
First(
AddColumns(
GroupBy(
Filter( Products, Rating > 4 ),
"ProductType",
"Details"
),
"Total quantity",
Sum( Details, Quantity )
)
).ProductType
결과가 비어 있으면 다음이 될 수 있습니다.
- 해당 레코드의
ProductType
필드는 실제로 비어 있습니다. 데이터 세트가 앱 외부에서 가져온 경우 Power Apps 외부에서 검사. - 하나 이상의 식이 작동하지 않습니다. 위에서 설명한 대로 세분화하여 좁히십시오. Power Apps 버그 또는 수식을 작성하는 실수일 수 있습니다.
- 데이터가 Power Apps에 도달하지 않습니다. 네트워킹 문제, 데이터 원본 문제 또는 Power Apps 버그일 수 있습니다.
결과에 텍스트가 있는 경우 컨트롤이 있는 Power Apps 버그일 수 있습니다. 지원 요청을 통해 버그를 보고하고 다른 컨트롤을 해결 방법으로 사용할 수 있습니다.
다른 컨트롤 사용해 보기
문제가 특정 컨트롤에 있는지 확인하려면 입력 또는 출력의 데이터 형식 이 동일한 다른 컨트롤을 사용해 보세요.
부울
선택 및 표
Date 및 DateTime
이미지 및 미디어
숫자
텍스트
모든 형식
- 레이블, 값을 텍스트로 변환한 후
다른 컨트롤에서 동일한 문제가 발생하면 사용된 수식 또는 데이터 원본에 문제가 있습니다. 위의 디버깅 단계를 진행하여 문제를 추가로 격리합니다.
특정 유형의 컨트롤에서만 문제가 발생하는 경우 컨트롤 버그일 수 있습니다. Microsoft에 버그를 보고할 수 있습니다.
다른 앱 구조 사용해 보기
수식은 다른 컨트롤 내의 컨트롤에 대해 다르게 동작할 수 있습니다. 예를 들어 갤러리 내의 컨트롤은 ThisItem 을 사용할 수 있지만 갤러리 외부의 컨트롤은 사용할 수 없습니다. 갤러리 또는 구성 요소 외부의 컨트롤은 내부의 컨트롤을 참조할 수 없습니다.
식별자의 이러한 다양한 표시 유형을 scope 호출합니다. 다른 컨트롤을 포함하는 컨트롤은 새 scope 도입합니다.
포함된 컨트롤 내에서 수식이 작동하지 않는 경우 범위 지정과 관련이 있을 수 있습니다. 컨테이너 외부에서 동일한 수식을 사용해 보세요.
예를 들어 갤러리 내의 레이블 컨트롤은 각 레코드의 이름을 표시해야 하지만 텍스트는 표시되지 않습니다.
Label.Text 는 로 설정됩니다 ThisItem.Name
.
Gallery.Items 는 로 설정됩니다 Products
.
범위 지정 문제인지 검사 하려면 앱의 최상위 수준에서 갤러리 외부에 디버그 레이블을 삽입합니다. 데이터 세트First(Products).Name
의 첫 번째 레코드 이름을 표시하도록 Text 속성을 설정합니다.
디버그 레이블은 갤러리의 첫 번째 행과 동일한 결과를 가져야 합니다. 그렇지 않은 경우 지원 요청을 통해 보고할 수 있는 Power Apps 관련 버그일 수 있습니다. 반면에 둘 다 비어 있으면 데이터 원본에 문제가 있을 수 있습니다.
범위 지정 문제에 대한 몇 가지 가능한 해결 방법:
- 컨트롤을 컨테이너 외부로 이동
- 전역 또는 컨텍스트 변수의 데이터를 참조하세요.
- 패치를 사용하여 양식 편집 컨트롤 사용 방지
이전 버전으로 복원
앱을 크게 변경하지 않았고 다시 게시한 후 갑자기 작동이 중지된 경우 이전 버전으로 복원해 보세요. 다시 작동하는 경우 변경 내용을 검토하여 앱이 손상되었을 수 있는 사항을 확인합니다.
경우에 따라 새 버전의 Power Apps에서 버그가 도입될 수 있습니다. 반대로 새 버전은 버그 수정을 가져올 수 있습니다. Microsoft 지원 이전 작성 버전으로 되돌리기 또는 최신 버전으로 업그레이드할지 여부를 권장할 수 있습니다. 직접 제작 버전을 변경하는 경우 권장되지 않는 버전에 대한 지원이 제한적입니다.
최소 재현 앱 만들기
최소 재현 앱을 만드는 프로세스는 복잡한 앱에서 명확하지 않은 앱 구성 오류를 발견할 수 있습니다. 문제가 해결되지 않더라도 원인을 좁혀 다른 사람에게 문제를 더 쉽게 설명할 수 있었을 것입니다.