แชร์ผ่าน


ออบเจ็กต์ App ใน Power Apps

ใช้กับ: แอปพื้นที่ทำงาน แอปแบบจำลอง

มีข้อมูลเกี่ยวกับแอปที่กำลังทำงานอยู่ในขณะนี้ และควบคุมลักษณะการทำงานของแอป

คำอธิบาย

เช่นเดียวกับตัวควบคุม ออบเจ็กต์ แอป มีคุณสมบัติที่ระบุว่าหน้าจอใดที่กำลังแสดงอยู่ และแจ้งให้ผู้ใช้บันทึกการเปลี่ยนแปลงเพื่อไม่ให้สูญหาย แอปทุกตัวมีออบเจ็กต์ แอป

คุณสามารถเขียนสูตรสำหรับคุณสมบัติบางอย่างของออบเจ็กต์ แอป ที่ด้านบนของบานหน้าต่าง มุมมองทรี ให้เลือกออบเจ็กต์ แอป ที่คุณจะเลือกตัวควบคุมหรือหน้าจออื่นๆ ดูและแก้ไขคุณสมบัติของออบเจ็กต์อย่างใดอย่างหนึ่งโดยการเลือกในรายการดรอปดาวน์ทางด้านซ้ายของแถบสูตร

ออปเจ็กต์แอปในบานหน้าต่างมุมมองทรี

คุณสมบัติ ActiveScreen

คุณสมบัติ ActiveScreen ระบุหน้าจอที่กำลังแสดง

คุณสมบัตินี้ส่งคืนออบเจ็กต์หน้าจอ ใช้เพื่ออ้างอิงคุณสมบัติของหน้าจอที่แสดงอยู่ในปัจจุบัน เช่น ชื่อพร้อมสูตร App.ActiveScreen.Name คุณยังสามารถเปรียบเทียบคุณสมบัตินี้กับออบเจ็กต์หน้าจออื่นได้ เช่น ด้วยสูตรการเปรียบเทียบ App.ActiveScreen = Screen2 เพื่อทดสอบว่า Screen2 คือหน้าจอที่แสดงอยู่ในปัจจุบัน

ใช้ฟังก์ชัน Back หรือ Navigate เพื่อเปลี่ยนหน้าจอที่กำลังแสดง

คุณสมบัติ BackEnabled

คุณสมบัติ BackEnabled เปลี่ยนวิธีที่แอปตอบสนองต่อท่าทางย้อนกลับของอุปกรณ์ (ปัดหรือใช้ปุ่มย้อนกลับของฮาร์ดแวร์บนอุปกรณ์ Android ปัดจากซ้ายบนอุปกรณ์ iOS) เมื่อทำงานใน Power Apps บนมือถือ เมื่อเปิดใช้งาน ท่าทางย้อนกลับของอุปกรณ์จะนำทางกลับไปยังหน้าจอที่แสดงล่าสุด ซึ่งคล้ายกับสูตร ย้อนกลับ เมื่อปิดใช้งาน ท่าทางย้อนกลับของอุปกรณ์จะนำผู้ใช้กลับไปยังรายการแอป

คุณสมบัติ ConfirmExit

ไม่มีใครต้องการสูญเสียการเปลี่ยนแปลงที่ไม่ได้บันทึก ใช้คุณสมบัติ ConfirmExit และ ConfirmExitMessage เพื่อเตือนผู้ใช้ก่อนที่จะปิดแอปของคุณ

หมายเหตุ

  • ConfirmExit ไม่ทำงานในแอปที่ฝังอยู่ ตัวอย่างเช่น Power BI และ SharePoint
  • ในปัจจุบัน คุณสมบัติเหล่านี้สามารถอ้างอิงการควบคุมบนหน้าจอแรกเท่านั้น หากคุณลักษณะการแสดงตัวอย่าง โหลดล่าช้า เปิดใช้งาน (ซึ่งเป็นค่าเริ่มต้นสำหรับแอปใหม่) หากมีการอ้างอิง Power Apps Studio ไม่แสดงข้อผิดพลาด แต่แอปที่เผยแพร่แล้วที่เป็นผลลัพธ์ไม่เปิดขึ้นใน Power Apps Mobile หรือเบราว์เซอร์ เราได้ทำงานอย่างหนักเพื่อปรับปรุงข้อจำกัดนี้ ในระหว่างนี้ คุณสามารถปิด การโหลดล่าช้า ใน การตั้งค่า>คุณลักษณะที่กำลังจะเกิดขึ้น (ภายใต้ ตัวอย่าง)

ConfirmExit

ConfirmExit เป็นคุณสมบัติบูลีนที่เมื่อ จริง เปิดกล่องโต้ตอบการยืนยันก่อนปิดแอป โดยค่าเริ่มต้น คุณสมบัตินี้คือ เท็จ และไม่มีกล่องโต้ตอบปรากฏขึ้น

