สวัสดีครับ สำหรับบทความนี้จะเป็นบทความเกี่ยวกับ Technical ล้วน ๆ ครับ เป็นเทคนิคเล็ก ๆ น้อย ๆ ในการแสดง (show) หรือ ซ่อน (Hide) บางฟิลด์ซึ่งอาจจะไม่จำเป็นสำหรับบาง User
ซึ่งช่วยให้โปรแกรมไม่เกิดความซับซ้อน (Complexibility) จนมากกว่าเกินไป อย่างที่รู้กันว่าโปรแกรม Dynamics 365 Business Central นั่นเป็นโปรแกรม ERP ประเภทหนึ่ง ดังนั้นไม่แปลกที่จะมี Menu แล้ว Setup มากมาย ยิ่งสามารถ Implement Feature เข้าไปให้กับตัวโปรแกรมได้แล้ว ยิ่งเพิ่มความซับซ้อนเข้าไปใหญ่
Business Value
การเขียนโปรแกรมเพื่ออำนวยความสะดวกให้กับผู้ใช้งาน เพื่อไม่ให้มีข้อมูลต่าง ๆ ในหน้าจอจนมากเกินไปก็อาจจะเป็นการพัฒนา User Friendly Interface ให้กับผู้ใช้งานได้
จากรูปด้านบนนี้จะเห็นว่า ผมได้เพิ่มฟิลด์เข้ามาในหน้าจอ Sales & Receivables Setup
แน่นอนว่าผมได้สร้าง AL Extension เล็ก ๆ ขึ้นมาหนึ่งตัว และทำการ extend ให้กับ Sales & Receivables Setup ทั้ง Table และ Page
เอาละมาดูวิธีการทำกันดีกว่า
บทความที่คุณอาจสนใจ
• ขั้นตอนการติดตั้ง AL Language บน Visual Studio Code สำหรับ Microsoft Dynamics 365 Business Central
• เริ่มต้นสร้าง Extension แรกบน MS Dynamics 365 BC ตอนที่ 1 – New Table
Programming
อันดับแรกเราก็จะ extend เทเบิ้ล Sales & Receivables Setup แล้วเพิ่มฟิลด์ตามรูปด้านล่าง
เมื่อได้ฟิลด์ครบแล้วต่อไปก็จะเป็นการนำฟิลด์ไปแสดงบน Sales & Receivables Setup page โดยใช้ Page Extension
ในอันดับแรกเราก็จะสร้าง Page Extension ที่มีโครงเป็นฟิลด์ที่เราเพิ่มเข้ามาก่อน
ขั้นต่อไปเราจะเขียนโค้ดเพื่อควบคุมการแสดง และ ซ่อน ของฟิลด์ Item 1, Item 2, Item 3 โดยเราจะสร้างตัวแปรที่มีชื่อว่า isVisible ขึ้นมาหนึ่งตัว และเอาไปใส่ใน Visible Property ของ group ที่ชื่อว่า “Hide Group”
หมายเหตุ: อย่าลืมใส่ InDataSet ตอนที่สร้างตัวแปร เพราะถ้าหากไม่ใส่ละก็ การทำงานของฟังก์ชั่นนี้ในหน้าจอมันก็จะเกิดอาการเพี้ยน ๆ
ขั้นต่อไปก็เป็นการเขียนโค้ดเพื่อให้เกิดการทำงานเมื่อเกิด trigger ต่าง ๆ ถูกทำงาน
โดยเมื่อมีการเปิดหน้าจอขึ้นมาจะเซ็ตให้ isVisible เป็น true และเมื่อมีการคลิกที่ “Click to Hide” ค่า isVisible จะเป็น false
บทความที่คุณอาจสนใจ
• วิธีใช้งาน และวัตถุประสงค์ของหน้าจอใน Sales / Purchase Order Processing
• คู่มือใช้งาน Dynamics 365 Business Central – Sales Module: ตอนที่ 1 สร้าง Customer
เสร็จแล้วก็ Install และ Publish โดยการกดปุ่ม Ctrl + F5 ก็เป็นอันเรียบร้อยครับ
Testing
เสร็จแล้วครับกับทริคเล็ก ๆ ที่ช่วยซ่อนฟิลด์ที่อาจจะไม่จำเป็นเพื่อไม่ให้รกตาผู้ใช้งาน แล้วเจอกันใหม่ในบทความหน้าครับ
Source Code
Tab-Ext50111.ExtSalesAndReceivableSetup.al
tableextension 50111 "Ext. Sales & Receivables Setup" extends "Sales & Receivables Setup"
{
fields
{
field(50000; "Click To Hide"; Boolean)
{
DataClassification = ToBeClassified;
}
field(50001; "Item 1"; Text[30])
{
DataClassification = ToBeClassified;
}
field(50002; "Item 2"; Text[30])
{
DataClassification = ToBeClassified;
}
field(50003; "Item 3"; Text[30])
{
DataClassification = ToBeClassified;
}
}
}
Pag-Ext50111.ExtSalesAndReceivableSetup.al
pageextension 50111 "Ext. Sales & Receivable Setup" extends "Sales & Receivables Setup"
{
layout
{
addlast(General)
{
field("Click To Hide"; "Click To Hide")
{
ApplicationArea = All;
trigger OnValidate()
begin
if "Click To Hide" then
isVisible := false
else
isVisible := true;
end;
}
group("Hide Group")
{
ShowCaption = false;
Visible = isVisible;
field("Item 1"; "Item 1")
{
ApplicationArea = All;
}
field("Item 2"; "Item 2")
{
ApplicationArea = All;
}
field("Item 3"; "Item 3")
{
ApplicationArea = All;
}
}
}
}
trigger OnOpenPage()
begin
isVisible := true;
end;
var
[InDataSet]
isVisible: Boolean;
}