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

ใช้กับ: แอป Canvas

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

Description

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

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

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

บทความนี้ครอบคลุมคุณสมบัติออบเจ็กต์ ของแอป ต่อไปนี้:

  • ActiveScreen – หน้าจอที่แสดงอยู่ในปัจจุบัน
  • BackEnabled – วิธีที่แอปตอบสนองรูปแบบท่าทางย้อนกลับของอุปกรณ์
  • ยืนยันส่งออกและยืนยัน ExitMessage – เตือนผู้ใช้ก่อนที่จะปิดแอป
  • สตริงการเชื่อมต่อ – ตั้งค่าการบันทึกข้อมูลเชิงลึกของแอปพลิเคชัน
  • สูตร – กําหนดสูตรที่ตั้งชื่อ ฟังก์ชันที่ผู้ใช้กําหนดเอง และชนิดที่ผู้ใช้กําหนดเอง
  • OnError – จัดการข้อผิดพลาดทั่วโลก
  • OnStart – เรียกใช้ตรรกะเมื่อเริ่มต้นแอป
  • StartScreen – ตั้งค่าหน้าจอที่แสดงเป็นอันดับแรกเมื่อโหลดแอป
  • StudioVersion – ส่งกลับเวอร์ชัน Power Apps Studio ที่เผยแพร่แอป

คุณสมบัติ ActiveScreen

คุณสมบัติ ActiveScreen จะระบุหน้าจอที่แสดงอยู่ในปัจจุบัน

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

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

คุณสมบัติ BackEnabled

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

คุณสมบัติ ConfirmExit

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

Note

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

ConfirmExit

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

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

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

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

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

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

ConfirmExitMessage

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

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

ในเบราว์เซอร์ กล่องโต้ตอบการยืนยันสามารถแสดงข้อความทั่วไปจากเบราว์เซอร์ได้

ตัวอย่าง

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

    AccountForm.Unsaved Or ContactForm.Unsaved
    

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

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

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

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

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

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

คุณสมบัติสตริงการเชื่อมต่อ

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

วิธีตั้งค่า สายอักขระการเชื่อมต่อ:

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

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

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

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

สูตรที่มีชื่อ

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

ใน 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

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

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

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

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

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

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

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 = ;

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

คุณต้องพิมพ์แต่ละพารามิเตอร์และผลลัพธ์จากฟังก์ชันที่ผู้ใช้กําหนดเอง ในตัวอย่างSelectedGenre: Textนี้ กําหนดพารามิเตอร์แรกให้กับฟังก์ชันให้เป็นชนิด ข้อความ และSelectedGenreคือชื่อของพารามิเตอร์ที่ใช้ในเนื้อความสําหรับการดําเนินการตัวกรอง ดู ชนิดข้อมูล สำหรับชื่อชนิดที่รองรับ ฟังก์ชัน 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 – จำเป็น ชื่อของฟังก์ชันที่ผู้ใช้กําหนดเอง
  • ParameterNames – ไม่บังคับ ชื่อของพารามิเตอร์ฟังก์ชัน
  • ParameterType(s) – ไม่บังคับ ชื่อของชนิด ไม่ว่าจะเป็น ชื่อชนิดข้อมูล ในตัว ชื่อแหล่งข้อมูล หรือชนิดที่กำหนดด้วยฟังก์ชัน Type
  • ReturnType – จำเป็น ชนิดของค่าที่ส่งกลับจากฟังก์ชัน ใช้ Void หากฟังก์ชันไม่ส่งคืนค่า
  • สูตร – จำเป็น สูตรที่คำนวณค่าของฟังก์ชันตามพารามิเตอร์

การดำเนินการจะไม่สิ้นสุดเมื่อพบข้อผิดพลาด เช่นเดียวกับสูตร Power Fx ทั้งหมด หลังจากฟังก์ชันข้อผิดพลาดถูกเรียก ฟังก์ชัน If จะป้องกันไม่ให้การเปลี่ยนแปลงการประหยัดและการใช้จ่ายเกิดขึ้น นอกจากนี้ยังสามารถใช้ฟังก์ชัน 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 ถูกเรียกใช้ ข้อผิดพลาดเกิดขึ้นแล้ว และได้รับการประมวลผลแล้วผ่านการคํานวณสูตร เช่น IfErrorOnError ควบคุมการรายงานข้อผิดพลาดเท่านั้น

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

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

ตัวอย่าง

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

Label1.Text = 1/Slider1.Value

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

ค่าเริ่มต้นแถบเลื่อนเป็น 50 ถ้าคุณเลื่อนแถบเลื่อนเป็น 0 Label1 จะไม่แสดงค่า และแบนเนอร์ข้อผิดพลาดจะปรากฏขึ้น:

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

มาดูกันว่าเกิดอะไรขึ้นในรายละเอียด:

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

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

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

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

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

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

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

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

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

คุณสมบัติ OnStart

Note

การใช้คุณสมบัติ OnStart อาจทําให้เกิดปัญหาด้านประสิทธิภาพการทํางานเมื่อโหลดแอป พิจารณาทางเลือกเหล่านี้ก่อนที่จะเพิ่มตรรกะใน OnStart:

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

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

เมื่อเปิดใช้งานกฎ OnStart ที่ไม่บล็อก (ค่าเริ่มต้น) OnStart จะทํางานในเวลาเดียวกันกับกฎของแอปอื่น ๆ เป็นผลให้:

  • ตัวแปรที่มีการเตรียมใช้งานใน OnStart อาจไม่ได้รับการเตรียมใช้งานอย่างสมบูรณ์เมื่อกฎแอปอื่น ๆ อ่านตัวแปรเหล่านั้น
  • หน้าจอสามารถแสดงและโต้ตอบได้ก่อนที่ App.OnStart หรือ Screen.OnVisible จะทํางานเสร็จสิ้น โดยเฉพาะอย่างยิ่งถ้าฟังก์ชันเหล่านั้นใช้เวลานาน

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

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

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

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

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

Note

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

คุณสมบัติ StartScreen

คุณสมบัติ StartScreen จะกําหนดหน้าจอที่จะแสดงเป็นอันดับแรก Power Apps ประเมินคุณสมบัตินี้ทันทีที่แอปโหลด และส่งกลับวัตถุหน้าจอที่จะแสดง ตามค่าเริ่มต้น คุณสมบัตินี้จะว่างเปล่า และหน้าจอแรกในมุมมอง Studio Tree จะแสดงเป็นอันดับแรก

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

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

Note

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

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

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

นำทางไปยัง StartScreen

ตัวอย่าง

Screen9

Screen9 แสดงก่อนเมื่อใดก็ตามที่แอปเริ่มต้น

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

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