ในสถานการณ์ที่ผู้ใช้อาจมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึกในแอป ให้ใช้คุณสมบัตินี้เพื่อแสดงกล่องโต้ตอบการยืนยันก่อนออกจากแอป ใช้สูตรที่สามารถตรวจสอบตัวแปรและคุณสมบัติการควบคุม (ตัวอย่างเช่น คุณสมบัติ Unsaved ของตัวควบคุม แก้ไขฟอร์ม)

กล่องโต้ตอบการยืนยันจะปรากฏขึ้นในทุกสถานการณ์ที่ข้อมูลอาจสูญหายได้ ดังตัวอย่างเหล่านี้:

  • เรียกใช้ฟังก์ชัน Exit
  • หากแอปทำงานในเบราว์เซอร์:
    • ปิดเบราว์เซอร์หรือแท็บเบราว์เซอร์ที่แอปทำงานอยู่
    • การเลือกปุ่มย้อนกลับของเบราว์เซอร์
    • การเรียกใช้ฟังก์ชัน Launch ด้วย LaunchTarget ของ Self
  • หากแอปกำลังทำงานอยู่ใน Power Apps Mobile (iOS หรือ Android):
    • การปัดเพื่อสลับไปยังแอปอื่นใน Power Apps Mobile
    • การเลือกปุ่มย้อนกลับบนอุปกรณ์ Android
    • การเรียกใช้ฟังก์ชัน Launch เพื่อเปิดแอปพื้นที่ทำงานอื่น

รูปลักษณ์ที่แน่นอนของกล่องโต้ตอบการยืนยันอาจแตกต่างกันไปตามอุปกรณ์และรุ่นของ Power Apps

กล่องโต้ตอบการยืนยันไม่ปรากฎใน Power Apps Studio

ConfirmExitMessage

โดยค่าเริ่มต้น กล่องโต้ตอบการยืนยันจะแสดงข้อความทั่วไป เช่น "คุณอาจมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึก" ในภาษาของผู้ใช้

ใช้ ConfirmExitMessage เพื่อให้ข้อความที่กำหนดเองในกล่องโต้ตอบการยืนยัน ถ้าคุณสมบัตินี้เป็น ว่างเปล่า ค่าเริ่มต้นจะถูกใช้ ข้อความที่กำหนดเองจะถูกตัดทอนตามความจำเป็นเพื่อให้พอดีกับในกล่องโต้ตอบการยืนยัน ดังนั้นควรเก็บข้อความไว้ไม่เกินสองบรรทัด

ในเบราว์เซอร์ กล่องโต้ตอบการยืนยันอาจปรากฏขึ้นพร้อมกับข้อความทั่วไปจากเบราว์เซอร์

หมายเหตุ

ออบเจ็กต์แอปมีคุณสมบัติเพิ่มเติมอีกสองรายการคือ OnMessage และ BackEnabled ที่กำลังทดลองอยู่ คุณสมบัติเหล่านี้จะถูกลบออกจากออบเจ็กต์แอปในที่สุด เราขอแนะนำไม่ให้คุณใช้คุณสมบัติเหล่านี้ในสภาพแวดล้อมการทำงานจริงของคุณ

ตัวอย่างเช่น

  1. สร้างแอปที่มีการควบคุมฟอร์มสองแบบ AccountForm และ ContactForm

  2. ตั้งค่าคุณสมบัติ ConfirmExit ของออปเจกต์ แอป สำหรับนิพจน์นี้:

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    กล่องโต้ตอบนี้จะปรากฏขึ้น หากผู้ใช้เปลี่ยนข้อมูลในฟอร์มใดฟอร์มหนึ่ง แล้วพยายามปิดแอปโดยไม่บันทึกการเปลี่ยนแปลงเหล่านั้น

    กล่องโต้ตอบการยืนยันทั่วไป

  3. ตั้งค่าคุณสมบัติ ConfirmExitMessage ของออปเจกต์ แอป สำหรับสูตรนี้:

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

    กล่องโต้ตอบนี้จะปรากฏขึ้น หากผู้ใช้เปลี่ยนข้อมูลในฟอร์มลูกค้าองค์กร แล้วพยายามปิดแอปโดยไม่บันทึกการเปลี่ยนแปลงเหล่านั้น

    กล่องโต้ตอบการยืนยันแบบฟอร์มเฉพาะ

ตั้งค่าคีย์การใช้เครื่องมือสำหรับ Application Insights

หากต้องการส่งออกบันทึกแอปพลิเคชันที่ระบบสร้างไปยัง Application Insights คุณต้องตั้งค่า คีย์การรายงานข้อมูลระบบ สำหรับแอปพื้นที่ทำงานของคุณ

  1. เปิดแอปของคุณสำหรับ การแก้ไข ใน Power Apps Studio
  2. เลือกออบเจ็กต์ App ในมุมมองทรีบนการนำทางด้านซ้าย
  3. ป้อน คีย์การรายงานข้อมูลระบบ ในบานหน้าต่างคุณสมบัติ

หากข้อมูลไม่ถูกส่งไปยัง App Insights โปรดติดต่อผู้ดูแลระบบ Power Platform ของคุณ และตรวจสอบว่า App Insights ถูกปิดใช้งานในระดับผู้เช่าหรือไม่

คุณสมบัติของสูตร

ใช้สูตรที่ระบุชื่อในคุณสมบัติ Formulas เพื่อกำหนดสูตรที่สามารถนำมาใช้ซ้ำได้ทั่วทั้งแอปของคุณ

ใน Power Apps สูตรจะกำหนดค่าของคุณสมบัติตัวควบคุม ตัวอย่างเช่น หากต้องการตั้งค่าสีพื้นหลังให้สอดคล้องกันในแอป คุณอาจตั้งค่าคุณสมบัติ Fill สำหรับแต่ละรายการของสูตรทั่วไป:

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

แม้ว่าวิธีนี้จะดีกว่า แต่ก็ขึ้นอยู่กับ OnStart ที่ทำงานก่อนค่าสำหรับ BGColor จะถูกสร้าง BGColor อาจมีการจัดการในบางมุมของแอปที่ผู้สร้างไม่ทราบ การเปลี่ยนแปลงที่ทำโดยผู้อื่น และอาจติดตามได้ยาก

สูตรที่ระบุชื่อเป็นทางเลือก เช่นเดียวกับที่เรามักเขียน control-property = นิพจน์ เราสามารถเขียน ชื่อ = นิพจน์ แทนแล้วนำ ชื่อ กลับมาใช้ใหม่ตลอดทั้งแอปของเราเพื่อแทนที่ นิพจน์ คำจำกัดความของสูตรเหล่านี้ทำในคุณสมบัติ Formulas:

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

ข้อดีของการใช้สูตรที่ระบุชื่อได้แก่:

  • ค่าของสูตรจะใช้ได้เสมอ ไม่มีการข้อต่อกันของเวลา ไม่มี OnStart ที่ต้องทำงานก่อนจึงจะกำหนดค่าได้ ไม่มีเวลาที่ค่าของสูตรไม่ถูกต้อง สูตรที่ระบุชื่อสามารถอ้างอิงถึงกันในลำดับใดก็ได้ ตราบเท่าที่ไม่ได้สร้างการอ้างอิงแบบวงกลม สูตรดังกล่าวสามารถคำนวณแบบขนานได้
  • ค่าของสูตรจะเป็นปัจจุบันเสมอ สูตรสามารถทำการคำนวณที่ขึ้นอยู่กับคุณสมบัติของตัวควบคุมหรือเรกคอร์ดฐานข้อมูล และเมื่อมีการเปลี่ยนแปลง ค่าของสูตรจะปรับปรุงโดยอัตโนมัติ คุณไม่จำเป็นต้องปรับปรุงค่าด้วยตนเองเช่นเดียวกับที่ทำกับตัวแปร และสูตรจะคำนวณใหม่เมื่อจำเป็นเท่านั้น
  • คำจำกัดความของสูตรนี้ไม่สามารถเปลี่ยนแปลงได้ คำจำกัดความใน สูตร เป็นแหล่งที่มาของความจริงเพียงแหล่งเดียวและไม่สามารถเปลี่ยนแปลงค่าที่อื่นในแอปได้ ด้วยตัวแปร เป็นไปได้ว่าโค้ดบางตัวจะเปลี่ยนแปลงค่าโดยไม่คาดคิด แต่สถานการณ์ที่แก้ไขได้ยากนี้ไม่สามารถเกิดขึ้นได้กับสูตรที่มีชื่อ
  • การคำนวณของสูตรสามารถเลื่อนออกไปได้ เนื่องจากค่าไม่เปลี่ยนรูป จึงสามารถคำนวณได้เสมอเมื่อจำเป็น ซึ่งหมายความว่าไม่จำเป็นต้องคำนวณจนกว่าจะจำเป็น ค่าสูตรที่ไม่ได้ใช้จนกระทั่ง screen2 ของแอปแสดงขึ้นไม่จำเป็นต้องคำนวณจนกว่า screen2 จะปรากฏขึ้น การเลื่อนเวลาการทำงานนี้สามารถปรับปรุงเวลาในการโหลดแอปได้ สูตรที่ระบุชื่อเป็นการประกาศและให้โอกาสสำหรับระบบในการปรับวิธีและเวลาคำนวณให้เหมาะสม
  • สูตรที่ระบุชื่อเป็นแนวคิดของ Excel Power Fx ใช้แนวคิดของ Excel เมื่อเป็นไปได้ เนื่องจากมีคนจำนวนมากที่รู้จัก Excel เป็นอย่างดี สูตรที่ระบุชื่อจะเทียบเท่ากับเซลล์ที่มีชื่อและสูตรที่ระบุชื่อใน Excel ซึ่งจัดการด้วยโปรแกรมจัดการชื่อ โดยจะคำนวณใหม่โดยอัตโนมัติเหมือนเซลล์ของสเปรดชีตและคุณสมบัติของตัวควบคุมก็เช่นกัน

มีการกำหนดสูตรที่ระบุชื่อไว้ทีละรายการในคุณสมบัติ Formulas แต่ละรายการลงท้ายด้วยเครื่องหมายอัฒภาค ชนิดของสูตรจะอนุมานจากชนิดขององค์ประกอบภายในสูตรและวิธีที่ถูกใช้ร่วมกัน ตัวอย่างเช่น สูตรที่ระบุชื่อเหล่านี้ดึงข้อมูลที่เป็นประโยชน์เกี่ยวกับผู้ใช้ปัจจุบันจาก 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; ในแอปเดียวกันไม่ได้รับอนุญาต

ฟังก์ชันที่ผู้ใช้กำหนดเอง

สำคัญ

Power Fx มีรายการฟังก์ชันในตัวมากมาย เช่น If, Text และ Set ฟังก์ชันที่ผู้ใช้กำหนดช่วยให้คุณสามารถเขียนฟังก์ชันของคุณเองที่ใช้พารามิเตอร์และส่งกลับค่า เช่นเดียวกับฟังก์ชันในตัว คุณสามารถคิดว่าฟังก์ชันที่ผู้ใช้กำหนดเป็นส่วนขยายของสูตรที่มีชื่อ ซึ่งเพิ่มพารามิเตอร์และสนับสนุนสูตรลักษณะการทำงาน

ตัวอย่างเช่น คุณอาจกำหนดสูตรที่มีชื่อซึ่งส่งคืนหนังสือนิยายจากห้องสมุด:

Library = [ { Title: "The Hobbit", Author: "J. R. R. Tolkien", Genre: "Fiction" },
            { Title: "Oxford English Dictionary", Author: "Oxford University", Genre: "Reference" } ];

LibraryFiction = Filter( Library, Genre = "Fiction" );

หากไม่มีพารามิเตอร์ เราจะต้องกำหนดสูตรที่มีชื่อแยกกันสำหรับแต่ละประเภท แต่เรามากำหนดพารามิเตอร์สูตรชื่อของเราแทน:

LibraryType := Type( [ { Title: Text, Author: Text, Genre: Text } ] );

LibraryGenre( SelectedGenre: Text ): LibraryType = Filter( Library, Genre = SelectedGenre );

ตอนนี้เราสามารถเรียก LibraryGenre( "Fiction" ), LibraryGenre( "Reference" ) หรือกรองประเภทอื่นๆ ด้วยฟังก์ชันที่ผู้ใช้กำหนดเพียงฟังก์ชันเดียว

ไวยากรณ์คือ:

FunctionName( [ ParameterName1: ParameterType1 [ , ParameterName2: ParameterType2 ... ] ] ) : ReturnType = Formula;

  • FunctionName – จำเป็น ชื่อของฟังก์ชันที่ผู้ใช้กำหนด
  • ParameterName(s) - ไม่บังคับ ชื่อของพารามิเตอร์ฟังก์ชัน
  • ParameterType(s) – ไม่บังคับ ชื่อของชนิด ไม่ว่าจะเป็น ชื่อชนิดข้อมูล ในตัว ชื่อแหล่งข้อมูล หรือชนิดที่กำหนดด้วยฟังก์ชัน Type
  • ReturnType – จำเป็น ชนิดของค่าที่ส่งกลับจากฟังก์ชัน
  • สูตร – จำเป็น สูตรที่คำนวณค่าของฟังก์ชันตามพารามิเตอร์

ต้องระบุชนิดข้อมูลสำหรับพารามิเตอร์แต่ละตัวและผลลัพธ์จากฟังก์ชันที่ผู้ใช้กำหนด ในตัวอย่างนี้ SelectedGenre: Text จะกำหนดพารามิเตอร์แรกให้กับฟังก์ชันของเราเป็นชนิด ข้อความ และ SelectedGenre จะเป็นชื่อของพารามิเตอร์ที่ใช้ภายในเนื้อความสำหรับการดำเนินการ ตัวกรอง ดู ชนิดข้อมูล สำหรับชื่อชนิดที่รองรับ The ฟังก์ชัน Type ใช้เพื่อสร้างชนิดการรวมสำหรับไลบรารีของเรา เพื่อให้เราสามารถส่งคืนตารางหนังสือจากฟังก์ชันของเราได้

เรากำหนดให้ LibraryType เป็นตารางชนิดเรกคอร์ดพหูพจน์ หากเราต้องการส่งหนังสือเล่มเดียวไปยังฟังก์ชัน เราสามารถแยกชนิดของเรกคอร์ดสำหรับตารางนี้ด้วยฟังก์ชัน RecordOf:

BookType := Type( RecordOf( LibraryType ) );

IsGenre( Book: BookType, SelectedGenre: Text ): Boolean = (Book.Genre = SelectedGenre);

การจับคู่เรกคอร์สำหรับพารามิเตอร์ฟังก์ชันมีความเข้มงวดมากกว่าในส่วนอื่นๆ ของ Power Fx ฟิลด์ของค่าเรกคอร์ดต้องเป็นเซตย่อยที่เหมาะสมของข้อกำหนดชนิด และไม่สามารถรวมฟิลด์เพิ่มเติมได้ ตัวอย่างเช่น IsGenre( { Title: "My Book", Published: 2001 }, "Fiction" ) จะส่งผลให้เกิดข้อผิดพลาด

หมายเหตุ ฟังก์ชันที่ผู้ใช้กำหนดยังไม่รองรับการเรียกซ้ำ

ลักษณะการทำงานที่ผู้ใช้กำหนดฟังก์ชัน

สูตรที่มีชื่อและฟังก์ชันที่ผู้ใช้กำหนดส่วนใหญ่ไม่รองรับฟังก์ชันลักษณะการทำงานที่มีผลกระทบเพิ่มเติม เช่น ตั้งค่า หรือ แจ้งเตือน โดยทั่วไป เป็นการดีที่สุดที่จะหลีกเลี่ยงการอัปเดตสถานะหากทำได้ แต่ให้อาศัยรูปแบบการเขียนโปรแกรมที่ใช้งานได้และอนุญาตให้ Power Fx คำนวณสูตรใหม่ได้ตามต้องการโดยอัตโนมัติ แต่มีบางกรณีที่หลีกเลี่ยงไม่ได้ หากต้องการรวมตรรกะลักษณะการทำงานไว้ในฟังก์ชันที่ผู้ใช้กำหนด ให้ใส่เนื้อหาของฟังก์ชันในวงเล็บปีกกา:

Spend( Amount: Number ) : Void = {
    If( Amount > Savings, 
        Error( $"{Amount} is more than available savings" ),
        Set( Savings, Savings - Amount );
        Set( Spent, Spent + Amount) 
    );
}

ตอนนี้เราสามารถเรียก Spend( 12 ) เพื่อตรวจสอบว่าเรามี 12 ในเงินออมของเราหรือไม่และถ้าเป็นเช่นนั้นให้หักด้วย 12 และเพิ่ม 12 ในตัวแปรการใช้จ่าย ชนิดการส่งคืนของฟังก์ชันนี้คือ Void เนื่องจากไม่ส่งคืนค่า

ไวยากรณ์ของฟังก์ชันที่ผู้ใช้กำหนดลักษณะการทำงานคือ:

FunctionName( [ ParameterName1: ParameterType1 [ , ParameterName2: ParameterType2 ... ] ] ) : ReturnType = { Formula1 [ ; Formula2 ... ] };

  • FunctionName – จำเป็น ชื่อของฟังก์ชันที่ผู้ใช้กำหนด
  • ParameterName(s) - ไม่บังคับ ชื่อของพารามิเตอร์ฟังก์ชัน
  • ParameterType(s) – ไม่บังคับ ชื่อของชนิด ไม่ว่าจะเป็น ชื่อชนิดข้อมูล ในตัว ชื่อแหล่งข้อมูล หรือชนิดที่กำหนดด้วยฟังก์ชัน Type
  • ReturnType – จำเป็น ชนิดของค่าที่ส่งกลับจากฟังก์ชัน ใช้ Void หากฟังก์ชันไม่ส่งคืนค่า
  • Formula(s) - ่จำเป็นต้องมี สูตรที่คำนวณค่าของฟังก์ชันตามพารามิเตอร์

การดำเนินการจะไม่สิ้นสุดเมื่อพบข้อผิดพลาด เช่นเดียวกับสูตร Power Fx ทั้งหมด หลังจากเรียกใช้ฟังก์ชัน Errorฟังก์ชัน If จะป้องกันไม่ให้มีการเปลี่ยนแปลง Savings และ Spent เกิดขึ้น นอกจากนี้ยังสามารถใช้ฟังก์ชัน IfError เพื่อป้องกันการดำเนินการเพิ่มเติมหลังจากเกิดข้อผิดพลาด แม้ว่าจะส่งคืน Void แต่สูตรยังสามารถส่งคืนข้อผิดพลาดได้หากมีปัญหา

ชนิดที่ผู้ใช้กำหนด

สำคัญ

สูตรที่มีชื่อสามารถใช้กับฟังก์ชัน Type เพื่อสร้างชนิดที่ผู้ใช้กำหนดได้ ใช้ := แทน = ชนิดที่ผู้ใช้กำหนด เช่น Book := Type( { Title: Text, Author: Text } ) ดูฟังก์ชัน Type สำหรับข้อมูลเพิ่มเติมและตัวอย่าง

คุณสมบัติ OnError

ใช้ OnError เพื่อดำเนินการเมื่อเกิดข้อผิดพลาดที่ใดก็ตามในแอป เป็นการให้โอกาสในการสกัดกั้นแบนเนอร์ข้อผิดพลาดทั้งหมดก่อนที่จะแสดงต่อผู้ใช้ นอกจากนี้ยังสามารถใช้เพื่อบันทึกข้อผิดพลาดด้วย ฟังก์ชัน Trace หรือเขียนไปยังฐานข้อมูลหรือบริการเว็บ

ในแอปพื้นที่ทำงาน ผลลัพธ์ของการประเมินทุกสูตรจะถูกตรวจสอบหาข้อผิดพลาด หากพบความผิดพลาด OnError จะถูกประเมินด้วยตัวแปรขอบเขต FirstError และ AllErrors ที่คล้ายกันซึ่งจะถูกใช้ถ้าสูตรทั้งหมดถูกตัดในฟังก์ชัน IfError

ถ้า OnError ว่างเปล่า แบนเนอร์ข้อผิดพลาดเริ่มต้นจะแสดงด้วย FirstError.Message ของข้อผิดพลาด การกำหนดสูตร OnError จะแทนที่ลักษณะการทำงานนี้ ซึ่งทำให้ผู้สร้างสามารถจัดการการรายงานข้อผิดพลาดตามที่เห็นสมควร สามารถขอลักษณะการทำงานเริ่มต้นได้ใน OnError โดยการส่งข้อผิดพลาดด้วย ฟังก์ชัน Error ใช้แนวทางต่อไปนี้หากมีการกรองหรือจัดการข้อผิดพลาดบางอย่างในลักษณะที่ต่างออกไป ในขณะที่ข้อผิดพลาดอื่นๆ จะถูกส่ง

OnError ไม่สามารถแทนที่ข้อผิดพลาดในการคำนวณแบบที่ IfError ทำได้ หากมีการเรียกใช้ OnError ข้อผิดพลาดก็จะเกิดขึ้นแล้วและได้รับการประมวลผลแล้วผ่านการคำนวณสูตร เช่น IfError แล้ว OnError จะควบคุมเฉพาะการรายงานข้อผิดพลาดเท่านั้น

สูตร OnError ได้รับการประเมินพร้อมกัน และเป็นไปได้ว่าการประเมินอาจทับซ้อนกับการประมวลผลข้อผิดพลาดอื่นๆ ตัวอย่างเช่น หากคุณตั้งค่าตัวแปรทั่วไปที่ด้านบนของ OnError และอ่านภายหลังในสูตรเดียวกัน ค่าอาจมีการเปลี่ยนแปลง ใช้ ฟังก์ชัน With เพื่อสร้างค่าที่ระบุชื่อซึ่งระบุตำแหน่งไปยังสูตร

แม้ว่าแต่ละข้อผิดพลาดจะได้รับการประมวลผลทีละรายการโดย OnError แต่แบนเนอร์ข้อผิดพลาดเริ่มต้นอาจไม่ปรากฏสำหรับข้อผิดพลาดแต่ละรายการ เพื่อหลีกเลี่ยงไม่ให้มีแบนเนอร์ข้อผิดพลาดมากเกินไปแสดงพร้อมกัน แบนเนอร์ข้อผิดพลาดเดียวกันจะไม่ปรากฏอีกหากเพิ่งแสดงไปเมื่อไม่นานนี้

ตัวอย่างเช่น

พิจารณาตัวควบคุม ป้ายชื่อ และ แถบเลื่อน ที่ถูกผูกด้วยกันผ่านสูตร:

Label1.Text = 1/Slider1.Value

ตัวควบคุม ป้ายชื่อ และ แถบเลื่อน ที่ผูกผ่านสูตร Label1.Text = 1/Slider1.Value

ค่าเริ่มต้นแถบเลื่อนเป็น 50 หากแถบเลื่อนถูกย้ายไปที่ 0 Label1 จะไม่แสดงค่าและแสดงแบนเนอร์ข้อผิดพลาด:

ตัวควบคุม แถบเลื่อน ย้ายไปที่ 0 ส่งผลให้มีข้อผิดพลาดการหารด้วยศูนย์ และแบนเนอร์ข้อผิดพลาด

ลองดูสิ่งที่เกิดขึ้นโดยละเอียด:

  1. ผู้ใช้เลื่อนแถบเลื่อนไปทางซ้ายและคุณสมบัติ Slide1.Value เปลี่ยนเป็น 0
  2. Label1.Text ได้รับการประเมินใหม่โดยอัตโนมัติ เกิดการหารด้วยศูนย์ทำให้เกิดข้อผิดพลาด
  3. ไม่มี IfError ในสูตรนี้ ข้อผิดพลาดการหารด้วยศูนย์จะถูกส่งกลับโดยการประเมินสูตร
  4. Label1.Text ไม่สามารถแสดงข้อผิดพลาดนี้ได้ จึงแสดงสถานะ ว่างเปล่า
  5. OnError ถูกเรียก เนื่องจากไม่มีตัวจัดการ แบนเนอร์ข้อผิดพลาดมาตรฐานจึงแสดงพร้อมข้อมูลข้อผิดพลาด

หากจำเป็น เราก็สามารถปรับเปลี่ยนสูตรเป็น Label1.Text = IfError( 1/Slider1.Value, 0 ) การใช้ IfError จะส่งผลให้ไม่มีข้อผิดพลาดหรือแบนเนอร์ข้อผิดพลาด เราไม่สามารถเปลี่ยนค่าของข้อผิดพลาดจาก OnError เนื่องจากข้อผิดพลาดได้เกิดขึ้นแล้ว จึงเป็นเพียงการถามว่าจะรายงานอย่างไร

ถ้าเราเพิ่มตัวจัดการ OnError จะไม่มีผลกระทบก่อนขั้นตอนที่ 5 แต่อาจส่งผลต่อวิธีการรายงานข้อผิดพลาด:

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

สูตร App.OnError กำหนดให้สร้างการติดตาม

เมื่อมีตัวจัดการ OnError นี้ จะไม่มีข้อผิดพลาดใดๆ จากมุมมองของผู้ใช้แอป แต่ข้อผิดพลาดจะถูกเพิ่มในการติดตามของการตรวจสอบ พร้อมแหล่งที่มาของข้อมูลข้อผิดพลาดจาก FirstError:

ตัวควบคุม แถบเลื่อน ย้ายไปที่ 0 ส่งผลให้มีข้อผิดพลาดการหารด้วยศูนย์ แต่ไม่มีแบนเนอร์ข้อผิดพลาด

หากเราต้องการให้แบนเนอร์ข้อผิดพลาดเริ่มต้นเดียวกันแสดงเพิ่มเติมจากการติดตาม เราสามารถเรียกใช้ข้อผิดพลาดอีกครั้งด้วยฟังก์ชัน Error หลังการเรียก Trace เรียกเช่นเดียวกับที่ทำหาก Trace ไม่อยู่ที่นั่น:

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

คุณสมบัติ OnStart

หมายเหตุ

การใช้คุณสมบัติ OnStart อาจทำให้เกิดปัญหาด้านประสิทธิภาพเมื่อโหลดแอป เรากำลังดำเนินการสร้างทางเลือกสำหรับเหตุผลสองอันดับแรกสำหรับการใช้ property—แคชข้อมูลและการตั้งค่าตัวแปรส่วนกลาง เราได้สร้างทางเลือกอื่นสำหรับการกำหนดหน้าจอแรกที่จะแสดงด้วย Navigate คุณสมบัตินี้อาจถูกปิดใช้งานโดยค่าเริ่มต้นทั้งนี้ขึ้นอยู่กับบริบทของคุณ หากคุณไม่เห็นและต้องการใช้ ให้ตรวจสอบการตั้งค่าขั้นสูงของแอปเพื่อดูสวิตช์เพื่อเปิดใช้งาน คุณสมบัติ OnVisible ของหน้าจอสามารถใช้ได้ ตามค่าเริ่มต้น เมื่อเปิดใช้งานกฎ OnStart ที่ไม่มีการบล็อก จะอนุญาตให้ฟังก์ชัน OnStart ทำงานพร้อมกันกับกฎอื่นๆ ของแอป ดังนั้นหากตัวแปรที่อ้างอิงในกฎแอปอื่นๆ ได้รับการเริ่มต้นภายในฟังก์ชัน OnStart ตัวแปรเหล่านั้นอาจยังไม่ได้รับการเริ่มต้นอย่างสมบูรณ์ นอกจากนี้ มีความเป็นไปได้ที่หน้าจอสามารถแสดงผลและทำงานได้ก่อนที่ฟังก์ชัน Screen.OnVisible หรือ App.OnStart จะเสร็จสิ้นการทำงาน โดยเฉพาะอย่างยิ่งหากใช้เวลานานกว่าจะเสร็จสมบูรณ์

คุณสมบัติ OnStart จะทำงานเมื่อผู้ใช้เริ่มต้นแอป คุณสมบัตินี้มักใช้เพื่อทำงานต่อไปนี้:

  • ดึงและแคชข้อมูลลงในคอลเลกชันโดยใช้ฟังก์ชัน Collect
  • ตั้งค่าตัวแปรส่วนกลางโดยใช้ฟังก์ชัน Set

สูตรนี้จะถูกประเมินก่อนที่หน้าจอแรกจะปรากฏขึ้น ไม่มีการโหลดหน้าจอ ดังนั้นคุณจึงไม่สามารถตั้งค่าตัวแปรบริบทด้วยฟังก์ชัน UpdateContext อย่างไรก็ตาม คุณสามารถส่งผ่านตัวแปรบริบทด้วยฟังก์ชัน Navigate

หลังจากที่คุณเปลี่ยนคุณสมบัติ OnStart ทดสอบโดยวางเมาส์เหนือออบเจ็กต์ แอป ในบานหน้าต่าง มุมมองทรี เลือกจุดไข่ปลา (...) แล้วเลือก เรียกใช้ OnStart ต่างจากเมื่อโหลดแอปเป็นครั้งแรก คอลเลกชันและตัวแปรที่มีอยู่จะถูกตั้งค่าไว้แล้ว ในการเริ่มต้นด้วยคอลเลกชันว่าง ให้ใช้ฟังก์ชัน ClearCollect แทนฟังก์ชัน Collect

เมนูทางลัดรายการแอปสำหรับเรียกใช้ OnStart

หมายเหตุ

  • การใช้ฟังก์ชัน Navigate ในคุณสมบัติ OnStart เลิกใช้แล้ว แอปที่มีอยู่จะยังคงทำงานต่อไป ในช่วงเวลาจำกัด คุณยังสามารถเปิดใช้งานได้ในการตั้งค่าแอปได้ (พร้อมใช้งานภายใต้ เลิกใช้แล้ว) อย่างไรก็ตาม การใช้ นำทาง ในลักษณะนี้อาจนำไปสู่ความล่าช้าในการโหลดแอป เนื่องจากเป็นการบังคับให้ระบบทำการประเมิน OnStart ก่อนแสดงหน้าจอแรก ใช้คุณสมบัติ StartScreen แทนการคำนวณหน้าจอแรกที่แสดง
  • สวิตช์เลิกใช้งานจะถูกปิดสำหรับแอปที่สร้างก่อนเดือนมีนาคม 2021 ที่คุณเพิ่ม Navigate เป็น OnStart ระหว่างเดือนมีนาคม 2021 ถึงปัจจุบัน เมื่อคุณแก้ไขแอปดังกล่าวใน Power Apps Studio คุณอาจเห็นข้อผิดพลาด เปิดสวิตช์ที่เลิกใช้แล้วเพื่อล้างข้อผิดพลาดนี้

คุณสมบัติ StartScreen

คุณสมบัติ StartScreen กำหนดว่าจะแสดงหน้าจอใดก่อน ซึ่งจะมีการประเมินหนึ่งครั้งเมื่อโหลดแอปและส่งคืนออบเจ็กต์หน้าจอที่จะแสดง โดยค่าเริ่มต้น คุณสมบัตินี้จะว่างเปล่า และหน้าจอแรกในมุมมองทรีของสตูดิโอจะแสดงก่อน

StartScreen เป็นคุณสมบัติโฟลว์ของข้อมูลที่ไม่สามารถมีฟังก์ชันลักษณะการทำงานได้ ฟังก์ชันกระแสข้อมูลทั้งหมดพร้อมใช้งาน ใช้ฟังก์ชันและสัญญาณเหล่านี้โดยเฉพาะเพื่อกำหนดว่าจะแสดงหน้าจอใดก่อน:

  • ฟังก์ชัน Param เพื่ออ่านค่าพารามิเตอร์ที่ใช้ในการเริ่มแอป
  • ฟังก์ชัน User เพื่ออ่านข้อมูลเกี่ยวกับผู้ใช้ปัจจุบัน
  • LookUpFilterCountRowsMax และฟังก์ชันอื่นๆ ที่อ่านจากแหล่งข้อมูล
  • API ใดๆ ที่เรียกใช้ผ่านตัวเชื่อมต่อ แต่ระวังว่าจะส่งกลับคืนอย่างรวดเร็ว
  • สัญญาณ เช่น การเชื่อมต่อเข็มทิศ และ แอป

หมายเหตุ

ตัวแปรและคอลเลกชันส่วนกลาง รวมถึงตัวแปรที่สร้างขึ้นใน OnStart ไม่พร้อมใช้งานใน StartScreen สูตรที่มีชื่อพร้อมใช้งานและมักเป็นทางเลือกที่ดีกว่าสำหรับการนำสูตรกลับมาใช้ใหม่ทั่วทั้งแอป

ถ้า StartScreen ส่งคืนข้อผิดพลาด หน้าจอแรกในมุมมองทรีของสตูดิโอจะแสดงเหมือนว่า StartScreen ไม่ได้รับการตั้งค่า ใช้ฟังก์ชัน IfError ตรวจจับข้อผิดพลาดและเปลี่ยนเส้นทางไปยังหน้าจอข้อผิดพลาดที่เหมาะสม

หลังจากที่เปลี่ยน StartScreen ในสตูดิโอ ทดสอบโดยวางเมาส์เหนือออบเจ็กต์ แอป ในบานหน้าต่าง มุมมองทรี เลือกจุดไข่ปลา (...) แล้วเลือก นำทางไปยัง StartScreen หน้าจอจะเปลี่ยนเหมือนว่าเพิ่งโหลดแอป

นำทางไปยัง StartScreen

ตัวอย่าง

Screen9

แสดงว่า Screen9 ควรแสดงก่อนทุกครั้งที่แอปเริ่มทำงาน

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

ตรวจสอบว่าผู้ใช้ตั้งค่าพารามิเตอร์ "โหมดผู้ดูแลระบบ" ไว้หรือไม่ และใช้เพื่อตัดสินใจว่าควรแสดง 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 ส่งคืนเป็นข้อความ รูปแบบของข้อความอาจมีการเปลี่ยนแปลงเมื่อเวลาผ่านไป และควรถือเป็นภาพรวม เพื่อหลีกเลี่ยงการแยกแต่ละส่วน